Using Rodec© markup to simulate your instrument in Melodeon Explorer©


Rather than launch into technical complexity, here are some screen shots (inserts show the tokens)

A simple D/G melodeon. The notation button is set to ABC, or 'Anglophone' as they say in France!

'Almost the same'* D/G melodeon with toggled to DoRéMi or 'French'. I've annotated with the layout token strings used in the Edit box

The third shot shows other 'controls'. The Editor's prefix box has set the notation and chord splits automatically and tried to specify A♭ 'globally'. However concertina players name their accidentals from the nearest note. Doubling up the to eg G♯♯ (bottom left) overrules pre-sets. This button will always display as G♯ or Sol♯.

Note that the notation doesn't care whether a button is specified as ABC:G♯, A♭, or Solfage: La♭,Sol♯. Rodec© regards these as the same note (even though EC players disagree)! NB:2: tabs move 50%, whereas nudges move 25%!

In this final screen, a Crane duet laid out from Rodec© notation. Concertina button rows are rarely 'horizontal' and 'nudge' characters are avaialbe take them off the rows! A ꜛꜜ 'nudge' moves up/down 25% of button height; ↑↓ move it 50%. You may also nudge the push/pull graphics. Type these into ME as ^v (caret and lowercase 'v'); double these up for the larger moves. The Editor conveniently converts these for you. ME will also turn eg 'C# Eb' ... into music's 'C♯ E♭'

The concept behind Rodec markup

The basic ideas to absorb are that the edit box acts as a little program. Its tokens 'lay out' the simulation when you press [Make]. 'Rodec' is the 'markup language' used in this. Whereas 'Melodeon Explorer' is an interpreter and editor, designed to run in Web browsers.

That's about it for constructing. Using M.E to explore a chord or scale is more intuitive. Simply specify key and scale/chord.

The pre-sets layouts are intended as 'instructive', and you can get more understanding from the row examples below.

Editor Input
Appearance on the simulation ♪ Play ♫ notes using the octave
F♯ A C E
8 0 2 7
Appearance when all the notes are part of selected scale or chord. Note that musically: Scales and chords are 'the same thing'

The affect of changing key/tonic or scale
F♯ A C E
8 0 2 7
Here our C button is 'out' of the selected scale or chord. For example when playing in 'dorian' E minor, which derives its notes from D major scale (mode II)

'Nudging' buttons
F♯ A C↑ E↑

9 0 3 7
Two buttons are here ↑shifted up 50% (as requested for English concertina) Key this into the edit box as 'F#   A   C^^  E^^' - conversion is automatic!

F♯ꜜ A Cꜛ E↑

9 0 3 7
Lay out your instument using Rodec
A 25% button nudge ꜛup or ꜜdown also available (A) in this example is the only button actually on row!

Key these tokens into the edit box as 'F#v A C#^ E^^'

Specifying a specific notation
(active control settings inset: right)
G♭♭ A C E
9 0 3 7
Display of musical notes is normally set by the toggles in the 'control' area. You can prevent this by doubling up the accidentals as ♯♯ or ♭♭. Here we specify G♭ notation, overruling the controls (as requested for C/C♯ melodeons etc) This is a layout command, not a 'musical' G♭♭!   Key it in as 'Gbb'

