What's up

Kontakt Controller 




I wanted a MIDI controller that was small and not part of a keyboard. Often I'll want to control effects and certain instruments where keyboards are NOT needed and get in the way. It's named Kontakt Controller as its main focus was controlling my gamut of Kontakt Instruments. It's made up of one joystick, eight rotary encoders and eight momentary buttons.

The core of the unit is a Arduino Pro Micro or Leonardo. I chose this Arduino because of its Atmega24u8 which allows the use of the USB connector as a MIDI port at the same time as a Serial monitor. This avoids my standard approach of having to add a MIDI interface board. Due to this connectivity to a PC, the small amount of power I need can come from the USB host it is connected to, thus avoiding a power source in the form of an external plug pack or internal battery that would need a reasonable amount of added hardware.

The eight buttons are polled using a CD4021 chip. This is a 8 stage shift register which essentially means I can check the state of eight buttons with only 5 connections, two of which are power.

Front View - shows the Joystick in the middle, two sets of four rotary encoders either side of the joystick and eight momentary buttons along the bottom.

The rotary encoders use a new (to me) micro board I have found. It's called a DuPPa I2C Encode Mini. It is a small board where you can attach a rotary encoder to an I2C bus. They are chainable. The boards contain a small MCU, ATtiny402, that manage all the reading of the rotary encoder and send this data down the I2C buss. You can have up to 127 of them in the chain but I limited myself to eight. I am only using the rotary data of the encoder and not the button for this project. These little boards mount onto the rear of the encoder and make life easy and are reasonably priced. Check out the page as this board does so much more than I use.


The case was one of my challenges as I wanted to have a slanting face. This made use of the 3D router and a circular saw. Not the ideal setup but it was all I had at my disposal. The wooden part is made from plantation Tasmanian Oak and the top and base are black acrylic.

Rear view of the Kontakt Controller showing the USB-B connector

At this stage the controls are assigned to the User MIDI CCs from 32 upwards except the joystick which is specially assigned to CC 1 which is the Modulation Wheel and CC 11. This is for a specific plugin that can't have a couple of parameters assigned to anything else.

I can see some software changes in the future whereby I have changeable sets of CCs. I have already put in the basics for this where I would have a power cycle and the pressing of different yellow buttons to invoke a different set of CCs. 

The LED has no function at this time so for the time being I have it flashing to indicate that the MCU is working.

The front panel was designed in Freehand and setup in Cut2D for routing. The rear panel I just cut by eye given it didn't have any specific holes at the time. 

FloriVoxTron - It's finished ! 

What is the FloriVoxTron ?

The FloriVoxTron running wild in the paddock

Basically, the FloriVoxTron is a sample playback keyboard. It has 16 note polyphony. At its heart is the Robertsonics Tsunami sample player module. This is followed by a familiar format of a subtractive synthesiser, VCFs, VCAs with lots of LFOs, Valve Overdrive and effects units.

If you'd prefer to see a video instead of reading - https://www.youtube.com/watch?v=PYeXDhLF1S8

What's with that name ?

The name FloriVoxTron is derived from another Amongst Projects project. The Florian Vox was a project that was to be a MIDI controlled speech synthesizer with a nod to Florian Schneider of Kraftwerk. The hardware was pretty straight forward as was the programming of the speech patterns but the one major floor was that it was not very fast in responding to commands. This is how the speech chip was made. The intended use of the Florian Vox was for my Kraftwerk cover band at the time and was to be controlled live. Alas the Florian Vox was shelved along with the band. The FloriVoxTron has several sample sets derived from the speech synth and one of the early intentions of the FloriVoxTron was to be a vocal sample player.

Some more in-depth information please !

Working from the source. We have four voice layers. These are named in German (of course), voice 1 being Eins followed by Drei, Zwei and Vier. Being a sample player based sound source, each of the these voices can access any of the 120 sample sets. Each sample set is a set of samples which covers the 36 note keyboard. These voices each contain a VCA to control their own level. The first three voices are mixed together where they pass through a VCF and onto a Valve Overdrive. The signal then goes to a master VCA and an effects module before joining the signal path of voice four and out of the unit. Voice four has a similar path to voices one to three with its own VCF and VCA but no valve overdrive unit.

