OK, if you're REALLY completely lost with the blurb hereunder, you can give a try to the TUTORIAL.
instructionsmusicpad is an online musical notepad which lets you code your musical inspiration in a simple way and generate midi files. Lots of features are already implemented (macros, polyrythms) and lots of others will be added (randomization, midi controllers, sweeps, saves,...)The core of musicpad is a cgi perl script. You can fetch the sourcecode and play around with it. musicpad is not case sensitive, except for dEbUg, and macros. Don't put whitespace inside commands, but use as many whitespaces and new lines as wished between them. NotesA#5/8 : play A# at octave 5 for 1/8notes are : A to G. P for Pause (see also - below) O doesn't play any note, and is used for defining note, octave and/or duration. For example a oA5/16 defines a A5/16 as the default note but doesn't play it. A x would then play that note. Other valid syntax: n5 defines octave 5, o/16 defines duration 1/16, o5/16 defines octave 5 and duration 1/16, oA+/16 defines note A+ and duration 1/16, etc... A+ or A# means A sharp A- or Ab means A flat If you don't include all characteristic for the note, the missing characteristics will be the same as previous note. Example:
8 : A number alone means different things depending on mode:
- : pause of same duration as previous note (or pause) = : the previous note is held for its initial duration (can be used multiple times: x== holds it 3 times longer, x=== 4 times, etc...) X, - and = can be used for defining rythm patterns. No whitespace is needed between those Nxx : play absolute midi note xx (e.g. C5 = 60) N+x or n-x : play new note with +x or -x half-tones relatively to previous note played. Nt+x or nt-x : play new note with +x or -x half-tones relatively to previous note played, but doesn't change the reference note. / : octave +1 \ : octave -1 'X or 'A ... : stress note (no space) ,X or ,A ... : soft note (no space) Ra/b : next notes duration should be multiplied by a/b (allows playing triplets with 4/3 or 2/3 etc. Also used for polyrythms) R1 : back to normal duration [...]: chord. 4 different chord syntaxes are available:
you should take a look at the chords list. Commands...*x or ( )*x : repeat x times m$xx(...) : define macro $xx (NB: m$ lowercase only) mrnd$xx(...) : define random macro $xx; inside the macro, list all possible macros. Everytime you process the song, one macro will be randomly chosen from the list to remplace the random macro. (NB: mrnd$ lowercase only) $xx : play macro $xx ixx : use instrument xx - see GM instruments list below iBD, iSD, ... Use Bass Drum, Snare Drum,... (defines both default note and Channel 10) - see drummap below. Playing standard notes on ch10 also produces drums. chxx : use midi channel xx uxx : (duty) note is played over xx% of normal length - 10 for staccato, 98 by default, 100 max vxx : set velocity to xx (max 127) t+x or t-x : transpose of x half-tones up or down (t0 to cancel transpose) | : next track |0 : back to first track |x : jump to track x (no space between | and x) stressxx : stressed notes will be xx% stronger softxx : soft notes will be xx% softer pitch+x or pitch-x : change pitch of +/- x% (usually 100% = 2 half-tones). pitch0 to center pitch. # : comment (the rest of the line is ignored) loosew,q : add "human" feel to playing; notes hit will vary of +/- w milliseconds around exact time. The q parameter defines how centered notes are: with a q of 1 repartition is random (rectangular distribution), with a higher q notes are more centered on exact time (q=10 is almost always exact time); if you specify q=g, you get a gaussian distribution (ex: loose10,g). A standard value example would be loose20,2 velvarw,q : add another "human" feel to playing; notes velocity will vary of +/- w% around standard velocity. The q parameters defines how centered velocity is: with a q of 1 repartition is random (rectangular distribution), with a higher q notes are more centered on exact velocity (q=10 is almost always exact velocity); if you specify q=g, you get a gaussian distribution (ex: velvar10,g). A standard value example would be velvar10,2 guiton: activate Guitar mode (a number alone means a note with temporary transpose) guitoff: de-activate Guitar mode tomson: activate Tom mode (a number alone means the tom number to be played, on channel 10) tomsoff: de-activate Tom mode ctrla,b : send midi control parameters a,b sysexa,b,c,... : send midi sysex values a,b,c,... struma,b,c : chord strumming parameters - a = delay between notes in milliseconds, b = maximum time to trigger upstrike in milliseconds, c = upstrike volume in %. For a rythm guitar try strum10,300,80 . Parameters b and c are optionnal. tuning[E3,A3,D4,G4,B4,E5] : defines guitar tuning. Global CommandsGlobal Commands are valid for the whole song.tempoxx : define tempo per quarter note (by default 60) resolutionx : define resolution (0 for 96 ppqn, 1 for 192 ppqn, 2 for 384 ppqn, 3 for 1536 ppqn. 192 by default) dutyxx : define default duty of notes (by default 98) velocityxx : define default velocity of notes (by default 100) dEbUg (case sensitive command!) : debug mode, will print out processings - allow you to debug your song... also dEbUgMaX is an even more insanely complete debug mode... globaloosew,q : define default loose parameters for all tracks (see loose above) globalvelvarw,q : define default velvar parameters for all tracks (see velvar above) globalguiton: all instruments are in guitar mode by default some notes
|
quick referencea : note (La)b : note (Si). Following a note: flat c : note (Do) ctrl : send midi control parameters ch : midi channel d : note (Ré) dEbUg : debug mode (case sensitive command) dEbUgMaX : debug overkill mode (case sensitive command) duty : default duty e : note (Mi) f : note (Fa) g : note (Sol) globaloose : define global time randomness globalvelvar : define velocity randomness globalguitmode : guitar mode by default guiton: activate guitar mode guitoff: de-activate guitar mode i : instrument loose : define time randomness m$ : define macro (lowercase only!) mrnd$ : define random macro (lowercase only!) n : play absolute or relative note nt : play temporary relative note o : don't play note p : pause pitch : pitch variation r : duration ratio resolution : song resolution stress : stressed notes definition strum : chord struming soft : soft notes definition sysex : send midi sysex t : transpose tempo : song tempo tomson : tom mode on tomsoff : tom mode off tuning : guitar tuning for chords u : duty v : velocity velocity : default velocity velvar : define velocity randomness x : same note + : Following a note : sharp - : pause same duration. Following a note : flat = : hold note # : comment. Following a note: sharp * : repeat / : define duration (or used in ratio) or octave +1 \ : octave -1 | : change track $ : play macro (see m$) ' : stress note (no space) , : soft note (no space) [...] : chord (see the chords list) some examplesChromatic: o/8 a d e f g a b / cMelodic: o5/16 i27 (c e g e a f b g)*3 c e g a/4 | o/16 i27 (c g / c \ g f / c \ g b)*3 c g / c e/4 Rythm: iBD 4*8 | iSD (P/8 8)*8 | iCH 16*32 Rythm with subtil human feel: globaloose15,2 globalvelvar20,2 iBD 4*8 | iSD (P/8 8)*8 | iCH 16*32 Rythm played by beginner: globaloose50,1 globalvelvar30,1 iBD 4*8 | iSD (P/8 8)*8 | iCH 16*32 Rythm patterns: iB2 o/16 xx-xxx--*4 | iS2 o/16 --x---xx*4 | iHH o/16 -x-x-x-x*4 Polyrythm, triplets: iBD 8*8 | iCH r8/12 8*12 Polyrythm, play 17 over 15: iBD r16/17 16*17 | iCH r16/15 16*15 ... or even simpler: iBD 17*17 | iCH 15*15 ... Playing with macros and track shifts: |0 ch1 o1 i12 | ch2 i12 o1 v75 | ch3 i12 o1 v50 m$1(o/32 c e g e g / c \ g / c e) m$2(|0 $1 | r3/2 p/128 r1 $1 | r5/2 p/128 r1 $1) $2*8 Playing with macros and track shifts, dEbUgMaX mode ! (watch out...): dEbUgMaX |0 ch1 o1 i12 | ch2 i12 o1 v75 | ch3 i12 o1 v50 m$1(o/32 c e g e g / c \ g / c e) m$2(|0 $1 | r3/2 p/128 r1 $1 | r5/2 p/128 r1 $1) $2*8 Hold Notes: o/16 g g g d#======-- f f f d====== Fun with random macros:o6/64 m$1(c) m$2(e) m$3(g) mrnd$4($1 $2 $3) $4*64 Fun with random macros & relative notes: m$1(n+2) m$2(n-1) mrnd$n($1 $2) on40/64 $n*128 Guitar mode : guiton i25 oA3/16 0 4 7 = = = 4 5 2 4 0 0 = = - 11 12 11 = = 12 11 7 9 11 12 0 0 Temporary Transpose : i01 m$1(nt+2) m$2(nt-1) m$3(nt+4) m$4(nt+7) mrnd$n($1 $2 $3 $4) on60/32 (x $n)*128 Pitchs : m$p( P/8 pitch-20 P/16 pitch-40 P/8 pitch-20 P/16 pitch0 P/8 ) |0 ch1 i49 C5/2 D E F G | ch1 $p*5 (note the use of a separate pitch track to be able to pitch a note while it's still playing) Chords (4 different ways) & strumming: see also the "I" project. using the songlist
legal adviceBy using musicpad you abide to the website's policy:
|
drummap
general midi drummap
|
general midi instruments
|
Below, a list of values to use in the ctrla,b command ( a & b between 0 and 127 only).
Note: when two "1st Value" are given (like: 0 / 32), the first is used for the most significant byte (MSB), the second for the least significant byte (LSB). Use the MSB in priority.
1st Value | Controller Type | 2nd Value | Remark |
0 / 32 | Bank Select | 0 to 127 | (not used in minimal GM) |
1 / 33 | Modulation | 0 to 127 | vibrato or tremolo... |
2 / 34 | Breath Controller | 0 to 127 | (not used in minimal GM) |
4 / 36 | Foot Controller | 0 to 127 | (not used in minimal GM) |
5 / 37 | Portamento Time | 0 to 127 | (not used in minimal GM) |
6 / 38 | Data Entry | 0 to 127 | see NRPN/RPN (not used in minimal GM) |
7 / 39 | Main Volume | 0 to 127 | |
8 / 40 | Balance | 0-63=left, 64=center, 65-127=right | (not used in minimal GM) |
10 / 42 | Pan | 0-63=left, 64=center, 65-127=right | |
11 / 43 | Expression Controller | 0 to 127 | |
12 / 44 | Effect Control 1 | 0 to 127 | (not used in minimal GM) |
13 / 45 | Effect Control 2 | 0 to 127 | (not used in minimal GM) |
16 to 19 | General-Purpose Controllers 1 to 4 | 0 to 127 | (not used in minimal GM) |
64 | Damper pedal | 0-63=off, 64-127=on | |
65 | Portamento | 0-63=off, 64-127=on | (not used in minimal GM) |
66 | Sustenuto | 0-63=off, 64-127=on | (not used in minimal GM) |
67 | Soft Pedal | 0-63=off, 64-127=on | (not used in minimal GM) |
68 | Legato Footswitch | 0-63=off, 64-127=on | (not used in minimal GM) |
69 | Hold 2 | 0-63=off, 64-127=on | (not used in minimal GM) |
70 | Sound Controller 1 (variation) | 0 to 127 | (not used in minimal GM) |
71 | Sound Controller 2 (sound) | 0 to 127 | (not used in minimal GM) |
72 | Sound Controller 3 (release time) | 0 to 127 | (not used in minimal GM) |
73 | Sound Controller 4 (attack time) | 0 to 127 | (not used in minimal GM) |
74 | Sound Controller 5 (brilliance) | 0 to 127 | (not used in minimal GM) |
75 to 79 | Sound Controller 6 to 10 | 0 to 127 | (not used in minimal GM) |
80 to 83 | General-Purpose Controllers 5 to 8 | 0-63=off, 64-127=on | (not used in minimal GM) |
84 | Portamento Control | (not used in minimal GM) | |
91 | Effects 1 Depth (reverb/delay) | 0 to 127 | (not used in minimal GM) |
92 | Effects 2 Depth (tremolo) | 0 to 127 | (not used in minimal GM) |
93 | Effects 3 Depth (chorus) | 0 to 127 | (not used in minimal GM) |
94 | Effects 4 Depth (vibrato) | 0 to 127 | (not used in minimal GM) |
95 | Effects 5 Depth (phaser) | 0 to 127 | (not used in minimal GM) |
96 | Data Increment +1 | not used (0) | see NRPN/RPN (not used in minimal GM) |
97 | Data Decrement -1 | not used (0) | see NRPN/RPN (not used in minimal GM) |
99 / 98 | Non-Registered Parameter Number (NRPN) | 0 to 127 | use with 6/38 or 96-97 (not used in minimal GM) |
101 / 100 | Registered Parameter Number (RPN) | 0 to 127 | use with 6/38 or 96-97 (not used in minimal GM) |
120 | All Sound Off | not used (0) | |
121 | All Controller Off | not used (0) | |
122 | Local keyboard on/off | 0-63=off, 64-127=on | |
123 | All Notes Off | not used (0) | |
124 | Midi Mode Omni Off | not used (0) | |
125 | Midi Mode Omni On | not used (0) | |
126 | Midi Mode Mono | not used (0) | |
127 | Midi Mode Poly | not used (0) |
MSB/LSB (101/100) | Description |
0 / 0 | Pitch Bend Sensitivity (MSB = number of semitones, LSB = cents) |
0 / 1 | Fine Tuning (MSB = number of semitones with 64=A440, LSB = cents) |
0 / 2 | Coarse Tuning (MSB = number of semitones with 64=A440, no LSB) |
0 / 3 | Tuning Program Select (part of the MIDI Tuning Standard, not used in minimal GM) |
0 / 4 | Tuning Bank Select (part of the MIDI Tuning Standard, not used in minimal GM) |
127 / 127 | RPN Reset (no data entry needed) |
Example: to set a Fine Tuning of -1.5 half-tones (-2+50%) versus A440, use the following commands: ctrl101,0 ctrl100,1 ctrl6,62 ctrl38,50
musicpad was initially inspired by polymath.cgi. Here is a comparaison of syntaxes on well-chosen polyrythms...
polymath | musicpad |
Meshuggah - New Millenium Cyanide Christ intro | |
(t, 150) (n, CR CH SD BD) ((1 1P*3)*2)*2 |((4P 4*15)*2)*2 |(2P 1*7 2)*2 |((P, 16, (xxx 3 2 2)*2 xxx)*5 (P, 16, xxx 3 2 2 xxx))*2 |
tempo150 ( |0 iCC (1 P*3)*2 | iCH (P/4 x*15)*2 | iSD (P/2 x)*8 | iBD o/16 ((xxxx--x-x-)*2 xxx)*5 xxxx--x-x-xxx ) *2Same with instruments & macros: tempo150 m$BD1(xxxx--x-x-) m$G1(A+/16 A+ A+ / C/8 \ P/16 A+ - A+ -) m$G2(($G1*2 xxx)*5 $G1 xxx) ( |0 iCC (1 P*3)*2 | iCH (P/4 x*15)*2 | iSD (P/2 x)*8 | iBD o/16 ($BD1*2 xxx)*5 $BD1 xxx | ch1 i34 n1 $G2 | ch2 i82 n2 $G2 | ch2 n2 t+7 $G2 ) *2 |
v2.22 - 17 Aug 2006 - minor interface changes v2.21 - 25 Aug 2004 - added tom mode, and tomson / tomsoff commands, and the q=g parameter for loose & velvar v2.2 - 17 Aug 2004 - added chords [...], strum and tuning commands. v2.1 - 16 Aug 2004 - corrected some bugs (WMP error, b as flat...). Added the guitar mode and the nt, pitch, sysex and ctrl commands. v2.0 - 11 Aug 2004 - a new interface with login & save. v1.4 - 10 Aug 2004 - deleted o, changed n to o , n used for new "relative note" command v1.3 - 06 Aug 2004 - added dEbUgMaX, loose and velvar commands v1.2 - 05 Aug 2004 - added dEbUg, '=' and $mrnd commands v1.1 - 04 Aug 2004 - added global commands v1.0 - 03 Aug 2004 - initial release |
musicpad v2.22 © loic prot 2006. largely inspired by polymath.cgi, © jens johansson 2001