Volca Sample Tutorial 5: MIDI and External Automation

In the previous tutorial we looked at song mode, and how we can use it to play longer sequences, or odd time signatures. Before that, wee looked at the Volca’s Automation capabilities and how we can use them to give more movement to your sound. In this tutorial, we will take a look at the Volca’s MIDI implementation, and how it can be controlled via MIDI. I’ll be focusing on two computer programs which are directed towards live performance. Because of this, this tutorial is a little bit more about the software that I use than about the Volca. Nevertheless, the same ideas and concepts can be applied by someone using a DAW, or any other MIDI controller software with similar capabilities. As always, this tutorial is the “verbose text mode” of the YouTube video on my Philip+ channel.

All Volcas have MIDI input using a 5-pin MIDI DIN. Thus you will need some adapter to connect the Volca to your computer. Some USB sound cards, like the Scarlet 2i4 already come with a USB/MIDI interface included. If, like me, your USB sound card does not have a MIDI Interface, your must use a USB-MIDI adapter. Some USB MIDI controllers like offer this possibility, and there are a number of inexpensive USB-MIDI solutions (see Figure 1). However, I swear by M-Audio’s MIDISPORT 4×4. This large four-input/four output adapter is is built like a tank: very heavy and with excellent components. With it, you may control up to 4 instruments at the same time (plus a few more, if you use splitters/MIDI TRU instruments).


Figure 1. An inexpensive USB-MIDI adapter, and M-Audio's MISIDWPRT 4x4. Figure 1. An inexpensive USB-MIDI adapter, and M-Audio’s MIDIDSPORT 4×4.


MIDI Implementation

The MIDI implementation of the Volca Sample (i.e. the messages it will respond to, and how it responds to each of them) is downloadable from Korg’s website.

The Volca Sample uses 10 (!) channels of MIDI: one for each of the ten parts. This cannot be changed. The instrument receives NOTE ON/NOTE OFF signals as triggers for the part corresponding to that channel, but is completely oblivious as to the NOTE VALUE and VELOCITY information. This means you cannot simply connect your MIDI controller to the Volca Sample and start playing it (a workaround is provided bellow). Also, neither Swing, Reverb Mix, Volume or looping/muting/soloing capabilities are implemented via MIDI, nor is there any control for the Analogue Isolator.

The Volca Sample will receive MIDI Clock and Transport data (these settings can be overridden), and it is always useful to be able to synchronize it via MIDI, even if you don’t intent to control it this way.

The Volca Sample will receive MIDI CC data on channels 1-10, which correspond to each of the knobs on the Sample Editing Matrix. For each part, the correspondence is given on Table 1.

Table 1: MIDI CC messages (for channels 1 to 10).
MIDI CC Control Notes
 10  PAN
 42  HI CUT
 43  SPEED  Values 0-127 are translated into [-63;63].
 44  PITCH EG INT  Values 0-127 are translated into [-63;63].

Thus, in order to control the pitch in a melodic manner, we need to somehow implement the Table at the end of Tutorial 3. Fortunately, this is relatively easy to do in Pure Data, and there is also at least one Android App capable of doing this in real-time.

Using Pure Data (Pd)

Pure Data (Pd) is a visual programming language very common in modern electronic music, computer-aided music, algorithmic composition and other performance arts. It is not very difficult to learn the basics, and has a great community willing to share information, patches and experience.

More important for this subject, Pd can be set up to behave like a MIDI instrument/controller, allowing MIDI  messages to be read and re-purposed (kind of a MIDI filter on steroids).  This is the preferred tool for converting NOTE VALUE into CC data to be fed on CC 42. The patch bellow will convert note values from 36 to 84 (60 is middle C, and is assumed to be the note of the sample at SPEED=0) into CC 42 values. It will also allow other CC messages to be passed through. You can check the PudeData implementation on my PureData repository on GitHub (file 151001-volca-sample-midi-note-to-speed_modified.pd) This patch is distributed without any warranty. At present, I know that this patch may not work properly in leggato notes, because the incoming NOTE OFF signal will override the NOTE ON of the following note. I promise I’ll take care of that in the near future. ;)

A simple Pd patch for converting MIDI note value data to SPEED, as used in CC 42.
A simple Pd patch for converting MIDI note value data to SPEED, as used in CC 42.

Because Pd is very flexible, you can also program a lot of sequencing and automation in Pd, using Tables/Arrays and the tabread object. You can even put Pd analyse incoming video or audio signals, process them and send MIDI data as a consequence of the input. To learn more on Pd, please check its online manual/tutorial.

Using QMidiArp

Pure Data is extremely powerful, but it does have a steep learning curve. QMidiArp is a free and open-source Qt application that runs on Linux (perhaps it can be compiled under Mac OS X and possibly also Windows) and provides real-time MIDI arpegiators, sequencers and LFOs! Yes: you can use a MIDI LFO to modulate stuff on your Volca Sample, like HI CUT, LENGTH and PAN. These three parameters are may favourite, but I strongly recommend everyone to experiment to their heart’s content.

QMidiArp's Window, showing the global settings (left column). On the right column, a sequencer and a LFO (background) are running and sending their data to the Volca Sample.
QMidiArp’s Window, showing the global settings (left column). On the right column, a sequencer and a LFO (background) are running and sending their data to the Volca Sample.

You can find an extensive demonstration of the video above. There are, however, a few words of caution when using MIDI with the Volca Sample (also applicable to other complex MIDI setups). MIDI is a serial communications protocol. This means that although there are 16 channels, and the Volca is “listening” on 10 of those channels, only one message is transmitted at any given time. It is easy to imagine a situation were several LFO’s and sequencers are running at the same time on the Volca keys. But because MIDI can only handle one message each time, and each message take a few microseconds to be transmitted, you will end up with synchronization problems (at best) or even ruin your performance. You don’t even need to have a lot of stuff going on. If you use one sequencer and one LFO in QMidiArp, and crank the resolution of the LFO, eventually the Volca will start spewing noise and cracking noises, as MIDI messages become out-of-sync.

In the next tutorial, we will see how we can upload new samples into memory.