What makes this unit so different is that the unit is stereo from the start to the end. The samples are stereo, the VCAs are stereo, the VCFs are stereo, the valve overdrive is stereo and the effects are stereo. To top it off the Modulators are stereo as well.


The Modulators

Graphic of the Modulator Section

What I think makes the FloriVoxTron a rather unique instrument is its stereo signal path from the start. Though what makes this work to great effect are the Modulators. The FloriVoxTron contains many LFOs. Each Voice VCA has one, each VCF has two, one for the Cut-off Frequency and one for the Resonance, Pitch Control and the effects also have one each. These LFOs are all independent from each other. These are not your standard LFOs, I have called them Modulators because each LFO is in fact two LFOs.

The Controls of the LFO:-

  • Speed - most LFOs need a speed control. The FVT has the addition of a Speed Multiplier control which allows the Speed control to cover a greater speed range.
  • Waveforms - there are ten waveforms at the moment. They are pretty standard - Sine, Triangle, Square, Sawtooth, Ramp, Random and some not so basic ones - Rectified Sine, Chirp4, Quad Square and Quad Triangle. 
  • Pulse Width - controls the width of the Square wave pulse
  • Delay - is a one control envelope generator which can be used to delay the start of the LFOs output.
  • Rez - is a backwards Sample and Hold in that as the value is increased the less samples are taken of the LFO's waveform
  • Wave Delay - this is another way of doing a stereo LFO without the Pan LFO. It's a way of delaying the right output of the LFO. It's a percentage control from 0 to 100%.
  • Invert - of course there's a output waveform inverter
  • ADSR - each LFO also has its own ADSR of course - seemed like a no brainer to be honest
  • Xmod - Cross Modulation - this controls the amount of the LFO output that is used to control the Speed of the second LFO.
  • Cross modulation ADSR - this controls the amount of the ADSR signal used to control the second LFO speed and it has its own Invert control.

There are also controls relating to MIDI and Internal clock control so that Speed can be trigger and independently have the speed controlled or just retriggered. The ADSR can also be triggered from MIDI. All of these MIDI related controls have MIDI clock divisor values as well.

So the Pan LFO, as I call it. This is where the stereo starts to work. The Pan LFO applies its positive value to the Left output and the inverted signal to the Right output. Where I say output, I mean the main LFOs signal. The Pan LFO has all the same controls as the Main LFO except the cross modulation controls and wave delay. This makes for some quite wonderful effects when applied to both the voice VCAs and VCFs.

The hardware behind the Modulators is basically a STM32 chip, the blue bill variety, with an quad 8 bit DAC attached. So there's a small caveat in that the LFO waveforms are only 8 bit which does show its "ugly" head on a highly resonant VCF where stepping appears due to the lack of resolution. I may update this someday.

The Filters

Graphic of the Filter Section - you select between the filters by pressing the touch switch under the Filter LED which changes from Cyan for VCF-A to purple for VCF-B

The VCFs, also being stereo, use the CEM3340 VCF chip configured as an Elka Synthex filter. This schematic came from Electric Druid's wonderful article on Multimode filters. This great design allows for six different configurations - 24db LP, 6db BP, 12db BP, 12db HP plus 12db LP and a asymmetric bandpass; 18dB lowpass, combined with a 6dB highpass. 

The board design was a slightly modified version of Daniel Bachman's / XNOTOX design to accommodate my power supply and other connections. With the addition of an adjoining board I was able to have the Filter modes electronic switching controlled via a microprocessor.
VCF-A is made of four boards which can be seen on the left tower, VCF-B also uses four boards and can be seen on the right tower.

The VCAs
The FloriVoxTron has five stereo VCAs. Each of the four voices has a stereo VCA and there is a Master stereo VCA on the first three voices later down the line. These units are based around the SSM2164 VCA chip and the schematic is Mark Irwin's design. I designed the printed circuit board and got them made at Seeeds Studio along with most of the other boards in the FloriVoxTron. I do make my own boards using a 3D router but this is limited to single sided boards. When I need to do multiple boards of the same design I use Seeeds Studio.