Explorer's sound system (not all browsers)
ºF♯ ¹A ²C ³E ⁿA
9 12 27 43 48
Sound There are 6 octaves of sampled sound for standards compliant (!) browsers: numbered 0-5. To use sound effectively, you must 'voice' the octaves on your instument using a numeric prefix. The top (#5) octave is required for scale 'run-on' notes, and there is also an [upper octave] option in controls. Thus in practice you should specify octaves as 0, 1, 2, or 3. Anything above this (eg 4) is converted to eg ⁿF♯ and plays in octave #4 (5 for [upper octave]). If you use [transpose] your octaves may then need 're-voicing'

Importantly The octaves run from ºA-ºG♯, ¹A -¹G♯ etc. The best way to voice an instrument is with it in your hands.
  1. Find your lowest 'A' - that should be ¹A (rarely ºA if it is your lowest note)
  2. Scale notes below this pitch are in octave #0 - ºE ºF ºG ºA ♭ etc
  3. Notes from ¹A up run ¹B♭ ¹B ¹C ¹D♭ ... ¹A♭
  4. From then on it's ²A ²B♭ ²B ²C ²D♭ ... ²A♭
  5. etc etc working upward. This makes most efficinent use of your range (unless A is lowest note)
  6. If you don't like it on the simulation - press the next octave up option!
Click on a button to see if sound works in your browser! For keyboard entry - simply key in eg '1F#' and '¹F♯' will appear when you click outside the box

Mixing layout/ octave prefixes in a constructor token
ºF♯♯↑ ¹A ²Cꜛ ³Eꜜ *A

9 12 27 43 48

Button constuctor prefixes can be combined. The above is admittedly a little contrived, but shows the flexibility that is available. Again 'A' and 'G♭' lie on the row. Note also how doubling up the '♯' on the first button overrules the control panel option to display 'G♭'

Using Solfage (Do Ré Mi) notation
ºFa♯♯↑ ¹La ²Doꜛ ³Eꜜ *La
Note mixed input:legal!

9 12 27 43 48

Exactly same as above but with Continental Europe's Do Ré Mi display selected in the 'Control' area. As input Explorer regards 'ABC', or Do Ré Mi as 'the same' but for Display it used the setting in 'controls' Editor also tidies up: in the example here the active control Do Ré Mi setting will convert to 'º↑Fa♯ ¹Fa ꜛ²Do ꜜ³Mi ⁿFa♯♯ as you click outside the edit box

Practical application to the English Concertina
B♭♭ B ↑D ↑D♯♯
E♭♭ E ↑G ↑G♯♯

13 14 17 18
18 19 22 23
Specified ♯♭'s and nudges, used as they were intended to lay out an English concertina's left end. The Melodeonista might feel that E♭ and D♯ are musically 'the same'? But EC aficionados like it this way!

Constructing a melodeon left end
© E © A
8 7 8 0
Use © (key this in as '@' ) to construct a chord button

'Splitting' a melodeon chord
1926 7 1219 0
A constructor of 'Ø' (key this in as %) 'splits' a chord. In the example above we have selected the musical note F as our tonic, implying B♭.   That is why 5th=Bnatural in the E chord has been greyed out - it has become and 'out' note with respect to the scale in use.

Explorer takes its chord notes very simply, from the adjacent bass button with the 3rd are completely ignored. The split chord facility helps you find 'crossed chords' that work in a particular key. In real instrument practice you'll need a '5ths removed' melodeon for this to be effective

Layout of your simulation
→ ¹F ºF♯ ¹A ¹C ¹E ¹F♯ ²A
²B♭¹C♯ ¹E ¹G ²B ²C♯ ²E ²G

20 9 12 15 19 21 24
25 16 19 22 26 28 31 34
Melodeon Explorer's Editor for Rodec is not of the WYSIWYG variety. Rather is uses a like of the constructors (tokens) as 'instructions' as to what button is wanted. So to off-set buttons melodeon rows use tabs '→' (key them in as '>'). Each tab indents/ by half a button width. Seethe pre-sets to see their effect.

Push and pull aspects
→ pull↓ → © A © D
→ →→→→ → © E © C
→ ¹FºF♯ ¹A ¹C ¹E ¹F♯ ²A
²B♭¹C♯ ¹E ¹G ²B ²C♯ ²E ²G

19 0 4 5
15 7 16 3
20 9 12 15 19 21 24 of your G row
25 16 19 22 26 28 31 34 of your D row

Use the special tokens 'push' and 'pull' for appropriate motifs. These may be 'nudged' too, and each is 2 buttons wide. Note how a balancing '→→→→' is used on the second line to maintain alignment. Again, concertina players might prefer these in the middle? Buttons with push/pull notes together are not part of Explorer as its objective is to facilitate chording, and the finding of single direction scale runs.

It is worth noticing the progression of the 'voicing'. And we've toggled that G♭ again, and specified a key of 'F' to remind you that display may change - but that's how you set up a virtual melodeon

Rodec© technical notes

Rodec© is a notation/layout markup method, optimised for squeezebox instruments. It may be 'implemented' in various ways and is in the Public Domain. To avoid cumbersome markup input Rodec regards a row of text containing descriptors as a cipher for a row of musical controls. The other main 'row' tokens used are push/pull tokens for bi-sonoric instruments and ½-button tabs. These facilitate the usual staggering of rows.

There is a necessity to specify octave 'voicing' in a generic markup scheme, and moreover, concertina rows are curved! To enable description Rodec was encoded in UTF-8. Octaveº¹²³* and nudgeꜛ↑↓ꜜ pre- or post-fixes may then be applied to any note, also to push pull icons. These are best kept apart for legibility, and cannot go within the musical notation! Using UTF-8 characters in this way allowed Rodec tokens to remain compact.

Every markup must have one (only) '=' row, which specifies where description text goes into an implementation. "=" started out as the melodeon's bellows! An (optional) '~' row may be used. It adds some inter row space for 'nudging'

Melodeon Explorer© is a web based virtual squeezebox implemention, coded as a Finite State Automaton in XHTML/JavaScript.

ME's sound system uses open source .ogg sound samples from a Guillard saphire melodeon, managed by dynamically generated HTML5 <audio> tags. NB the <audio> of HTML5 are presently still under development, and not expected to be a Web recommendation until 2016. "As of 2013" sound may work in Chrome, Firefox and Opera browsers.

For users who wish to explore beyond the various pre-sets, the following syntax of Rowdex linear tokenised representation of a squeezebox instruments is provided below

ElementSub elements, and effect: Rodec© fundamentally lays out instuments in rows
[instrument] [row] Each line corresponds to a row
[row] (albeit 'curved'!) on the instrument
[row] ..
[row] [token] [token] [token] ... or [=] or [~]
Each token is an instrument button (or other control): a [note] or a [layout] command
Important 'white space' between [tokens] is ignored It is for markup convenience (or 'prettiness')
[=] must occur once, and once only. It is used for text explainations
[~] may be used if needed. It makes a white space row into which button may be nudged.
[layout] Present ME tokens are [push] [pull] (for Anglo/melodeon labels) and [tab]
[tab] displaying (in M.E) as '→', '→→', '→→→' etc. Each [tab] arrow is half a button width.
Tabs may be stacked (i up to 6 '→→→→→→' in M.E)
Generate suitable graphic icons within M.E. [push|pull] may likewise be tabbed and 'nudged'
[note] [ABC_note[ or [DoRéMi_note] The two tone notation systems are considered 'identical' as input
  Standard notationis used, and C♯|D♭, D♯|E♭, F♯|G♭, |G♯|A♭ and A♯|B♭ enharmonics are interchangable
Solfage's Do♯|Ré♭ or La♯|Mi♭ specify 'the same notes'. E♭/Mi♭ display* is generally controled in the simulation
Double up'♯♯/♭♭' to *force a chosen enharmonic display. ie Mi♭♭ could display as B♭ or Mi♭, But never as G♯!
(facility is included for English Concertinas . Their accidentals conventionally relate to adjacent 'white' notes)
º¹²³*[note] prefixes specify octave 'voicing'. Any octave over 3 is prefixed as '*' (type in as eg '2E♭')
A [note]ꜛ↑ or [note]ꜜ↓ postfix 'nudges' a button off its row, to facilitate curved layouts.

Pre- and post-fixing as above is a recommendation - its implementation is 'flexible' in Melodeon Explorer

A♯, G♭, La♯, or Sol♭ - depending on simulator setting
Always displays as La♭ (A♭)
D/Ré: shifted up from the row by ¼-position
Sol/G: shifted ½-position down and voiced in octave 2

Copyright notice All graphics, javascript, css, rodec notation and other code in this facility are © Chris Ryall 2013. Melodeon Explorer
Internet resource is otherwise in the Public Domain. If you spot a bug or have idea to improve M.E please contact me on

Melodeon Explorer Information page © Chris Ryall 2013