VocalEasel/mma/egs/misc/midinote.mma

264 lines
5.5 KiB
Plaintext
Raw Permalink Normal View History

2011-07-26 22:49:39 +00:00
// This is an example file to show some of the capabilities of
// the MidiNote command.
Include stdpats // this is inserted in case we block out parts of the file
//////////////////////////////////////////////////////////////////////////
// Inserting a few melody notes is simple enough in MMA. For example
// here is a 4 bar bossanova song with a simple melody using a SOLO
// track (actually, this is just a cut/paste of the intro to Julia).
// To demonstrate something simple we play the intro 2x, the 2nd time
// is with the modulation set. Note that we turn it off after the repeat!
Groove BossaNovaIntro
Begin Solo
Voice Piano2
Articulate 110
Volume mf
Octave 5
End
Repeat
Begin Solo Riff
4.c+;8;4;4;
4.c+;8;4;4;
2.d+;4c+;
1c;
End
1 F
2 Dm
3 Gm
4 C7
Begin Solo MidiNote
Offsets=Beats // work in beat offsets, not ticks
Ctrl 1 Modulation 90
End
BeatAdjust 1
Repeatend
Solo MidiNote Ctrl 1 Modulation 0
//////////////////////////////////////////////////////////////////////////
// Pitch Bend
// You can use the pitch bend for interesting effects. Here's an example
// with 2 piano tracks playing in unison, but with the Chord-2 playing
// a bit out of pitch. This is supposed to give a "fuller" sound.
SeqClear
BeatAdjust 1
Begin Chord-1
Voice Piano1
Sequence L2
End
Begin Chord-2
Voice Piano1
Sequence L2
End
Chord-2 MidiNote Offsets=Beats
1 C
2 G
BeatAdjust 1
Chord-1 Midinote PB 1 -20
Chord-2 Midinote PB 1 20
3 C
4 G
Chord-1 Midinote PB 1 0
Chord-2 Midinote PB 1 0
//////////////////////////////////////////////////////////////////////////
// Pitch Bend Range
// Pitch Bend Range can be used for interesting effects. Here we insert
// a single chord and bend it up and down. For this example we are using
// MIDI ticks for offsets.
// Pitch Bend effects ALL currently playing notes in a Midi channel.
SeqClear
BeatAdjust 1
Begin Solo
Voice Flute
Volume f
Octave 5
Articulate 110
Harmony Open
Midinote Offsets=Ticks
End
Solo MidiNote Pbr 20 0,192 0,8000
Solo Midinote Pbr 20 384,576 8000,0
z {1ae+c+;}
Solo MidiNote Pb 0 0
// This is a similar effect using a chord track. The sequence is a long piano tone.
// This time the offsets are given in beats. Note that '1' is the start of the bar.
SeqClear
BeatAdjust 1
Begin Chord
Voice TremoloStrings
Volume f
Octave 5
Articulate 110
Midinote Offsets=Beats
Sequence L1
End
Chord MidiNote PBR 30 1,2 0,8000
Chord Midinote PBR 30 3,4 8000,0
C7 /// our single chord to bend
Chord MidiNote PB 1 0 // tidiness may count in a future life!
//////////////////////////////////////////////////////////////////////////
// Channel Aftertouch
// This inserts a series of aftertouch events (range) over a cascading
// G major chord.
SeqClear
BeatAdjust 1
Groove Rhumba
Begin Solo
Voice Flute
End
Begin Solo MidiNote
Transpose=ON Offsets=Beats Duration=Notes
1 g 100 1+1
2 b 100 1+2.
3 d+ 100 1+2
4 g+ 100 1+4
chatr 50 1,4.9 1,127
End
1 G
2 G
Solo midinote chat 1 0
//////////////////////////////////////////////////////////////////////////
// Note Insert
// Insert actual MIDI note on/off into the stream. This is much easier to do with
// SOLO track notation, but this is an example what you can do, not what you should.
// In this case I've recorded a few bars of my playing on a keyboard (using a piano
// tone) and extracted this into a text file which was then pasted into this file.
// I used mma-extract to generate the data. A few bars of Londonairy Air.
SeqClear
BeatAdjust 1
Keysig Eb
Tempo 80
Groove FolkBallad
Volume ppp
Begin Solo
Voice TremoloStrings
// everything below this is ignored by MidiNote
Volume f
Octave 5
Harmony OpenBelow
Articulate 110
End
Begin Solo MidiNote
// Note the adjust factor of 22. This was calculated by looking at the 2nd
// bar start note (offset 790) and subtracting a full bar of ticks (768)
Offsets=Ticks Duration=Ticks Adjust=-22
// 0
Note 505 62 70 97
Note 599 63 60 90
Note 688 65 68 88
// 1
Note 790 67 67 291
Note 1083 65 63 105
Note 1175 67 63 92
Note 1261 72 63 102
Note 1352 70 56 105
Note 1443 67 59 101
// 2
Note 1543 65 56 103
Note 1643 63 49 111
Note 1741 60 56 304
Note 2043 63 75 99
Note 2139 67 75 78
Note 2215 68 72 88
// 3
Note 2317 70 67 284
Note 2599 72 63 92
Note 2690 70 61 90
Note 2781 67 61 95
Note 2882 63 43 92
Note 2980 67 56 104
// 4
Note 3084 65 53 477
Note 3563 62 67 101
Note 3655 63 61 85
Note 3748 65 75 95
// 5
Note 3849 67 55 283
Note 4135 65 64 102
Note 4222 67 63 107
Note 4320 72 45 86
Note 4401 70 50 90
Note 4492 67 60 94
Note 4587 65 60 104
// 6
Note 4686 63 53 114
Note 4790 60 58 324
Note 5096 62 66 82
Note 5186 63 57 93
Note 5287 65 49 96
// 7
Note 5395 67 40 286
Note 5667 68 56 87
Note 5759 67 58 94
Note 5853 65 53 104
Note 5946 63 52 101
Note 6048 65 50 107
// 8
Note 6145 63 55 600
End
// We've actually inserted the entire melody stuff into the MMA track.
// Since MMA doesn't track bars when doing MIDINOTE stuff our pointer
// is still at the start of the song! So, we can do normal notation for
// the chords.
// If you want to have a bit of fun, add harmony notes at the end of each
// line. This shows how to combine things. Bars 2,3 & 4 have an example commented out.
1 z // pickup bar
2 Eb // {2e;g;}
3 Ab // {2a;e;}
4 Eb Ab Eb // {4e;a;g;e;}
5 F7 / Bb Bb7
6 Eb / / Eb7
8 Ab / / Bb7
9 Eb / / Bb7
10 Eb / z!