The Valve Overdrive
Graphic of the Valve Overdrive section

Nothing overly complicated here. I'm using two 12AU7 valves in a standard low voltage configuration. There was a complicated stage of trying to control such a high gain beast with digital potentiometers but it works well though very noisy at such gain levels. It has Gain, Tone and a Diode distortion stage added for more variety. As mentioned this is only applied to the main signal path where voices 1 through 3 travel.

The Effects
Graphic of the Effects Section
There are two effects units which contain the Spin Effects FV-1 module. A wonderful beast with three controls for various parameters. The module allows for eight different effects algorithms. Both of the units contain the same effects given that they are on different signal paths.

The Keyboard
The keyboard is something I salvaged which has a simple diode matrix setup. I've used an Arduino MCU to map this and put out serial data pertaining to the note played. Nothing overly complicated here. The provision for velocity sensitivity is there but I have not implemented this further down the line.

Joystick
The X and Y parameters of the Joystick can be assigned to many of the different parameters of the FloriVoxTron. This assignment also includes a depth controls the percentage of the parameter affected. Below the joystick are three buttons with three LEDs. These are user assignable pre-sets for the joystick which allows the user to quickly change the joysticks destination without wading through the menu of the LCD.

Voices and their Play Modes

Graphic of the Voicing Section

One of the nice features of building your own instrument like this is you can put in any functions you want. How the sample sets are played and mixed was one area I wanted a few special things.

As mentioned before, the FloriVoxTron has four voices which can be assigned four different sample sets. But in fact I have taken this further. Within a patch, each four voices can have five different sample sets. This works simply with each press of a key, the sample set changes. It will only change the sample of the next note played and not any notes currently playing. This can be configured as a sequential process or randomly on the list provided.

Another voicing function which is more about VCAs associated with each voice is the different Play Modes. There are three modes - Stack, Crossfade and Rotor. In Stack mode you simply choose which voices you want to hear by selecting the sample set and the voice activation button. Crossfade mode makes use of the slider below the voice select buttons. Voices can be assigned to the Left or Right side of the fade so the user can manually fade between the left and right where you'll hear the selected sample sets. And finally the Rotor mode where another LFO spins around and cross fades between each of the active voices. This LFO also has a second LFO to give that lovely effect of one LFO controlling the speed of another.

The finally voice related function is the Stutter function. Only voice Eins uses this function due to a hardware limitation. Timers are used to start and stop the playing of a sample activated on the keyboard. As you add more notes via the keyboard the Stutter of the new note is not in sync with the previous. In addition the Scatter control will introduce a random time for the stop and starts of all notes being played. A feature of the voice activation buttons which enhances this process is when you hold a note on the keyboard and turn off the voice, the note is held without the use of the keyboard now so you can go onto playing another voice while this held voice happily plays in the background. The held function works independently on all voices.

The Sample Sets and the Tsunami Sample Player
The sample sets took quite a lot of time. Unlike a traditional sampler, the Tsunami Sample Player doesn't take one sample and transpose it across a keyboard, so for me to make the sample sets means creating a sample for each note. This is not a great problem as I wanted a more natural sound. Most of the sample sets I have used are unique samples per note anyway. The process of recording these samples from their origin was helped by an old program I had laying around named Chicken Systems Translator which I originally purchased for an old hardware sampler I had. This would make my life easy by playing back a range of notes and recording the audio to individual audio files. From here I would rename them to be placed in the appropriate location on the Tsunami.

The Tsunami uses a micro SD card to store the samples in 44.1khz 16bit stereo format and it can address 4096 of them. They are referenced by simply numbers of 1 to 4096. The Main MCU in the FloriVoxTron does all the work of transcribing the chosen sample set and played notes to the appropriate sample number on the Tsunami. This communication is done via one of the serial connections on the Arduino Mega2560 which is the Main MCU.

I won't go into great detail about the Tsunami as this can be gleaned from the Robertsonics web site here. 

One of the reasons I chose the approach of four difference voice audio paths is because the Tsunami allows for this with its audio outputs. It has eight audio outputs which can be configured as eight mono outputs or four stereo outputs.

