Song format - hydrogen-music/hydrogen GitHub Wiki
! WARNING : the content of this page may be out of date (it will be updated soon) !
Hydrogen Song Format
Hydrogen songs are a well-formed, but non-standard XML file. See below for why they are non-standard. There is currently no style sheet, but the schema is something like this, in pseudo-DTD syntax:
song (version, bpm, volume, metronomeVolume, name, author,
notes, license, loopEnabled, mode, humanize_time,
humanize_velocity, swing_factor, instrumentList,
patternList, patternSequence, ladspa)
instrumentList (instrument+)
patternList (pattern+)
patternSequence (group+)
ladspa (fx+)
instrument (id, drumkit, name, volume, isMuted, pan_L, pan_R,
gain, filterActive, filterCutoff, filterResonance,
FX1Level, FX2Level, FX3Level, FX4Level, Attack,
Decay, Sustain, Release, randomPitchFactor,
muteGroup, layer+)
layer (filename, min, max, gain, pitch)
pattern (name, category, size, noteList)
noteList (note+)
note (EMPTY | (position, leadlag, velocity, pan_L, pan_R, pitch
key, length, instrument))
group (patternID+)
fx (name, filename, enabled, volume)
'''Note:''' There are no attributes
Documentation on individual elements:
TO-DO. :-)
BEFORE YOU START HACKING
Remember that the values read and written have always been done by Hydrogen. There's not a lot of input checking there. If you manually create a file, you could potentially crash Hydrogen.
You have been warned.
Non-Standard XML
Hydrogen, internally, uses TinyXML. In the past, TinyXML did not read and write numeric character references correctly. The current devel. version of Hydrogen (to be 0.9.4) will write them correctly, but read them in a way that is compatible with old versions of Hydrogen.