Saving KORG volca fm2 voices

The KORG volca fm2 can use voices intended for the original Yamaha DX7 in MIDI System Exclusive format. The user manual does not go into detail, but only states: "Sound files (SYS-EX/SYX) created on the Yamaha DX7 can be converted and loaded into the volca fm."

The term "sound files" is a little bit misleading here, as MIDI System Exclusive files do not contain sound, but manufacturer-specific information to the synthesizer. In this case they contain a full "cartridge", or 32 voices, for the Yamaha DX7, and the voices can be imported into the volca fm using the MIDI IN connector.

However, the process also works the other way, but with a twist. You can export voices out of the volca fm, but not through the MIDI OUT connector, as you would think. Instead, the voices can be exported as audio, so in this case they really are sound, until they are converted into System Exclusive files.

The voices you export from the volca fm can be loaded into the various DX7 clones listed in the DX7 All the Things! post, and maybe even to an original DX7 (will have to try this with my TX802 some day).

KORG volca fm2 synthesizer
The KORG volca fm2 is a modern version of the Yamaha DX7.

I wanted to save the 64 voices that the volca fm2 ships with, in case they are lost when I overwrite the banks with some other DX7 sounds. Getting them out of the volca turned out to be quite easy with the right tools.

The export is done through the volca SYNC OUT port, which is intended for communication with other volcas. As this communication is done using audio signals, it can be captured by recording the output of the SYNC OUT port.

The idea is to connect the SYNC OUT port into some input of an audio interface, and fire up an audio recording application or a DAW. Set the sample rate to 44.1 kHz, 16-bit, and use a mono track. Start recording, and then start the export by going into EDIT mode and pressing the SAVE/EXPORT button on the volca fm.

If you are monitoring the recording, you will hear a synchronization pulse, followed by a screeching noise. This noise is the data being sent out from the volca fm. The process uses Quadrature Amplitude Modulation or QAM, just like old school dial-up modems.

A recording of the KORG volca fm2 voices encoded with QAM
The audio recording of the QAM encoded voice data from the KORG volca fm2 is clipping and has sync pulses around it, but it still decodes fine.

After the screeching has turned into sync pulses again, stop the recording and save it as a WAV file. I've found that you don't need to trim away the pulses, at least with the tool I used. Namely, to convert the audio file to MIDI System Exclusive format, you need volcafmpatchdecoder.

This is a 400-line C language program with binary releases for Windows and Linux (both x86 and ARM), but not for macOS. If you're on a Mac, you will need to prepare the executable program with clang (most likely if you have Xcode installed) or gcc. Take a look at the README file in the GitHub repository for some clues.

When you have downloaded a binary release, or successfully compiled the source code, you should have an executable named volcafm_to_sysex (with an .exe extension on Windows). Run it with your audio recording as a command-line parameter, and you get a listing of the voices, along with two MIDI System Exclusive files:

% ./volcafm_to_sysex from-volcafm2.wav
    FILE: from-volcafm2.wav, 1 channel(s), rate:44100, width:16, block:2
     0:ARCTIC
     1:WHIZZZ
     2:VALVIL
     3:BASSACE
     4:QUSI
     5:OR-GN
     6:STRUMMER
     7:PLNTSTR
     8:FU-YU
     9:GAMMA
    10:NU LINE
    11:GRYMEM
    12:JULIENNE
    13:BASSRAT
    14:GAWGAW
    15:PORT-0
    16:2PCTRL
    17:HAOROM
    18:MOIDES
    19:PICHLD
    20:AOBIRD
    21:EQUUS
    22:VAIO-LA
    23:KLINK
    24:BNKN
    25:WAAAH
    26:PALPLUCK
    27:WARMBAW
    28:PUKPUK
    29:ANLGWALL
    30:E-A-P
    31:CIRKLE
    32:Volcanic
    33:MorphBass
    34:SmashHit
    35:E.Piano
    36:Distorted
    37:ChewyBass
    38:MusicBox
    39:GlassPad
    40:Organic
    41:ShortCut
    42:WarmBass
    43:Syringe
    44:Blowing
    45:BrassEns
    46:StringsEns
    47:Xylophone
    48:E.Bass
    49:ClassicGt
    50:TinLead
    51:LilChorus
    52:MouthLead
    53:Marimba
    54:GroanBass
    55:PluckKey
    56:Glocken
    57:Whistle
    58:HornSolo
    59:Picking
    60:ClavStab
    61:ThroatKey
    62:FlyKettle
    63:DrumShot

The files are named after your recording file, so in this case they would be called from-volcafm2.wav_cart.syx and from-volcafm2.wav_cart_2.syx. You will probably want to rename them to something else.

If your audio recording is not 44.1 kHz 16-bit mono, the program will tell you and quit right away. Originally I had made a stereo file at 48 kHz, but I was able to quickly transform it using Sound Studio on the Mac, and the decoder accepted it fine. Even the clipping didn't seem to be a problem, but you might want to turn down the input gain if you don't get decodable recordings.

I've loaded these voices into Dexed, and they sound OK, but remember that the volca fm2 has chorus and reverb effects which are used on the voices, so the dry sounds, when loaded into Dexed or somesuch, are not identical to the ones you get from the volca fm.

I hope you get some use out of this. You could use some of your favorite volca fm voices in other DX7 compatible synths, or just figure out how they are put together. The DX7 legacy is alive and well also in the volca fm!