A feature of my sample setup is that each of the four voices mentioned - Eins, Zwei, Drei and Vier, can have a one sample set allocated or it can up to five sets. These five sets can be arranged to play randomly on consecutive note presses or in ascending order. Meaning each time you press one note a different sample will play. This allows for some interesting effects especially in the case of say a choir where we have 5 different vowels being sung. As we press notes we get different vowels being sounded.


Hardware

The Front Panel
Front view of the FloriVoxTron

The front panel is made from 6mm black acrylic. As with many of my projects, I have routed the channels for the text which I have then filled with white acrylic paint. The LED bezels are opaque acrylic once again routed for their markings and filled with black acrylic paint. Behind the LED bezel is a shroud which concentrates the light from the LED through the bezel and limits the spread of the LED. 

Closeup of the front panel without the case

The knobs for the rotary encoders are three pieces of acrylic glued together, routed and polished to hide the joins in the acrylic. A shaft has also been cut out on the bottom side. The touch switches are actually drawing pins. This works just fine though they are a little fiddly. In another project where I have used touch switches, I used bolts and small magnets which are more sturdy but do have some contact issues. I have not found the perfect solution to making a durable touch switch contact but I do like using touch switches.

As far as the operation of the rotary encoders are concerned, they have several functions or modes. I have taken advantage of the switch that all the rotary encoders have to make the encoders multifunction. The front panel MCUs will tell the Main MCU several states of the rotary encoders. They will say when it is rotated, pressed, pressed and held and double clicked. I've taken advantage of this to place two functions on each rotary encoder with its current state reflecting in the LCD.


The Front Panel Section

Cross section of the front panel where the two layers of printed circuit board can be seen

The front panel is quite complex. Each of the sections laid out have two layers of printed circuit boards behind them. The control of the RGB LEDs comes from the MCU after it's received information from the Main MCU. The MCU also reads the touch switches and rotary encoders and passes this information back to the Main MCU. In some cases I have used two MCUs due to the amount of digital I/O pins needed. Most of the MCUs are Arduino Pro Minis of the 168 variety. In this instance I have used I2C to send data to and from the Main MCU. I2C works well between Arduinos.

Quad DAC Boards

The rear of the FloriVoxTron without its case. The foot controllers, MIDI, Power Input and Audio Outputs are clearly shown. The SD Cards containing the sample sets and patch data can be seen also.

As mentioned earlier these are boards which contain a STM32, blue pill, and a quad 8-bit DAC along with support components. They get their commands from the Main MCU via Serial. At the time the STM32 didn't have a very good I2C support so I decided on a protocol that was more appropriate which was the serial as we are not talking about high speed communications here. The output of these boards are used to control the various voltage controlled boards like the VCA and VCF boards. There are eleven Quad DAC boards in the FloriVoxTron.


The Main MCU
This is where all the various input and outputs originate and all control is coordinated. I decided on a Arduino Mega2560 primarily because of the multiple serial ports available. The keyboard interface outputs serial data, the Tsunami Sample Player receives and sends serial data, there's the MIDI port which is serial as well. The Main MCU has a Sd card interface where patch data stored along with sample set control data and of great importance, the parameter data. The FloriVoxTron has almost 500 parameters. The parameter data file on the SD card tells the Main MCU which Quad DAC board to send data based on the parameter being changed. Other data contained in the parameter data file is things like the format of how to display parameters on the LCD and if a parameter is editable via the LCD's menu. The parameter data file is quite large and an SD card seemed the fastest and most convenient format to use. I investigated EEPROM which I have used in other projects but this was much slower plus it had the disadvantage of not being able to easily update unlike an SD card which I can update on my PC. The parameter data file is created from a spreadsheet via a small program which compresses the data down in a format that is easy for the MCU to read.




Warlord - Guitar Effects 

The Warlord guitar pedal is a more robust version of my older project the UM-XN1. The original unit was more of a test bed for the Spin Semiconductor's FV-1 in the form of the SKRM-C8 module.

"The SKRM-C8 reverb and effects module line is an easy to integrate effects solution for your pedal, amp or other audio equipment. These modules are available pre-programmed and can be custom programmed for your product. Modules operate from 5V to 12V DC to ease integration into your design." - quote from the Experimental Noize site.

