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.
Roland SP-404MKII MIDI implementation
The MIDI implementation of the Roland SP-404MKII: what it answers to, and the 41 controls it offers, on firmware 5.50.
At a glance
- Firmware
- This page describes firmware 5.50.
- MIDI channel
- Any one of 1 to 10.
- Parts
- BUS 1, BUS 2: on MIDI channels 1 and 2, taking controls.
BUS 3, BUS 4: on MIDI channels 3 and 4, taking controls.
INPUT: on MIDI channel 5, taking controls.
Vocoder: on MIDI channel 11, taking notes.
Chromatic: on MIDI channel 16, taking notes. - Voices
- 32, shared by the parts that play notes.
- Notes
- Each note plays a drum of its own. Which note plays which is not recorded.
- Note range
- Not recorded.
- Velocity
- Sent and received. Release velocity is ignored.
- Aftertouch
- None, sent or answered.
- Pitch bend
- Not recorded.
- Program change
- Received.
- MIDI clock
- Sent and received.
- Start and stop
- Sent and received.
- Control change
- 41 controls, in the tables below.
- NRPN
- Not recorded.
- System exclusive
- None.
Controls
In the order the definition gives them, by part and group. Under each control is the name a program calls it by, once pymidiinstrumentdefs.load("roland/sp_404mkii") has loaded them.
BUS 1, BUS 2
| Control | CC | Values |
|---|---|---|
Ctrl 1bus_1_2_ctrl_1 |
16 | 0-127 |
Ctrl 2bus_1_2_ctrl_2 |
17 | 0-127 |
Ctrl 3bus_1_2_ctrl_3 |
18 | 0-127 |
EFX switchbus_1_2_efx_switch |
19 | 0-63 off, 64-127 on |
Ctrl 4bus_1_2_ctrl_4 |
80 | 0-127 |
Ctrl 5bus_1_2_ctrl_5 |
81 | 0-127 |
Ctrl 6bus_1_2_ctrl_6 |
82 | 0-127 |
EFX numberbus_1_2_efx_number |
83 | 0 off, 1 direct_fx1, 2 direct_fx2, 3 direct_fx3, 4 direct_fx4, 5 direct_fx5, 6 scatter, 7 downer, 8 ha_dou, 9 ko_da_ma, 10 zan_zou, 11 to_gu_ro, 12 sbf, 13 stopper, 14 tape_echo, 15 timectrldly, 16 super_filter, 17 wrmsaturator, 18 vinylsim_303, 19 vinylsim_404, 20 cassette_sim, 21 lo_fi, 22 reverb, 23 chorus, 24 juno_chorus, 25 flanger, 26 phaser, 27 wah, 28 slicer, 29 tremolo_pan, 30 chromatic_ps, 31 hyper_reso, 32 ring_mod, 33 crusher, 34 overdrive, 35 distortion, 36 equalizer, 37 compressor, 38 sx_reverb, 39 sx_delay, 40 cloud_delay, 41 back_spin, 42 djfx_delay |
BUS 3, BUS 4
| Control | CC | Values |
|---|---|---|
Ctrl 1bus_3_4_ctrl_1 |
16 | 0-127 |
Ctrl 2bus_3_4_ctrl_2 |
17 | 0-127 |
Ctrl 3bus_3_4_ctrl_3 |
18 | 0-127 |
EFX switchbus_3_4_efx_switch |
19 | 0-63 off, 64-127 on |
Ctrl 4bus_3_4_ctrl_4 |
80 | 0-127 |
Ctrl 5bus_3_4_ctrl_5 |
81 | 0-127 |
Ctrl 6bus_3_4_ctrl_6 |
82 | 0-127 |
EFX numberbus_3_4_efx_number |
83 | 0 off, 1 vinylsim_303, 2 vinylsim_404, 3 cassette_sim, 4 lo_fi, 5 downer, 6 compressor, 7 equalizer, 8 isolator, 9 super_filter, 10 filter_drive, 11 wrmsaturator, 12 overdrive, 13 distortion, 14 crusher, 15 ring_mod, 16 sbf, 17 resonator, 18 hyper_reso, 19 chromatic_ps, 20 reverb, 21 ha_dou, 22 zan_zou, 23 sync_delay, 24 timectrldly, 25 ko_da_ma, 26 tape_echo, 27 chorus, 28 juno_chorus, 29 flanger, 30 phaser, 31 wah, 32 slicer, 33 tremolo_pan, 34 to_gu_ro, 35 djfx_looper, 36 scatter, 37 sx_reverb, 38 sx_delay, 39 cloud_delay, 40 djfx_delay |
INPUT
| Control | CC | Values |
|---|---|---|
Ctrl 1input_fx_ctrl_1 |
16 | 0-127 |
Ctrl 2input_fx_ctrl_2 |
17 | 0-127 |
Ctrl 3input_fx_ctrl_3 |
18 | 0-127 |
EFX switchinput_fx_efx_switch |
19 | 0-63 off, 64-127 on |
Ctrl 4input_fx_ctrl_4 |
80 | 0-127 |
Ctrl 5input_fx_ctrl_5 |
81 | 0-127 |
Ctrl 6input_fx_ctrl_6 |
82 | 0-127 |
EFX numberinput_fx_efx_number |
83 | 0 off, 1 auto_pitch, 2 vocoder, 3 harmony, 4 gt_amp_sim, 5 chorus, 6 juno_chorus, 7 reverb, 8 timectrldly, 9 chromatic_ps, 10 downer, 11 wrmsaturator, 12 vinylsim_303, 13 vinylsim_404, 14 cassette_sim, 15 lo_fi, 16 equalizer, 17 compressor |
On the base MIDI channel
| Control | CC | Values |
|---|---|---|
volume slidervolume_slider |
7 | 0-127 |
X-FADEx_fade |
8 | 0-127 |
play/pause buttonplay_pause |
20 | 0-126 pause, 127 playSent, never received |
cue buttoncue_point |
21 | 0-126 released, 127 pressedSent, never received |
SYNC buttonsync |
22 | 0-126 off, 127 onSent, never received |
CUE buttoncue |
23 | 0-126 off, 127 onSent, never received |
BEND+ buttonbend_up |
24 | 0-126 released, 127 pressedSent, never received |
BEND- buttonbend_down |
25 | 0-126 released, 127 pressedSent, never received |
BPM+ buttonbpm_up |
26 | 0-126 released, 127 pressedSent, never received |
BPM- buttonbpm_down |
27 | 0-126 released, 127 pressedSent, never received |
EXIT buttonlooper_exit |
85 | 127 stop_all_samplesReceived, never sent |
PITCH/SPEED buttonlooper_pitch_speed |
86 | 127 reset_tempoReceived, never sent |
DEL buttonlooper_delete |
87 | 127 delete_sampled_contentReceived, never sent |
REC buttonlooper_record |
88 | 0-126 stop_sampling, 127 start_samplingReceived, never sent |
RESAMPLE buttonlooper_resample |
89 | 127 overdubReceived, never sent |
CTRL 3 knoblooper_ctrl_3 |
90 | 0-127 Received, never sent |
SHIFT + PATTERN SELECTlooper_undo |
91 | 0-126 redo, 127 undoReceived, never sent |
Where these facts come from
Source documents
- SP-404MK2 Reference Manual, 5.50, its user manual, read on 5 October 2026 (the file read).
- SP-404MK2 MIDI implementation chart, 5.00, its MIDI implementation, read on 5 October 2026 (the file read).
- SP-404MK2 Control change messages and corresponding effects, 5.00, reference, read on 5 October 2026 (the file read).
- Roland - Support - SP-404MKII - Owner's Manuals, its download page, read on 5 October 2026.
How they were read
SP-404MK2 Reference Manual, Version 5.50 (174pp), which is the source of every number here: the MIDI implementation chart at pp. 167-168, its footnote tables at pp. 169-170, the three CC#83 effect lists at pp. 157-160, the MIDI system settings at pp. 137-138, the vocoder's channel at p. 156, the specifications at p. 166 and the MIDI note map at pp. 170-173. Roland's web edition of the chart and of the effect lists is saved beside it and cited for agreeing; its own list of documents for this instrument is saved as evidence of what the maker offers.
SEVEN CONTROLLERS ARE PUBLISHED ONLY INSIDE A FOOTNOTE, AND THEY ARE THE DESTRUCTIVE ONES. The chart's Control Change rows are CC#16-19, CC#80-83, CC#07, CC#08 and CC#20-27 (p. 168). Controllers 85 to 91 are in none of them. They are in a table headed "Control change message numbers and corresponding controllers in Looper mode" (p. 169), which hangs off footnote *8 - and *8 is cited from the rows for 7, 8 and 20 to 27, which are about DJ mode. So the only pointer to seven controllers is a footnote marker on rows that do not contain them, and what they do includes "Deletes the sampled content" (p. 169) and "Starts sampling" (p. 169). A reader who takes the chart's rows as the list of controllers loses those seven silently.
THEIR DIRECTION IS IN ONE SENTENCE OF BODY PROSE AND IN NO CELL OF THE CHART. Every row that cites *8 gives a direction - 7 and 8 both ways, 20 to 27 transmitted only - and the Looper table has no row of its own. What settles it is 124 pages away from the chart: "you can operate some of the controls from an external controller by using control change messages" (p. 45), which sends the reader to that very table by name. So they are received, and the sentence that says so is the only prose pointer to seven controllers in a 174-page document. The second reader found it; a first reading had the direction right and the evidence weaker, calling it a reading of what the controls do rather than a statement.
ONE CONTROLLER NUMBER, THREE VALUE MAPS, AND THE SAME EFFECT NUMBERED DIFFERENTLY IN EACH. "You can use a control change message (CC#83) to select the effects" (p. 157), and the maker prints the correspondence three times: for "BUS1 (MIDI ch 1), BUS2 (MIDI ch 2)" (p. 157) with 43 values, for "BUS3 (MIDI ch 3), BUS4 (MIDI ch 4)" (p. 158) with 41, and for "INPUT FX (MIDI ch 5)" (p. 159) with 18. 303 VinylSim is 18 on the sample buses, 1 on the master buses and 12 on the input; Reverb is 22, 20 and 7; Equalizer is 36, 7 and 16. So this is not one control with a long list of choices, it is three controls that share a number, and a consumer that offered one list for all five channels would be wrong on two of them. Each is recorded against its part below.
AND THE RENUMBERING IS ALMOST BUT NOT QUITE TOTAL, WHICH IS WORSE THAN EITHER. Thirty-five effects appear in more than one list. (OFF) is nought in all three, WrmSaturator is 11 in both the master buses' list and the input's - and every other one of the thirty-five is renumbered everywhere it appears. So a reader who spot-checks two lists and lands on either of those two concludes the lists are the same, and a reader who lands on any of the other thirty-three concludes they are unrelated. Both readings are wrong. The second reader found the WrmSaturator coincidence against a first reading that had said no shared number existed at all, which is the kind of overclaim a comparison exists to catch.
WHY THEY DIFFER AT ALL IS NOT ARBITRARY, AND THE SECOND READER ESTABLISHED IT: each list is that bus's own on-screen menu order, confirmed against the EFX Type value lists in the parameter guide, which run in the same order with Bypass where the chart has (OFF). So the numbers are positions in a menu rather than identifiers of an effect, which is exactly why they do not travel between channels.
FIVE OF THE SAMPLE BUSES' VALUES DO NOT NAME AN EFFECT AT ALL. Direct FX1 to Direct FX5 at 1 to 5 are the five top-panel effect buttons, each of which the player assigns from a list of 41. So those five choices select whatever the player put there, and the five effects the master buses have and the sample buses do not - Filter+Drive, Resonator, Sync Delay, Isolator and DJFX Looper - are exactly the ones reachable on the sample buses through those buttons. Recorded because a consumer reading direct_fx1 as the name of an effect would be wrong.
THE THREE LISTS ARE EACH CONTIGUOUS FROM NOUGHT, WHICH IS THEIR OWN CHECK - 0 to 42, 0 to 40 and 0 to 17, with nothing missing and nothing doubled - and all three agree between the PDF and the web edition, 102 names over all. The chart's own example corroborates them from outside: 0xB3 53 01 sending "BUS 4 EFX number = 01 (303 VinylSim)" (p. 168) is a control change, controller 83 with a value of 1, shown on channel 4, which is BUS 4, and 1 is 303 VinylSim in the master buses' list and nothing like it in the other two.
AND A PRINTED PAGE NUMBER WAS READ AS AN EFFECT NUMBER, WHICH THE SECOND EDITION CAUGHT. The effect lists are columns of bare integers and every page of the PDF carries its own number as a bare line, so pages 157 to 160 each displaced a real value. The web edition has no folios and was right where the PDF was wrong. The guard is the format's own - a controller value cannot exceed 127 - rather than a page range that would have to be maintained. This is sequential/fourm's lesson met a second time, and the first time a second edition rather than a second reader found it.
THE CHANNEL MAP DEPENDS ON THE MODE, AND THIS IS THE ONE THING THE FORMAT CANNOT HOLD WHOLE. Five schemes share sixteen channels. The effect buses: CH 1: BUS 1 through CH 5: INPUT (p. 169), a flat table with no qualification, and these are the channels every control below uses. The sample banks in MIDI mode A: the note map gives channels 1 to 10 a bank each, with notes 35 to 51 selecting a pad within it. MIDI mode B: two channels carry all ten banks, the lower one banks A to E and the upper F to J, over notes 0 and 12 to 91, with the pair settable - "Pad MIDI Channels 1/2, 2/3-9/10, 10/11" (p. 138) - and the whole map shiftable by "Note offset -11-35" (p. 138). The vocoder: "For note messages (Note Number = 0-127) and pitch bend messages, set the MIDI channel on your external device to '11'" (p. 156). Chromatic playback: channel 16, notes 36 to 60. And DJ mode reassigns the first three, where channel 1 is one deck, 2 the other and 3 the pattern sequencer (p. 169). So channels 1, 2 and 3 mean a bus, a bank, a deck or a sequencer depending on what the player is doing, and nothing in a message says which. The schemes are told apart by message type and controller number rather than by channel, and the document never puts them side by side.
AND THE PAD CHANNEL SETTING COLLIDES WITH THE VOCODER'S. Three printed statements cannot all hold: the setting offers a pair up to 10/11, the chart's basic channel row stops at 10, and the note map's own column heads read CH 1-9 and CH 2-10. Choose 10/11 and the pads' upper half lands on channel 11, which is the vocoder's fixed channel. The second reader laid the three side by side; nothing in the manual reconciles them, and nothing says what happens. channels records the 1 to 10 because it is the figure two of the three agree on.
THE PARTS BELOW THAT TAKE CONTROLS ARE THE EFFECT BUSES AND THE INPUT AND NOTHING ELSE, because that is the assignment the chart states outright and the only one the controls that name a part need; the vocoder and chromatic parts take notes and no controls. Their channels are fixed - no setting moves them, and the Pad MIDI Channels offset does not reach them - and each part gives its channel as the number it is. A control naming no part is on the base channel, which no bus follows: the buses and the input are on fixed channels 1 to 5, and the base channel meets one of them only when it is set there. So every control the buses and the input take is written once for each of the three bus and input parts below. Until 2026-10-14 the format had no word for a fixed channel, and the parts were written as offsets from the base channel, which implied a derivation that is not there and made a control naming no part channel 1, the first bus's.
THE CHART'S BASIC CHANNEL IS 1 TO 10 AND ONLY IN ONE MODE. x (MIDI mode A) and 1-10 (MIDI mode B) (p. 167), in both the transmitted and the recognised column and for both the default and the changed row. So in MIDI mode A this instrument has no basic channel at all - every one of its ten banks has a channel, and no single one is the instrument's. channels records the 1 to 10 because it is the only figure stated; channel 11 is reachable as the upper half of the mode B pair, and 11 and 16 carry the vocoder and chromatic playback whatever the mode.
PROGRAM CHANGE IS RECEIVED, NEVER SENT, AND THE BANK COMES FROM THE CHANNEL. The chart marks it "x" transmitted and "o" recognised (p. 168), gated by a setting - "PC Rx ON, OFF ... When this is ON, program change messages are received" (p. 138) - and a table gives PC#0 Pattern 1 through "PC#15 Pattern 16" (p. 170). The chart's own example is where the bank comes from: 0xC3 0F selecting "Bank D Pattern 16" (p. 168) is a program change on channel 4, selecting the fourth bank's sixteenth pattern. So sixteen patterns are reachable per channel and the channel chooses the bank. No preset count is recorded - the instrument holds 2,560 patterns (p. 166) of which a program change reaches 16 at a time, and the product of the two is a figure the maker never prints.
CLOCK AND TRANSPORT BOTH TRAVEL BOTH WAYS, EACH UNDER A CONDITION THE CHART STATES. Sending is "Output when MIDI Sync Out is 'ON' and when there is no tempo input from an external device" (p. 168), and receiving is "Enabled when this unit is in remote mode (when a tempo signal is received from an external device)" (p. 168) - so the two are exclusive by construction and the instrument is a master or a slave and never both. The settings behind them are MIDI Sync Out OFF, ON and a four-way MIDI Sync of Auto, Internal, MIDI and USB (p. 137) - and the phrase remote mode (p. 168) that the receiving condition turns on is used once in the whole manual and never defined, which the second reader established by searching for it. The looper is driven the same way: "You can control the start/stop of recording from an external MIDI device using the start command (FA)/stop command (FC)" (p. 41), and continue is never mentioned anywhere - only start and stop.
SYSTEM EXCLUSIVE IS A CHECKED ABSENCE, WHICH IS WORTH SAYING BECAUSE THERE IS AN EDITOR. "System Exclusive x x" (p. 168), in both columns. Roland publishes an SP-404MKII App with a user's guide of its own, so something carries patches and samples between the two, and it is not system exclusive. The instrument's import and export go through an SD card and a USB connection instead.
AND THERE IS NO REGISTERED OR NON-REGISTERED PARAMETER ROW IN THE CHART AT ALL. Not a cross in two columns - no row. Controllers 98 to 101 appear nowhere in the document. That is a silence and not a checked absence, which is why nrpn is unset rather than none, and it is the one place this chart is less complete than the form it is written in.
PITCH BEND IS RECEIVED ON ONE CHANNEL FOR ONE PURPOSE AND THERE IS NO FIELD THAT SAYS SO. The chart gives Pitch Bend x o *2 with *2 reading "Enabled when INPUT FX is 'Vocoder' (MIDI CH 11)" (p. 168), and the vocoder's own page confirms it. So it is received, never sent, only on channel 11, and only while one input effect is selected - and no page states a range or whether one can be set. voice.pitch_bend holds a depth and whether it is settable, so with neither stated there is nothing to write there, and recording nothing is indistinguishable from nobody having looked. Said here instead, and raised with the format's other questions.
VELOCITY IS RECEIVED AND TRANSMITTED ON NOTE ON AND NEITHER WAY ON NOTE OFF - "o o" against x x (p. 167) - which fits an instrument whose pads the specifications call "16 pads + 1 sub pad (Velocity-sensitive pad)" (p. 166). Aftertouch is a checked absence of both kinds in both directions, four crossed cells. So are Song Position, Song Select, Tune Request, Reset All Controllers, Local On/Off, All Notes Off and System Reset, each crossed twice; All Sound Off is received, with the footnote "All samples stop playing back when the MIDI cable is unplugged" (p. 168). That note is almost certainly on the wrong row: it describes a consequence of the cable going away rather than of a message arriving, which is what an active sensing timeout is - and Active Sensing is the one affirmative row in this chart with no note against it. The second reader's reading, and the likeliest explanation of the oddest cell here.
A NOTE NUMBER HERE ADDRESSES A PAD AND NOT A PITCH, EXCEPT ON TWO CHANNELS WHERE IT DOES BOTH. Hence addressing: voices on the instrument and pitches on the vocoder and the chromatic parts. And the map is neither fixed nor learned: learned says the owner assigns which note plays which voice, by MIDI learn or in a menu, and here the owner assigns none of them. MIDI Mode switches between two published maps and Note offset moves the pads of one of them together, by up to 11 note numbers down or 35 up, so note_map is left unset rather than called either.
EIGHT DEFECTS IN THE CHART'S OWN APPARATUS, AND SEVEN OF THEM ARE IN BOTH EDITIONS. **Footnote *7 heads two different tables** - MIDI channels and Control change message numbers and corresponding EFX controls (p. 169) - so a row citing *7 cites both and says neither. **Footnote *8 heads two more**, the DJ mode table and the Looper mode table, and the three rows that cite it are all DJ mode's - so nothing points at the Looper table at all. **The chart's Program Change row cites *9 and nothing anywhere is headed *9**; the table it means is printed with no number. The transmitted cell for CC#16-19 is a capital O where every other affirmative cell is the lower-case o the legend defines. The Note Number row cites the wrong footnote in one of its two columns: its transmitted entry for channel 16 reads *7 and its recognised entry for the same channel reads *6, and *7 is the controller and channel table, which says nothing about note ranges. A worked example contradicts the table it illustrates: 0xB0 14 01 is glossed CH1 play (p. 168) while the table defines that controller as "0: pause, 127: play" (p. 169), and 1 is neither. ***7 is attached to the recognised column alone** on both controller rows that cite it, which implies the channel map applies only on the way in. And the eighth is the PDF's alone: **its footnote list prints *1 and then 1 to 5**, so the note the chart calls *6 is printed as 5 and every note after the first is mislabelled. The web edition's markup numbers all six correctly under a style named for the asterisk, so the source is right and the typesetting is wrong - the first time in this corpus that two editions of one document have disagreed and the web one has been the better.
AND A NINTH IS NOT IN THE CHART BUT IN THE NOTE MAP, WHERE IT COSTS A WHOLE BANK. The map gives the mode B pair five banks on each channel, and bank H is nowhere in it: the upper channel's notes 44 to 59 print bank I, which its notes 60 to 75 print as well. Counted mechanically over the map's four pages, banks C to G have sixteen cells each, bank I has thirty-two and bank H has none. By the pattern the other four pairs make - A with F, B with G, D with I, E with J - the duplicated block should be H. So a reader transcribing the map as printed gets an instrument whose eighth bank cannot be addressed in mode B, and it is in both editions. Found by the second reader and confirmed here by counting; recorded and not corrected, because which of the two blocks is wrong is a guess.
THREE MORE OF THE MAKER'S INCONSISTENCIES, EACH HARMLESS AND EACH WORTH NOT RE-DERIVING. The chart's rows write CC#07 and CC#08 where its own footnote table writes CC#7 and CC#8. The DJ table's third column is headed MIDI channels 3 for a single channel. And the two words for this instrument's name disagree inside one maker: the manual's cover and the chart's own Model: line both say SP-404MK2, Roland's document list titles some files SP-404MKII and others SP-404MK2, and the product is sold as the SP-404MKII. This definition follows the brand, as the ranking does.
WHAT THE MAKER PUBLISHES NOW, AND WHY IT IS WORTH SAYING. Its own document list offers the Reference Manual at version 5.50 in HTML and PDF, a Quick Start in eight languages, an App User's Guide, a Roland Cloud guide, a shortcut list and three third-party setup guides. The version 3.00 manual that this instrument's survey recorded as its source is not listed any more, and the version 5.00 web page that the same survey named as the current MIDI reference is one revision behind. Neither was wrong when written. A document address recorded as current is a dated claim even when nothing on it carries a date, which is ableton/move's finding arriving from the other direction: there the document was stale and said nothing about it, here the record of which document to read went stale instead.