loneoceans labs | Dual Channel MIDI DRSSTC Controller (temporary placeholder page)

Dual Channel MIDI DRSSTC Controller (New in stock!)


The Dual Channel MIDI Controller is my Generation 2, no-frills yet full featured Tesla Coil musical controller designed for high performance DRSSTCs.

It interfaces perfectly with the UD2.7 Tesla Coil driver. The MIDI controller supports both standalone and MIDI operation, with a dual channel MIDI output for control of two different Tesla Coils independently (4 available outputs in total). Each channel also supports a full host of MIDI controls including velocity, pitch bend, volume, and two-tone polyphone per channel for a total of 4 tone polyphony when operating two coils!

In addition, the board offers a standard interrupter controller mode (individually toggle-able for each output), and is designed to be simple and straightforward to use. I developed this controller a while back for my own coils and have used this extensively over the past few years across a variety of coil sizes, platforms, and it has proven to be a robust and reliable controller. This controller is now available for sale due to very popular demand.

The Dual Channel MIDI Controller is designed primarily for optical output and fiber-optic interface with the coil, but can also interface directly with most DRSSTC via a 5V enable signal. This controller comes with the following features:

This controller has been tested extensively on small 800kHz DRSSTCs to large 20kHz DRSSTCs with excellent results, and have been used in many coils around the world to date!




This kit is aimed at the advanced coiler looking for a simple but powerful controller for their DRSSTC. He/she should be experienced enough to debug the controller and interface it appropriately with the coil. The intended operation of the controller is to interface with the coil driver (such as the UD2.7) via a fiber-optic link of your choice. This provides both electrical isolation for safety, as well as noise immunity in the high EMI environment of a Tesla Coil.

What is Included

The interrupter consists of 1x Populated, Soldered and Programmed Dual Channel MIDI Controller v1.0 as shown below, flashed with the newest stable firmware. This controller without the Add-on Pack does not include the MIDI socket. Note that the PCB colour depends on popular requests that I receive and can range from green, to red, blue etc. Check before you place an order. MIDI2 controllers will come packaged in an ESD-proof bag. Please take care when unpacking since microcontrollers are on board and can be easily damaged via ESD.

Add-on Pack

The add-on pack contains the basic and necessary components to get you started to assembling your controller, and as shown in the photo above. I will be selling this add-on pack at essentially cost price for your convenience. If this is not available, the part numbers are also provided. Feel free to order at your favourite electronics supplier such as Digikey or Mouser, or replace with the component of your choice:

  1. 1x 5-pin DIN Through-hole MIDI socket - SDS-50J
  2. 1x 9V Battery Holder with Wire - 12BH610-GR
  3. 3x Switches (Power, 2x MIDI / Fixed Select) - 100SP1T1B1M1QEH
  4. 4x 50kR Potentiometers (2x Freq, 2x Pulse Width) - P160KN2 0QC17B50K
  5. 2x Momentary ON Push-button Switches - R13-24A-05-BR
  6. 3x 5mm LEDs (Amber: Power, 2x Green: Channel Indicators) - C503B-ACN-CY0Z0252-030, C503B-GCN-CY0C0791

Items Not Provided

You need to provide these items yourself to complete the controller, which will differ for different users:



All boards come populated as show in the photographs above, as well as microcontrollers programmed with the latest stable firmware.

Dual Channel MIDI Controller (Assembled and Programmed, Red Soldermask) with NO add-on pack - $65 USD (Feb 2017 - In Stock, while Stocks Last!)
Dual Channel controller Add-on-Pack (sold at cost) - $20 USD (Sold Out)

Controller + Add-on Pack Combo - $82.50 USD (Out of Stock)

ST fiber transmitters may be available upon request for $25 a pair due to bulk pricing (usual $16+ ea.)
Note that MIDI 5-pin Input Sockets do not come with the controller (only included with the add-on pack)

Latest firmware revision: V1.4 (Most stable version tested since end-2014) - Valid as of Feb 2017

Shipping and handling for local US orders starts at $8.00. Will ship internationally. All boards are programmed and verified working before shipment. However, the buyer accepts all risk and consequences in operating the controller with the coil and will be fully responsible for self-testing and operating the controller in the intended operating coil system, and responsible for ensuring that the controller is compatible with the coil system.

Contact loneoceans [at] g mail [dot] com for enquiries and orders.

Using the Controller

Putting It Together

This controller is designed for the advanced coiler so you should be able to troubleshoot the controller yourself and I will be unable to provide any technical assistance since I get many mails every day and it is impossible for me to go through all of them. That said, all controllers are tested working and should be very straightforward to put together.



The following are examples of how I assembled one controller together. The controller was assembled using just one of the outputs per channel (the other not connected), with a momentary push-button ON for each channel, and two potentiometers per channel for pulse-width adjustment. The push-button is connected in series with the output to the fiber transmitter, which acts as a safety switch - i.e. the user needs to hold down the button at all times for signal to be sent to the coil.

Note that this uses a slightly earlier prototype version of the board with black soldermask. The new one is slightly smaller and improves on the layout, but functionality remains identical. The compact size of the controller allows for mounting into very small boxes.


Max Pulse-Width Adjustment

There are two small pulse-width adjustment trimmer resistors on the board for each channel, and two tap points (TP1/2). This was designed specifically as a safety feature for your coil to limit the maximum pulse width. This trimmer can be adjusted as a maximum pulse-width limit for your coil-driver system. Pulse-width limits increment in 45us using the equation below. The desired Pulse Width Limit (increments of 45us) can be set by adjusting the potentiometer value using the table below and a voltmeter, and measuring the voltage on the tap point (TP) beside each trimmer resistor.