The SKRM-C8 like all of its sister modules has an EEPROM that can be easily reprogrammed with any DSP algorithm written for the FV-1 chip. There is a community of users and DSP writers that have created numerous algorithms for these modules and I have taken several to include in various projects in the past. My Therematron uses one of these modules for its effects.

The Warlord uses patches from SKRM-C8-eTap2 which was a project of has specific patches which emulate vintage tape echo machines and more as used by guitars like Hank B. Marvin of The Shadows.

So the main differences between the UM-XN1 and the Warlord are:-

1. Much sturdier case which includes foot switches for control of the effects.
2. LCD where custom patches can be stored and retrieved
3. Hi Gain stage for direct input from a guitar pickup
4. An Arduino Pro Mini is used to control the FV-1 chip and to store patches
5. It's orange !

This unit runs off an external dual 9v power supply.

What I gained from this project was some skills in spray painting cast aluminium cases to a point where the coating is very robust using quality spray paints from the Rust-Oleum brand.

Alas, the Echotapper project no longer exists but the wonderful designers over at Stanley Effects has created the Blue Nebula pedal which is based on the Echo tapper.


Spin Semiconductors have moved on from the FV-1 to their "bigger, brighter and faster", FXCore chip

FloriVoxTron - The end in sight 

 This project has been going for about 3 years now. It's a sample playback synth. 16 note polyphony split between a total of four different voices. This synth is stereo from the start. Each note is a independent sample which is stereo. There are two signal paths on this unit. The first three voices pass through individual stereo VCAs which each have a stereo. Each VCA has a dual LFO with multiple waveforms. The signal then passes through a valve overdrive unit and onto a stereo CEM3340 filter configured to a Elka Synthex. We then pass into a stereo effects unit and into the final mixer onto the output buss. The other voice has a duplicate path without the valve overdrive.

The heart of the unit is the Robertsonics Tsunami Wav Player.

This machine is littered with LFO / ADSR modulators. More information when I worked out how stuff there is.

Here's a picture which shows the quite large case which contains numerous MCUs etc.

Not the most flattering shot - more to come


Therematron v3 - the final ! 


The Therematron v3 at one with nature

The upgrade to the Therematron, done a few years back was a great extension to the already wonderful Music From Outer Space's Soundlab Mk2. My execution was hasty and rather messy but the really annoying problem was the bleed which affecteds the pitch of the VCOs that came from the LFO and ADSR.

I'd attempted to fix this pitch issue before by enhancing the power supply to be ultra-smooth but this proved fruitless. The issue was that the voltages coming in via the Coarse and Fine frequency controls on the panel were dirty with the signals of the LFO and ADSRs. I removed this incoming voltage and used my bench power supply to supply the power and the situation improved immensely.  I designed up a small power supply which delivered the required voltage. Thankfully I could use the incoming dual rail 12v for the rest of the unit and put in 9v regulators for this VCO power supply. It is very smooth now and makes the Therematron a more usable unit.

In reality this was just one of the issues. As mentioned I threw this upgrade together and used inferior preassembled cabling which was not of good quailty. I use dupont header cables in this unit, so I decided I needed buy some decent wire and make my own up.

Other issues included the layout of the PCBs within the case. The original design had the Soundlab PCB mounted to the base of the unit. This board has almost 100 single wire connections on it and the location is not easy to access. I decided to move this PCB to the rear of the case where it is now fully accessible.

The initial upgrade included a second VCF. My first attempt at a VCF was a very simple design that Ray Wilson (MFOS) had in his Analog Synthesizers book. This didn't work well so I decided on a different type of VCF, a Steiner VCF design from Yves Usson of YuSynth fame. This is nicely unpredictable and most usefully different from the Soundlabs SVF. I want to say here is that the original VCF board was still mounted inside the case as it was difficult to get it out. It's now out !

