Subsystem Search

This page is read from MIDI Instrument Definitions, a Python library used in the author's other projects, in which every number is traced to a document its maker published. Its source is on GitHub.

Korg volca keys MIDI implementation

The MIDI implementation of the Korg volca keys: what it answers to, and the 16 controls it offers, on firmware 1.03.

At a glance

Firmware
This page describes firmware 1.03.
MIDI channel
Any one of 1 to 16.
MIDI mode
3: omni off, poly.
Voices
3, or 1 as set on the instrument.
Note range
0 to 127: C-1 to G9, counting middle C as C4.
Velocity
Received. Release velocity is ignored.
Aftertouch
None, sent or answered.
Pitch bend
Not recorded.
Program change
Not received or sent.
MIDI clock
Received.
Start and stop
Received.
Control change
16 controls, in the tables below.
NRPN
None.
System exclusive
None.

Controls

In the order the definition gives them, by group. Under each control is the name a program calls it by, once pymidiinstrumentdefs.load("korg/volca_keys") has loaded them.

VCO

Control CC Values
OCTAVE
octave
41 0-21 thirty_two_foot, 22-43 sixteen_foot, 44-65 eight_foot, 66-87 four_foot, 88-109 two_foot, 110-127 one_foot
Received, never sent
VOICE
voice_mode
40 0-12 poly, 13-37 unison, 38-62 octave, 63-87 fifth, 88-112 unison_ring, 113-127 poly_ring
Received, never sent
DETUNE
detune
42 0-127
Received, never sent
PORTAMENTO
portamento
5 0-127
Received, never sent
VCO EG INT
vco_eg_int
43 0-127
Received, never sent

VCF

Control CC Values
CUTOFF
cutoff
44 0-127
Received, never sent
VCF EG INT
vcf_eg_int
45 0-127
Received, never sent

EG

Control CC Values
EG ATTACK
eg_attack
49 0-127
Received, never sent
EG DECAY/RELEASE
eg_decay_release
50 0-127
Received, never sent
EG SUSTAIN
eg_sustain
51 0-127
Received, never sent

LFO

Control CC Values
LFO RATE
lfo_rate
46 0-127
Received, never sent
LFO PITCH INT
lfo_pitch_int
47 0-127
Received, never sent
LFO CUTOFF INT
lfo_cutoff_int
48 0-127
Received, never sent

DELAY

Control CC Values
DELAY TIME
delay_time
52 0-127
Received, never sent
DELAY FEEDBACK
delay_feedback
53 0-127
Received, never sent

Without a group

Control CC Values
EXPRESSION
expression
11 0-127
Received, never sent

Where these facts come from

Source documents

How they were read

SIXTEEN CONTROLLERS, GIVEN TWICE AND AGREEING EXACTLY. The implementation is a 3.9 KB text file - 5, 11, and 40 to 53 - and the chart's Control Change block lists the same sixteen in the same order. The two were compared number by number rather than read from one and assumed of the other, which is what korg/volca_fm established at rank 102 when its two copies disagreed.

NOTHING IS TRANSMITTED, AND THE MAKER SAYS WHY IN ONE LINE. "No message is transmitted. (The volca keys is not equipped with a MIDI Out jack.)" (implementation). The chart says it a second way: 34 crosses in the Transmitted column and not one circle, on every row it has. So every control below is direction: receives, and a consumer can stop wondering what this instrument reports - it has nowhere to report to. The same sentence, about a different volca, is in korg/volca_fm.

THE MARKS ARE NOT IN THE CHART'S TEXT LAYER, so none of that came from reading it as text. Its circles and crosses are vector drawings, and so are the two in its own legend - which is the tell, because the legend extracts as ": Yes" and ": No" with the symbols gone. Read as shapes against that legend, by the same code, and then rendered and looked at.

EVERY ONE OF THE SIXTEEN IS BEHIND A GLOBAL SWITCH THAT IS ON WHEN THE INSTRUMENT ARRIVES. "*1: Received when global parameter MIDI RX ShortMessage is set to ON." (chart), and the manual's global parameter table marks the factory setting with an asterisk: *On. The clock has a second switch set the same way, MIDI Clock Src defaulting to *Auto. This is the volca fm's arrangement exactly, and the opposite of dreadbox/nymphes, whose eighty-two controls are off until somebody turns them on.

AND THE MANUAL CONTRADICTS ITSELF ABOUT THOSE SETTINGS, WHICH MATTERS BECAUSE THAT IS WHERE A READER WILL GO TO CHANGE THEM. Firmware 1.03 added an eighth global parameter - "Support for setting sync unit in global parameter." (release_note) - and the manual's table duly has eight rows, ending Sync input/output unit. The instruction printed above that table still says seven: "Press a keyboard button 1-7 to specify the setting for the global parameter." (manual p. 1). The release note asked for the manuals to be downloaded again and they were changed, in one of the two places that needed it. So the table is right and the sentence above it is not.

CONTROLLER 11 HAS NO KNOB, WHICH IS WHY IT IS IN NO GROUP. "*3: Cannot be changed with machine operations; can only be changed with MIDI." (chart) - so EXPRESSION exists only as a message. The other fifteen are grouped by the manual's own five panel sections, VCO, VCF, EG, LFO and DELAY, and this one belongs to none of them because there is nothing on the panel to put it beside.

TWO CONTROLLERS ARE CHOICES RATHER THAN AMOUNTS, and the implementation gives both their bands in hexadecimal and decimal together. Controller 40 is the VOICE knob's six modes, which the manual explains: "POLY: Up to three chords of the sawtooth wave can be played." (manual p. 1), "UNISON: The sawtooth wave is produced at the same pitch by the three VCOs." (manual p. 1), and "POLY RING: Up to three chords are played with ring modulation applied to the square wave." (manual p. 1). Controller 41 is the octave footage, 32' down to 1'.

SONG POSITION IS ANSWERED TO, WHICH IS WORTH SAYING BECAUSE A SIBLING COULD NOT SAY IT. The implementation gives the message - F2, with "pppp : 0~15 = STEP 1 ~ STEP 16" (implementation) - and the chart circles the row. korg/volca_sample met the identical release note, "Fixes MIDI Song Position Pointer." (release_note), against a chart that crossed the row, and recorded the doubt rather than resolving it. Here three documents agree.

NOT RECORDED, THE PITCH BEND RANGE. The chart circles it and the implementation lists En among the channel messages, and no document gives a range or a setting for it - so this definition says it is answered to and cannot say how far. The same gap korg/volca_fm has.

NOT RECORDED, EITHER OF THE TWO GATES THE DOCUMENTS DISAGREE ABOUT. The chart footnotes pitch bend *1 and song position *2, making each conditional on a global parameter; the implementation footnotes neither, putting *1 only on the notes and the sixteen controllers and its own clock footnote only on the four realtime messages. Both say the messages are answered to and they cannot both be right about when, so neither account is carried.

CHECKED AND ABSENT: NRPN, which no document mentions, and whose numbers are not among the sixteen the chart and the implementation both list - 5, 11 and 40 to 53, all received and none sent. The aftertouch, program change and system exclusive below are checked absences too - crossed in both columns on the chart, and absent from an implementation whose whole contents are four sections long.