Just as the the MIDI/fixed modes are read by the microcontroller upon start-up, the max pulse width adjustment is also similarly read at start-up and cannot be changed on the fly. A simple power cycle is required to change the pulse width limit. I recommend verifying the max pulse-width with an oscilloscope after setting.

Max Pulse Width (us) = Floor[(TP_volts+0.04) x 1.59375] x 45us

Desired Max PW (us) 10us 45us 90us 135us 180us 225us 270us 315us 360us
Recommended TP
Voltage to set
0V 0.90V 1.53V 2.16V 2.80V 3.43V 4.06V 4.70V 5V

Testing the Controller

The following steps should get you started with making sure the controller works:

Fixed Mode

In fixed mode, the controller will output a range of pulses with frequency from about 100 to 300 BPS, with a pulse width ranging from 10us, to the max-pulse width configured by the user via the Max-Pulse-Width trimmer. Lets say the user has set TP1 and TP2 to 2.2V for a max PW limit of 135us.

  1. Ensure the MIDI / Fixed switches are flipped to Fixed Mode
  2. Turn on the Controller
  3. The Transmit LEDs should light up - they are in fact flashing at the pulse frequency and with the on-time controlled by the PW and F potentiometers
  4. Increasing the PW pot from 0V to 5V should cause the LED to go from quite dim to very bright
  5. Likewise increasing the F pot from 0V to 5V should cause the LED to go from bright to brighter, but the difference is more subtle than PW
  6. This can (and should) be verified with an oscilloscope
  7. Without an oscilloscope, a good way to test is to shake the controller / LED. The LED should form what appears to be a dotted line, due to persistence of vision
  8. The ouputs for TX1a/TX1b will mirror LED1. Likewise for Channel 2
  9. Repeat for Channel 2.

The following table shows how the switches and potentiometers affect operation of the controller:

Potentiometer / Switch 0V (-) 5V (+)
Pulse Width Pot 10us Max (set by trimmer)
Frequency Pot ~300 Hz ~100 Hz
MIDI / Fixed Switch Fixed Mode MIDI Mode


The controller reads the first Channel of each MIDI file and outputs it to Channel 1. Likewise, it reads the 2nd Channel of each MIDI file and outputs it to Channel 2. As a result, MIDI files / MIDI instruments must be configured by the user appropriately to play the correct tunes on the correct channels. The controller ignores all channel events from 3 to 16.

The controller specifically reads the following events during playback:

In the noisy environment of an operating coil, MIDI cables and USB MIDI Cables including power cables can cause MIDI devices to lock up. In such events, it is possible for an incorrect note-off to be sent, or simply not sent to the controller. This may cause the controller to appear 'locked on', whereby the only fix is to send a note off event or a power cycle.

Standard Tesla Coil EMI shielding principles apply!

The controller reads a standard MIDI signal such as from a musical keyboard (which usually outputs only to the first channel - and therefore only to one coil unless a separate MIDI mapper is used - for example some keyboards maybe able to map each alternate key to the first two channels and so on). Another method is to play a MIDI file on the computer and use a simple USB to MIDI cable widely available on ebay for about $5 each.

  1. Ensure the MIDI / Fixed switches are flipped to MIDI mode
  2. Turn on the controller - the transmit LEDs should NOT light up
  3. Connect your MIDI source to the 5-pin MIDI jack
  4. Play some MIDI
  5. The Transmit LEDs should light up corresponding to the notes when played
  6. Meanwhile, the PW pot can be adjusted for power output. Note that the controller automatically caps and adjusts the Duty Cycle as controlled via this potentiometer, so polyphony notes may cause the controller to reduce the ON times for each pulse to prevent overheating of the coil

For testing with a computer, one free software is the venerable MIDI Editor. Simply load a MIDI file, ensure that the track you wish to play is on Channel 1 or 2, and set the output from the internal synth to USB output (for using with a USB-MIDI cable).

For testing via a computer as a MIDI device, I have prepared a double channel MIDI file: Download here.

The first Channel (Channel 0) plays the melody and the second channel (Channel 1) plays the harmony of this classical Bach piece. Do not confuse tracks with channels! These should correspond to Channel 1 and Channel 2 of the MIDI controller respectively. Remember to ensure that the MIDI is set to output correctly (go to Midi >> Settings >> and check the USB device as MIDI Output) - the controller TX leds should light up in sync with the flashing LED of the USB-MIDI adaptor as well.



Boards come fully populated and programmed and ready to use. However, controllers can be programmed by the user in the event of future firmware updates, via the AVR ISP header using the AVR ISP ii programmer or similar.

- Programmable via the commonly available AVR ISP mk ii and Atmel Studio 7 or later (free download from Atmel.com)
- Open Atmel Studio and select Tools > Device Programming
- Ensure that the 6-pin header is plugged in and power applied to the micro (green light on AVR ISP will turn on)
- Select the Device to be ATmega328P or 328PB, depending on the IC that is supplied on your board
- When you click Read you should see ~5V as the target voltage
- Ensure ISP clock is at 125kHz
- For Fuses, ensure sure that
    > CKDIV8 is not selected
    > SUT_CKSEL is set to EXTFSXTAL_16KCK_14CK_4MS1
    > Alternatively, program Extended, High and Low fuses as follows respectively: 0xF7, 0xD9, 0xE7
    > (Note that these fuses are F7,D9 and 62 by default with the 328PB device ID should be 0x1E9516)
- Program fuses, then program desired .hex file in the Memories tab



This is the schematic for the interrupter.

All controllers come with the latest most stable firmware pre-programmed.


Controller in Action

Below are coils (both single and double) coils running with this controller:




See www.loneoceans.com/labs/ for more information.

Back to loneoceans labs. (Updated Mar 2017)