The second LFO, based around a digital potentiometer driven by an Arduino ProMini, was a little adhoc in its wiring and mounting. This has been greatly improved with the LED display and button now being directly connected to the LFO board as opposed to originally where I had a second ProMini sending data back and forth between the LFO board. This was not a reliable approach. Now the display board is simply a 74HC595 serial to parallel converter with a LED on each output. In addition to this hardware upgrade I also improved the LFO code so that the external Trigger In and Sync In controls work. They're not perfect. The Trigger In will listen for a pulse and restart the waveform with each pulse and the Sync Input will change the speed of the LFO based on the input voltage. The caveat with the Sync In is that I can't read negative voltages on the Arduino so it only reacts to positive voltage changes which is nicely unpredictable.

The original upgrade saw the removal of the Echo Rockit, the PT2399 based effects unit from MFOS. This didn't really do it for me as it was too lofi. No problem. I had good experience with the Experimental Noize FV-1 chips and I designed a unit around their SKRM modules. The signal flow out of the Soundlab module was to have a way of changing the order of what's next. I have the Steiner VCF and effects unit hard wired in but I wanted the ability of swapping their order. So I came up with something using switches which didn't really work in the end due to the complexity. One of the added features was a feedback control which took the effect signal of the effects unit back into the Steiner VCF. This didn't work at all. The upgrade for this section was based around removing the complicated switches and replacing them with a PCB which had four DPDT relays on it. This works really well. This makes the wiring simpler as well as I only have a couple of wires to the front panel to control the relays. Best of all the feedback control now works though you have to be careful.


The Therematron gets its name from the original design which had a Theremin in it. Big Fail. There was too much noise floating around inside the case for that to ever work. So the Theremin board was removed in the first upgrade but the front panel controls still existed. This "final" upgrade sees the Theremin controls removed and replaced with four new modules.

There are two Octave modules. These put out -4 to +4v volts for the VCOs. I often use the Therematron with an Arturia BSP sequence which outputs control voltages. This unit is setup to output 1v per octave control voltages. In use I found  that changing octaves on the Therematron was down to retuning which can't really be done in the middle of a performance whereas now I can simply switch up or down. This schematic I took from Elby Designs' Octave Transposer.

The other two identical modules are Lag Processors which allow me to slew any control voltage. This can be anything from smoothing a LFO waveform to creating Portamento on the pitch of a VCO. This design was based on the MFOS RC Lag processor.

I've checked all the functions and found a couple of mistakes but they were easy to fix and so far it works quite well. I also made a small modification to the Soundlab PCB which was a resistor on the VCA's Modulation input from the LFO. The signal level here was quite light on but now it will take the sound to almost nothing when the control is fully clock wise.

Amongst Projects 

I've decided to include the latest and archive blogs from Amongst Projects where my music electronics and filming gear is stored.

TMNSD - CV Arpeggiator 

TMNSD - The Final Unit !

The TMNSD is short for ? Actually I've totally forgotten what it's short for. Never mind. My friend Bernard asked me to build this unit for him to his needs for his modular synthesizers. This unit is three independent Control Voltage controllers each with a built in arpeggiator designed to control modular synthesizer systems Voltage Controlled Oscillators or any other voltage controlled input device.

The user can simply play single notes or use the arpeggiator to cycle through the chosen notes in a variety of patterns and also over a larger range of octaves. The arpeggiator has several Play Modes. There's Up, Down, Up/Down and Random. It also has a AsPlayed Off and On mode which means the notes will play in the order that they were selected. The Latch control will hold the notes on when first pressed and turn off when pressed again.

Each module has an external trigger input located on the left side of the unit. On the right hand side each module has CVA and CVB outputs. These are control voltages set at 1V per octave to control the VCOs (Voltage Controlled Oscillators) pitch. The outputs have an accurate range of 12 octaves. There are three trigger type outputs - Trig, Gate and Aux. The Trig outputs the trigger signal and naturally the Gate outputs a gate signal. The Aux output has several output options. The only link between the three units are an internal sync connection. They are synced to the previous module. By this I mean that module C will sync to B, B to A and A to C. This way most combinations can be achieved.

Top view of the completed TMNSD


The front panel controls consist of a potentiometer for controlling the arpeggiator speed when in independent mode. It also acts as an time offset control. More on this later. There are 12 touch sensors which represent the 12 notes of a chromatic octave which have 12 associated RGB LEDs and four function controls. These controls are FUNC which takes the unit through several setup screens. ARP which puts the module into arpeggiator play mode. LATCH which will latch the notes off and on and finally MODE which is another setup screen relating to the arpeggiator controls.

The FUNC key takes the unit through 3 different modes. When lit green the unit is in PLAY mode where notes can be selected. When RED the unit is in the INPUT and OUTPUTS setup where the clock source can be changed, what is output on CVB is changed along with what the Aux output will be outputting. During this mode the ARP SPEED potentiometer also changes to control the timing offset of the Trigger output which will range from 0% to about 90% offset to the next trigger. This also affects the Gate signal. When FUNC is BLUE the note keys represent a divisor of the clock speed whether internal or external. This starts from 1/1 up to 1/12 on the B note.

The other function is when the MODE key is GREEN. During this mode the notes have several different functions which include the play direction of the Arpeggiator, the octave range of the arpeggiator and also a transpose function which takes the arpeggiator down by up to 2 octaves.


The Hardware


Each module is made up of two PCBs. There's the CPU board and the Panel board. The CPU board contains an Arduino Pro Mini which controls a MCP4922 dual channel 12 bit digital to analogue converter via SPI. The two outputs of this converter are processed through an op amp to change the output voltage range of 0 to 5v to -6 to +6 volts. The opamps have 10 turn trimpots for tuning the output voltage offset and range to generate an accurate 1 volt per octave output. The trigger outputs are generated from 5v digital outputs on the Arduino which are buffered through a TL074 quad op amp. The trigger inputs are processed through a diode and transistor to clamp voltages over 5v as to protect the digital inputs on the Arduino. This schematic came from the wonderful Electro Druid web site. As can be seen below, the AMP trimpots from CVA and CVB have been removed. For this project I decided it would be easier to fix the feedback resistor of the op amp channels and use software to correct any error. I could have done similar with the Bias trimpots as well.

TMNSD CPU Board vD - note the capacitors across the resistors and the lack of AMP Trimpots


The front panel is made up of 16 daisy chained WS 2182 RGB LEDs which I've used before and have down pat though I have to admit that I wrongly used two different purchases of LEDs to find that the second batch had a different LED order. Thankfully these are all together on separate modules. The touch sensors were using a new discovery, the BS818 chip which is an eight channel capacitive touch sensor chip. I've previously used TTP-223 chips which are single touch switches but I needed to find a multi-switch version for this project. The potentiometer is also mounted to the front panel board for ease of construction. The touch sensors themselves are neodymium magnets. I'd previously used drawing pins for touch sensors but they needed complicated electrical connections in the way of single sockets.

Front Panel Board - front side - populated


The boards were made by Seeeds Studio in China and they are very good quality. I've had 10 made of the CPU boards and 5 of the front panel boards. Due to the numbers I decided to make the CPU boards a little more generic. The board has provision for MIDI and via the serial port which includes a jumper location to change between the programming port and the MIDI port and an I2C for a LCD screen. I have a number of previously made MIDI interface boards which could be used. This way the module could potentially be used to create an LFO module or any other number of music related projects. The I2C connection could be used to connect another Arduino which in turn would have provision for multiple potentiometers or data encoders. The options are there.

Close up of a LED bezel shows the countersinks for the magnet and bolt
The front panel of the case is a 3d routed piece of 4.5mm black acrylic that contains lots of opaque white acrylic inserts which are the combination touch sensor and LED. These bezels are countersunk to 2mm to accommodate the magnets. Underneath the magnets is a flat head bolt mounted to the front panel PCB to give the electrical connection to the touch sensor pad. The magnets locks themselves to the bolt by magnetism. These work quite well but on some of bezels the countersunk hole for the bolts were deeper than the bolt hence there was no electrical connection. I found that using a fibre washer under the bolt head and only placing one magnet instead of two, gave the same height and an electrical connection.

Front Panel with all the acrylic pieces in place and the white paint infill completed

The case was another milestone for me. It's made from hardwood in particular Tasmanian Oak which is a plantation wood. It is quite hard, as the name suggests, and takes a considerable amount of time to cut on the router but after many attempts I managed to make a finger joint using this wood. Previously I have used MDF and plywood but neither of these woods worked to form a clean finger joint. I think this is something that I will be using more into the future. The input and output panels are 3d routed from 3mm black acrylic and filled with white acrylic paint as I have done in many projects.

The power for the system runs from a 18v plugpack. This in turn is converted to 5v via one step down converter and another buck converter creates the -12 and +12 volts needed by the opamps.

New Web Hosting 

So Hostbaby is closing down and has been taken over by Bandzoogle. I have to say that it's all looking good so far and easy to edit. There are some caveats with formatting but I personally like some limitations.

I'm "streaming" through my Amongst Projects blog here as well which is a little out of date but its purpose is to log my electronic projects I design and build for music and film related areas.

MIDI Transport Controller and Joystick 

The Transport Controller - this unit does the transmitting - well used already !

A while back I made up a simple transport controller so I could remotely, well a few metres away, control my two main audio software packages, Cakewalk Sonar X3 and Sony Vegas Pro 13.

This unit is made of two parts. There is the remote battery powered transmitter and the receiver unit which has a MIDI output on it to connect to one of my MIDI interfaces. The transport controller transmitter simply has seven switches which are monitored by a Arduino Nano which when pressed transmits the a value to the receiver. The receiver gets these values and puts out an appropriate MIDI controller value to the music computer.

The radio setup in both units are nRF24L01+ 2.4Ghz ultra low powered transceiver modules which are cheap and work a treat. Several libraries exist for the Arduino making coding simple. I used mirf. The radio modules communicate with the Arduino via the SPI interface.

I wanted to also try out something different for the controller buttons. So I went with touch sensitive buttons. This uses a small module called the MPR121 capacitive touch sensitive breakout board containing a Freescale MPR121 chip that interfaces with the Arduino using the I2C interface. I became aware of them via Julian Illets youtube videos for his penny touch organ. The module has 12 touch sensitive electrodes in total. I am only using 7 for this project. The buttons themselves are drawing pins as it seemed the simplest way of getting a neat electrical connection from the front of the panel to the pins on the MPR121 board.

Another challenge was to use WS2812G RGB leds as indicators for each button. These I mounted onto the rear of some routed 6mm opal acrylic bezels to help diffuse the light. In turn these bezels where mounted through holes of the transport controllers front panel. The front of these pieces of acrylic had the basic transport control symbols routed into them and filled with acrylic paint. This has a nice effect of backlighting the symbols. When the unit is running each of the symbols are lit with a washout colour but when the button is pressed it goes to full saturation.

The power for the transport controller comes from an 18650 3.3V LiPo battery. The battery is charged via a micro USB connector which is mounted on the TP4056 based battery management  board which takes care of charging the LiPo battery. From the outputs of the TP4056 there is a step up voltage board which takes the voltage of the 3.3v LiPo battery to 5v which powers the Arduino Nano. In hindsight I should ave used a 3.3v based Arduino as it would have saved using this step up board as all other parts in the transport controller can run from 3.3v.

The receiver unit showing the USB power socket, MIDI connections and Joystick socket on the top.

The receiver is a simple Arduino Nano with a nRF24L01+ attached. Pretty simple. One of my standard MIDI I/O boards is also mounted in the receiver case to transmit the incoming radio signals to the MIDI output and eventually controlling the software. Once again I used the Forty Seven Effects midi library.

The joystick controller

I have recently made an addition which is a joystick controller that sends out MIDI controller values for the X and Y positions of the joystick. This is something I wanted to control certain VST plugins within Sonar. One VST in particular which is a granular effect emulates a joystick on its own screen which I was able to attach to my new joystick controller. For this I made one of my acrylic cases to house the joystick with a 4 core cable running back to the transport controller receiver. The two signal lines from the joystick for X and Y are connected to two analogue voltage inputs on the Arduino and their values are converted into MIDI controller values. I found I needed to add a bit of smoothing via a couple of 100nF capacitors across the analogue input pins as the power coming from my USB 5v power supply which powers the receiver was a little noisy and affects the incoming joystick values.

The unit works well when doing recording mostly. I have the controller sitting on the keyboard I am using and with a simple setup with either audio package I can record and do other operations.