now unzips BoosterMusicBooks.zip to the home/Music directory on startup.

git-svn-id: https://svn.code.sf.net/p/pianobooster/code/trunk@128 ba081f5d-443b-49a7-ac4b-446c3f91f371
This commit is contained in:
louisjb 2010-05-08 14:03:55 +00:00
parent 3de0f93f9d
commit 384960a8be
25 changed files with 1305 additions and 148 deletions

View File

@ -0,0 +1,21 @@
X:1
T:Welcome to C Major Chord
M:4/4
L:1/4
K:Cmaj
V: RH1 clef=treble
%%MIDI channel 4
%%MIDI program 1 4
%%MIDI gchordoff
V: LH1 clef=bass
%%MIDI channel 3
%%MIDI program 1 3
%%MIDI gchordoff
%
[V: RH1] | CCCC | EEEE | GGGG | EEEE | C4
[V: LH1] | z4 | z4 | z4 | z4 | z4
[V: RH1] | CCCC | EEEE | GGGG | EEEE | C4
[V: LH1] | z4 | z4 | z4 | z4 | z4
[V: RH1] | [C4E4G4] |
[V: LH1] | z4 |
%

View File

@ -0,0 +1,99 @@
SeqClear
SeqSize 1
Time 4
Timesig 4 4
Begin Plectrum-Guitar
Voice NylonGuitar
Octave 4
Volume m
// Tuning e-- a-- d- g- b- e // A guitar
// Tuning g-- d- a- e // A four string tenor Banjo
// Capo 0 // The fret number of the capo
Sequence { \
1.0 0 - 100 - - 90 -; \
1.5 0 - - - 90 - -; \
2.0 0 - - 90 - 90 -; \
2.5 0 - - - 90 - -; \
3.0 0 - - - - - 90; \
3.5 0 - - - - 90 -; \
4.0 0 - - - 90 - -; \
4.5 0 - - 90 - - -; \
}
End
Begin Drum-HH
Tone ClosedHiHat
Sequence {1 4 80; 2 4 90; 3 4 90; 4 4 90}
End
DefGroove PlectrumFingerPicking
SeqClear
SeqSize 1
Time 4
Timesig 4 4
Begin Plectrum-Guitar
Voice NylonGuitar
Octave 4
Volume m
Sequence { \
1.0 +5 80 80 80 80 80 80; \
2.0 +5 80 80 80 80 80 80; \
3.0 +5 80 80 80 80 80 80; \
4.0 +5 80 80 80 80 80 80; \
}
End
Begin Drum-HH
Tone ClosedHiHat
Sequence {1 4 90; 2 4 90; 3 4 90; 4 4 90}
End
DefGroove PlectrumStrum
Begin Solo-Right
Voice Piano1
Channel 4
End
Begin Solo-Left
Voice Piano1
Channel 3
End
Tempo 90
Timesig 4 4
Groove Metronome4
z
midiInc file=ChordOfCMajor.solo.mid Solo-Left=3 Solo-Right=4 Volume=100
Groove PlectrumFingerPicking
C
Am:5
G:8
Am:5
Groove PlectrumStrum
C
Groove PlectrumFingerPicking
C
Am:5
G:8
Am:5
Groove PlectrumStrum
C
C z! z! z!

View File

@ -0,0 +1,70 @@
// Musical MIDI Accompaniment file for the Piano Booster project
// For more information see: www.pianobooster.sourceforge.net
// Creative Commons license
MidiTName Amazing Grace
Begin Solo-Right
Voice Piano1
Channel 4
End
Begin Solo-Left
Voice Piano1
Channel 3
End
Tempo 87
Groove Metronome3
z
Groove countrywaltz2
Beatadjust 2
midiInc file=AmazingGraceMid.solo.mid Solo-Right=4 Solo-Left=3 Volume=80
Beatadjust -2
1 z
Repeat
2 F
3 F
4 Bb
5 F
6 F
7 F
8 C7
9 C7
10 F
11 F7
12 Bb
13 F
14 F
15 C7
RepeatEnding
16 F
17 F
Groove CountrywaltzIntro
20 Bb
21 C
22 F
23 F / z
Groove CountryWaltz1Sus
RepeatEnd
Groove CountryWaltzEnd
16 F
17 F
Tempo 77
18 Bb C F
19 F
cut -1

View File

@ -0,0 +1,34 @@
X: 1
T: Amazing Grace
Q: "English Waltz " 87
C: Traditional
M: 3/4 % time signature
L: 1/4 % default length
%%staves {RH LH}
V: 1 clef=treble
%%MIDI channel 4
%%MIDI program 1 4
%%MIDI gchordoff
%
V: 2 clef=bass
%%MIDI channel 3
%%MIDI program 1 3
%%MIDI gchordoff
%
K: F % key signature
%
V: 1
z2 C/F/ |: F2 A/F/ | A2 G | F2 D |
C2 C/F/ | F2 A/G/ | A2 c | c3 |
-c2 A/c/ | c2 A/F/ | A2 G | F2 D |
C2 C/F/ | F2 A/F/ | A2 G |[1 F3 |
-F2 z | z3 | z3 | z3 |
z2 C/F/ :|2 F3 | -F2 |]
%
V: 2
z3 |: F,,3 | F,3 | B,,3 |
F,3 | F,,3 | F,3 | C,3 |
-C,3 | F,,3 | F,3 | B,,3 |
F,,3 | F,3 | C,3 |[1 F,,3 |
-F,,3 | B,,3 | C,3 | F,3 |
F,,3 :|2 F,,3 | -F,,2 |]

View File

@ -0,0 +1,34 @@
X: 1
T: Amazing Grace
Q: "English Waltz " 87
C: Traditional
M: 3/4 % time signature
L: 1/4 % default length
%%staves {RH LH}
V: RH clef=treble
%%MIDI channel 4
%%MIDI program 1 4 % Klavier
%%MIDI gchordoff
%
V: LH clef=bass
%%MIDI channel 3
%%MIDI program 1 3 % Klavier
%%MIDI gchordoff
%
K: F % key signature
%
[V: RH] z2 +1+C/+3+F/ |: "F"F2 A/F/ | A2 G |
w: A_ma-zing_ grace, how
[V: LH] z3 |: +1+F,,3 | +5+F,3 |
%
[V: RH] "Bb"F2 +2+D | "F"C2 C/+2+F/ | +1+F2 A/G/ | A2 c | "C7"(c3 |
w: sweet the sound that_ saved a_ wretch like me!
[V: LH] +3+B,,3 | +5+F,3 | +1+F,,3 | +5+F,3 | +4+(C,3 |
%
[V: RH] c2) A/c/ | "F"c2 A/F/ | "F7"+5+A2 G | "Bb"F2 +2+D |
w: _ I_ once was_ lost, but now I'm
[V: LH] C,3) | +1+F,,3 | +5+F,3 | +3+B,,3 |
%
[V: RH] "F"C2 C/+3+F/ | F2 A/F/ | "C7"A2 G |[1 "F"(F3 | F2) +1+C/+3+F/ :|2 "F"(F3 | F2) |]
w: found, Was_ blind, but_ now I see._ * * * *
[V: LH] +1+F,,3 | +5+F,3 | +3+C,3 |[1 +1+(F,,3 | F,,3) :|2 +1+(F,,3 | F,,2) |]

View File

@ -0,0 +1,19 @@
X: 4
T: Easy Clair De La Lune
M:4/4
L:1/4
K:Cmaj
V: RH1 clef=treble
%%MIDI channel 4
%%MIDI program 1 4
%%MIDI gchordoff
V: LH1 clef=bass
%%MIDI channel 3
%%MIDI program 1 3
%%MIDI gchordoff
%
[V: RH1] CCCD | E2D2 | CEDD | C4 |
[V: RH1] CCCD | E2D2 | CEDD | C4 |
[V: RH1] DDDD | E2E2 | EEDD | C4 |
[V: RH1] CCCD | E2D2 | CEDD | C4 |
%

View File

@ -0,0 +1,112 @@
// Musical MIDI Accompaniment file for the Piano Booster project
// For more information see: www.pianobooster.sourceforge.net
// Creative Commons license
MidiTName Easy Clair De La Lune
SeqClear
SeqSize 1
Time 4
Timesig 4 4
Begin Plectrum-Guitar
Voice NylonGuitar
Octave 4
Volume m
// Tuning e-- a-- d- g- b- e // A guitar
// Tuning g-- d- a- e // A four string tenor Banjo
// Capo 0 // The fret number of the capo
Sequence {
1.0 0 5:100 2:80; // On the 1st beat pluck strings 5 + 2
1.5 0 3:80; // pluck string number 3 with a velocity of 80
2.0 0 4:90 2:80; // The 2nd beat of the bar pluck strings 4 + 2
2.5 0 3:80;
3.0 0 1:80;
3.5 0 2:80;
4.0 0 3:80;
4.5 0 4:80;
}
End
Begin Drum-HH
Tone ClosedHiHat
Sequence {1 4 80; 2 4 90; 3 4 90; 4 4 90}
End
DefGroove PlectrumFingerPicking
SeqClear
SeqSize 1
Time 4
Timesig 4 4
Begin Plectrum-Guitar
Voice NylonGuitar
Octave 4
Volume m
Sequence {
1.0 +5 80;
2.0 +5 80;
3.0 +5 80;
4.0 +5 80;
}
End
Begin Drum-HH
Tone ClosedHiHat
Sequence {1 4 90; 2 4 90; 3 4 90; 4 4 90}
End
DefGroove PlectrumStrum
Begin Solo-Right
Voice Piano1
Channel 4
End
Begin Solo-Left
Voice Piano1
Channel 3
End
Tempo 90
Timesig 4 4
Groove Metronome4
z
midiInc file=ClairDeLaLune.solo.mid Solo-Left=3 Solo-Right=4 Volume=100
Groove PlectrumFingerPicking
//Groove PlectrumStrum
C / / G
C / G7 /
Am / G7 /
C
C / / G
C / G7 /
Am / G7 /
C
Dm
C
Em / Dm /
C
C / / G
C / G7 /
Am / G7 /
C
C z! z! z!

View File

@ -0,0 +1,19 @@
X:1
T:Frere Jacques/Brother John
M:4/4
L:1/4
K:Cmaj
V: RH1 clef=treble
%%MIDI channel 4
%%MIDI program 1 4
%%MIDI gchordoff
V: LH1 clef=bass
%%MIDI channel 3
%%MIDI program 1 3
%%MIDI gchordoff
%
[V: RH1] |: CDEC | CDEC | EFG2 | EFG2 |
[V: LH1] |: E,4 | E,4 | C,4 | C,4 |
[V: RH1] G/2A/2G/2F/2 EC | G/2A/2G/2F/2 EC | Cz C2 | Cz C2 :|
[V: LH1] E,4 | E,4 | zG,z2 | zG,z2 :|
%

View File

@ -0,0 +1,110 @@
// Musical MIDI Accompaniment file for the Piano Booster project
// For more information see: www.pianobooster.sourceforge.net
// Creative Commons license
MidiTName Frere Jacques/Brother John
SeqClear
SeqSize 1
Time 4
Timesig 4 4
Begin Plectrum-Guitar
Voice NylonGuitar
Octave 4
Volume m
// Tuning e-- a-- d- g- b- e // A guitar
// Tuning g-- d- a- e // A four string tenor Banjo
// Capo 0 // The fret number of the capo
Sequence {
1.0 0 5:100 2:80; // On the 1st beat pluck strings 5 + 2
1.5 0 3:80; // pluck string number 3 with a velocity of 80
2.0 0 4:90 2:80; // The 2nd beat of the bar pluck strings 4 + 2
2.5 0 3:80;
3.0 0 1:80;
3.5 0 2:80;
4.0 0 3:80;
4.5 0 4:80;
}
End
Begin Drum-HH
Tone ClosedHiHat
Sequence {1 4 80; 2 4 90; 3 4 90; 4 4 90}
End
DefGroove PlectrumFingerPicking
SeqClear
SeqSize 1
Time 4
Timesig 4 4
Begin Plectrum-Guitar
Voice NylonGuitar
Octave 4
Volume m
Sequence { \
1.0 +5 80 80 80 80 80 80; \
2.0 +5 80 80 80 80 80 80; \
3.0 +5 80 80 80 80 80 80; \
4.0 +5 80 80 80 80 80 80; \
}
End
Begin Drum-HH
Tone ClosedHiHat
Sequence {1 4 90; 2 4 90; 3 4 90; 4 4 90}
End
DefGroove PlectrumStrum
Begin Solo-Right
Voice Piano1
Channel 4
End
Begin Solo-Left
Voice Piano1
Channel 3
End
Tempo 90
Timesig 4 4
Groove Metronome4
z
midiInc file=FrereJacques.solo.mid Solo-Left=3 Solo-Right=4 Volume=100
Groove PlectrumFingerPicking
C
C
C
C
C
C
Groove PlectrumStrum
C G C z
C G C z
Groove PlectrumFingerPicking
C
C
C
C
C
C
Groove PlectrumStrum
C G C z
C G C z

View File

@ -0,0 +1,37 @@
X:1
T:Greensleeves
M:3/4
L:1/4
Q: "Allegro" 1/4 = 130 % tempo
K:G
%%staves {RH1 LH1}
V: RH1 clef=treble name="Piano"
%%MIDI channel 4
%%MIDI program 1 4
%%MIDI gchordoff
V: LH1 clef=bass
%%MIDI channel 3
%%MIDI program 1 3
%%MIDI gchordoff
%
[V: RH1] z2E |: "Em"G2A | BcB | "D"A2F | DEF |
w: A las, my love, _ you do me wrong _ To
[V: LH1] z3 |: E,3 | D,3 | D,3 | F,3 |
[V: RH1] "Em"G2E | E^DE | "B"F2^D | B,2E | "Em"G2A | B c B |
w: cast me off _ dis-court-eous-ly, For I have loved_ you
[V: LH1] E,3 | B,,3 | B,,3 | ^D,3 | B,,3 | B,,3 |
[V: RH1] "D"A2F | DEF | "Em"GFE | "B7"^D^CD | "Em"E2E | E2z |
w: so_ long,_ De-light_ing in_your com-pa-ny.
[V: LH1] D,3 | B,,3| B,,3 | B,,3 | B,,3 | E,3 |
[V: RH1] "G"d3 | d^cB | "D"A2F | DEF | "Em"G2E | E^DE |
w: Green-sleeves* was all my joy,__ Green*-sleeves was
[V: LH1] G,3 | D,3 | D,3 | F,3 | E,3 | B,,3 |
[V: RH1] "B"F2^D | B,2z | "G"d3 | d^cB | "D"A2F | DEF |
w: my de-light, Green-sleeves, was my heart of gold,_ And
[V: LH1] B,,3 | ^D,3 | G,3 | D,3 | D,3 | F,3 |
[V: RH1] "Em"GFE | "B7"^D^CD | "Em"E3 |[1 E2 E :|2 E3 |]
w: who but my la_dy Green-sleeves.
[V: LH1] E,3 | F,3 | E,3 |[1 B,,3 :|2 B,,3|]
%

View File

@ -0,0 +1,128 @@
// Musical MIDI Accompaniment file for the Piano Booster project
// For more information see: www.pianobooster.sourceforge.net
// Creative Commons license
MidiTName Greensleeves
//KeySig E Minor
KeySig G Major
TimeSig 3 4
Tempo 115
Groove Metronome3
z!
z
//Solo Channel 4 // the Right hand piano sound
//Melody Channel 3 // the Left hand piano track
// create 2 tracks for the left/right piano in the greensleeves midi track
// Note: this is changing the voicing!! Example only!!!
Begin Solo-right
Voice Piano1
Channel 4
End
Begin Solo-Left
Voice Piano1
Channel 3
End
Begin Solo-RightDoubleUp
Voice JazzGuitar
Channel 5
End
Begin Solo-LeftDoubleUp
Voice JazzGuitar
Channel 6
End
/// The include file has several tracks. We're interested in 3 and 4 ... the left/right
/// hands. These are read and assigned to the solo-left/right MMA tracks. Because of the
/// MMA strips off the two beats of silence at the start in the included file
/// we adjust the MMA internal pointer to get it in the
/// the correct position.
Beatadjust 2
midiInc file=Greensleeves.solo.mid Solo-Right=4 Solo-Left=3 Volume=80
//midiInc file=Greensleeves.solo.mid Solo-Right=4 Solo-Left=3 Volume=80 stripsilence=off
BeatAdjust -2 // reset beat pointer. Important!
Groove CountryWaltz
0 z z Em
1 Em
2 G
3 D
4 Bm
5 Em
6 /
7 B
8 /
9 Em
10 G
11 D
12 Bm
13 Em
14 B7
15 Em
16 /
Groove CountryWaltzSus
17 G
18 /
19 D
20 Bm
21 Em
22 /
23 B
24 /
25 G
26 /
27 D
28 Bm
29 Em
30 B7
31 Em
32 /
Groove CountryWaltz1
Arpeggio Volume 25
1 Em
2 /
3 D
4 /
5 Em
6 /
7 B
8 /
9 Em
10 /
11 D
12 /
13 Em
14 B7
15 Em
16 /
Groove CountryWaltz1Sus
Arpeggio Volume 25
17 G
18 /
19 D
20 /
21 Em
22 /
23 B
24 /
25 G
26 /
27 D
28 /
29 Em
30 B7
31 Em
Arpeggio Volume pppp
32 Em EmzA EmzA
Groove CountryWaltzEnd
33 /
Groove CountryWaltzEnd
33 -EmzD z! z!

View File

@ -0,0 +1,18 @@
X:77
T:Lavender's Blue
M:3/4
L:1/4
K:Cmaj
V: RH1 clef=treble
%%MIDI channel 4
%%MIDI program 1 4
%%MIDI gchordoff
V: LH1 clef=bass
%%MIDI channel 3
%%MIDI program 1 3
%%MIDI gchordoff
%
[V: RH1] |: C G G | G F/E/D/C/ | C A A | A3 |
[V: RH1] C G G | G F/E/D/C/ | F E D | C3 :|
%

View File

@ -0,0 +1,158 @@
// Musical MIDI Accompaniment file for the Piano Booster project
// For more information see: www.pianobooster.sourceforge.net
// Creative Commons license
MidiTName Lavender's Blue
Begin Plectrum-Guitar
Voice NylonGuitar
Octave 4
Volume m
// Tuning e-- a-- d- g- b- e // A guitar
// Tuning g-- d- a- e // A four string tenor Banjo
// Capo 0 // The fret number of the capo
Sequence {
1.0 0 5:100 2:80; // On the 1st beat pluck strings 5 + 2
1.5 0 3:80; // pluck string number 3 with a velocity of 80
2.0 0 4:90 2:80; // The 2nd beat of the bar pluck strings 4 + 2
2.5 0 3:80;
3.0 0 1:80;
3.5 0 2:80;
}
End
Begin Plectrum-Pattern1
Voice NylonGuitar
Octave 4
Volume m
Sequence { 1.0 0 6:110; 1.5 0 3:80; 2.0 0 2:90; 2.5 0 1:80; 3.0 0 4:80; 3.5 0 3:80; }
End
Begin Plectrum-Pattern2
Voice NylonGuitar
Octave 4
Volume m
Sequence { 1.0 0 6:110; 1.5 0 3:80; 2.0 0 2:90; 2.5 0 1:80; 3.0 0 2:80; 3.5 0 3:80; }
End
Begin Plectrum-Pattern3
Voice NylonGuitar
Octave 4
Volume m
Sequence { 1.0 0 6:110; 1.5 0 3:80; 2.0 0 2-1:90; 2.5 0 3:80; 3.0 0 5:80; 3.5 0 3:80; }
End
Begin Plectrum-Pattern4
Voice NylonGuitar
Octave 4
Volume m
Sequence { 1.0 0 6:110; 2.0 0 3-1:90; 3.0 0 3-1:80; } { 1.0 0 5:110; 2.0 0 3-1:90; 3.0 0 3-1:80; }
End
Begin Plectrum-Pattern5
Voice NylonGuitar
Octave 4
Volume m
Sequence { 1.0 0 6:110; 2.0 0 3:90; 3.0 0 2-1:80; } { 1.0 0 5:110; 2.0 0 3:90; 3.0 0 2-1:80; }
End
SeqClear
SeqSize 2
Time 3
Timesig 3 4
Begin Plectrum-Pattern5
Voice NylonGuitar
Octave 4
Volume m
Sequence { 1.0 0 6:100; 2.0 0 3:90; 3.0 0 2-1:80; } { 1.0 0 5:100; 2.0 0 3:90; 3.0 0 2-1:80; }
End
Begin Drum-HH
Tone ClosedHiHat
Sequence {1 4 80; 2 4 90; 3 4 90}
End
DefGroove PlectrumFingerPicking1
Begin Bass-Simple
Voice SlowStrings
Volume m
Octave 5
Sequence {1 2 1 100 ; 3 8 1 90 }
End
SeqClear
SeqSize 2
Time 3
Timesig 3 4
Begin Plectrum-Pattern2
Voice NylonGuitar
Octave 4
Volume m
Sequence { 1.0 0 6:100; 1.5 0 3:80; 2.0 0 2:90; 2.5 0 1:80; 3.0 0 2:80; 3.5 0 3:80; }
End
Begin Drum-HH
Tone ClosedHiHat
Sequence {1 4 80; 2 4 90; 3 4 90}
End
DefGroove PlectrumFingerPicking2
Begin Solo-Right
Voice Piano1
Channel 4
End
Begin Solo-Left
Voice Piano1
Channel 3
End
Tempo 90
Timesig 3 4
Groove Metronome3
z
midiInc file=LavendersBlue.solo.mid Solo-Left=3 Solo-Right=4 Volume=100
Groove PlectrumFingerPicking1
C
C
F
F
C
C
G7
C
Groove PlectrumFingerPicking2
C
C
F
F
C
C
G7
C

View File

@ -0,0 +1,25 @@
X: 1
T: Scarborough Fair
M: 3/4
L: 1/4
Q:1/4=30
K:C
V:1
V: RH1 clef=treble
%%MIDI channel 4
%%MIDI program 1 4
%%MIDI gchordoff
V: LH1 clef=bass
%%MIDI channel 3
%%MIDI program 1 3
%%MIDI gchordoff
%
[V: RH1] |: D2D | A2A | E3/2F/E | D3 | zAc |
[V: LH1] |: z3 | z3 | z3 | z3 | z3 |
[V: RH1] d2c | ABG | A3- | Azd | d2d |
[V: LH1] z3 | z3 | z3 | z3 | z3 |
[V: RH1] c2A | AGF | E/C/-C2 |-C3 |
[V: LH1] z3 | z3 | z3 | z3 |
[V: RH1] D2A | G2F | EDC | D3- | D3 :|
[V: LH1] z3 | z3 | z3 | z3 | z3 :|
%

View File

@ -0,0 +1,154 @@
// Musical MIDI Accompaniment file for the Piano Booster project
// For more information see: www.pianobooster.sourceforge.net
// Creative Commons license
MidiTName Scarborough Fair
SeqClear
SeqSize 4
Time 3
Timesig 3 4
DefGroove GuitarStrum3
SeqClear
SeqSize 4
Time 3
Timesig 3 4
Begin Plectrum-GuitarStrum
Voice NylonGuitar
Capo 8
Volume p
Sequence {
1.0 +7 6-4:90 3-1:100;
2.0 +5 6-1:80;
2.5 -5 4-1:50;
3.0 +5 6-1:80;
3.5 -5 4-1:50;
}
End
Begin Bass
Sequence {1 2. 1 100; 3 4. 1 90; } {1 2. 5 100; 3 4. 5 90; }
//Voice PickedBass
Voice AcousticBass
Octave 3
Articulate 90
Volume f
End
Begin Drum Define
D1 1 8 90 ; 2.5 8 90 ; 3 8 90
S1 2 8 90 ; 3 8 90
CH1 1 8 90
C1 CH1 * 6
End
//Begin Drum-Kick
// Tone KickDrum1
// Sequence D1
//End
//Begin Drum-Snare
// Tone SnareDrum1
// Sequence S1
//End
Begin Drum
Sequence {1 4 100 ; 2 4 80 ; 3 4 80}
Tone ClosedHiHat
Rtime 10
Rvolume 10
Volume mp
End
//Begin Plectrum
// Voice NylonGuitar
// instrument Guitar
// Tuning e a d g b e
// capo 2 // on the second fret
// Strumming /Position strum strings volume mute 1::6 80::80:80:80:
//plectrum 1 +5 6 ; 2 +5 6; 2.5 -5 4;
DefGroove GuitarStrum2
Begin Solo-Right
Voice Piano1
Channel 4
End
Begin Solo-Left
Voice Piano1
Channel 3
End
KeySig C
TimeSig 3 2
Tempo 110
Groove Metronome3
z!
z
midiInc file=ScarboroughFair.solo.mid Solo-Right=4 Solo-Left=3 Volume=100
// midiInc file="scarborough Fair.mid" Solo=1 Volume=70 octave=-1
Groove GuitarStrum2
//Groove CountryWaltz
1 Dm
2 /
3 C
4 Dm
5 F
6 Dm
7 F
8 A
9 /
10 Dm
11 F
12 /
13 C
14 /
15 Dm
16 C
17 Am
18 Dm
19 /
Groove CountryWaltz1Sus
1 Dm
2 /
3 C
4 Dm
5 F
6 Dm
7 F
8 A
9 /
10 Dm
11 F
12 /
13 C
14 /
15 Dm
16 C
17 Am
18 Dm
Groove CountryWaltzEnd
33 /
Groove CountryWaltzEnd
33 -DmzD z! z!

View File

@ -0,0 +1,21 @@
X: 1
T:Skip to My Lou
M:4/4
L:1/4
K:Cmaj
V:RH1 clef=treble
%%MIDI channel 4
%%MIDI program 1 4
%%MIDI gchordoff
%
V: LH1 clef=bass
%%MIDI channel 3
%%MIDI program 1 3
%%MIDI gchordoff
[V:RH1]|: EEz2 | EEG2 | DD z2 | DDF2 | EEz2 | EEG2 | DE/2F/2ED | z4 |
[V:LH1]|: z2CC | z4 | z2 B,B, | z4 | z2CC | z4 | z4 | C2C2 |
[V:RH1] E2z2 | EEG2 | D2z2 | DDF2 | E2z2 | EEG2 | DE/2F/2ED | z4 :|
[V:LH1] z2C2 | z4 | z2B,2 | z4 | z2C2 | z4 | z4 | C2C2:|
%

View File

@ -0,0 +1,82 @@
// Musical MIDI Accompaniment file for the Piano Booster project
// For more information see: www.pianobooster.sourceforge.net
// Creative Commons license
MidiTName Skip to My Lou
Bass Channel 8
KeySig C
//TimeSig 2 4
//Time 2
Tempo 110
Begin Solo-Right
Voice Piano1
Channel 4
End
Begin Solo-Left
Voice Piano1
Channel 3
End
Groove Metronome4
SwingMode Off
z!
z
//Groove Folk
Groove GuitarBallad
//Groove FolkArticulated
//Groove Ballad
//Groove twi.mma
//Groove Main-A
MIDIinc file=SkipToMyLoo.solo.mid Solo-Right=4 Solo-Left=3 Volume=120
Groove GuitarBallad
1 C
2 C
3 G
4 G
5 C
6 C
7 G
8 C
Groove GuitarBallad1
Groove FolkArticulated
9 C
10 C
11 G
12 G
13 C
14 C
15 G
16 C
Groove GuitarBalladSus
1 C
2 C
3 G
4 G
5 C
6 C
7 G
8 C
Groove GuitarBallad1Sus
//Groove FolkArticulatedSus
9 C
10 C
11 G
12 G
13 C
14 C
15 G
Groove GuitarBalladEnd
16 C
/ z! z!

View File

@ -0,0 +1,8 @@
<body bgcolor=#FFFFC0>
<p>For <b>Skip To My Loo</b> start with both thumbs on <b>middle C</b> and then use one finger for each white note on the piano.
So for the first two notes which are <b>E</b> of the piece you would use the middle finger of your right hand </p>
<p> This piece introucdes the use of two hands as the melody goes across <b>middle C</b></p>
<p>Note: <i>If you are a complete beiginner try the pieces from the beginner book first</i></p>
</body>

View File

@ -0,0 +1 @@
Hello from <b>Skip to my looooooooo ja</b>

View File

@ -97,7 +97,7 @@ class songDetails:
os.remove("{0}001.eps".format(tempName ))
os.system("cp \"{0}.abc\" {1}.abc".format(srcName, webName))
os.system("cp \"{0}.abc\" {1}.abc".format(abcMidiName, webName))
os.system("cp \"{0}.mma\" {1}.mma".format(srcName, webName))
os.system("cp \"{0}.pdf\" {1}.pdf".format(outputName, webName))
os.system("cp \"{0}.mid\" {1}.mid".format(outputName, webName))
@ -141,62 +141,64 @@ def addSong(songs, directory, index, name):
def runMain(argv):
if len(argv) > 1:
outputRootDir = "Output"
zipFileName = "BoosterMusicBooks"
MUSIC_RELEASE = "1"
outputDir = outputRootDir + '/' + zipFileName + MUSIC_RELEASE
webDir = outputRootDir + '/' + "MusicWeb"
tempDir = outputRootDir + '/' + "Temp"
if len(argv) > 3:
print "usage: makescore args"
return
if not os.path.isdir("Output"):
os.mkdir("Output")
if not os.path.isdir(outputDir):
os.mkdir(outputDir)
if not os.path.isdir(webDir):
os.mkdir(webDir)
if not os.path.isdir(tempDir):
os.mkdir(tempDir)
outputRootDir = "Output"
zipFileName = "BoosterMusicBooks"
MUSIC_RELEASE = "1"
outputDir = outputRootDir + '/' + zipFileName + MUSIC_RELEASE
webDir = outputRootDir + '/' + "MusicWeb"
tempDir = outputRootDir + '/' + "Temp"
musicHtmlPage = webDir + "/music.html"
#musicHtmlPage = "music.html"
if os.path.isfile(musicHtmlPage):
os.remove(musicHtmlPage)
os.system("cp music.html.start {0}".format(webDir + "/" + "Beginner" + ".html"))
os.system("cp music.html.start {0}".format(webDir + "/" + "Booster" + ".html"))
if not os.path.isdir("Output"):
os.mkdir("Output")
if not os.path.isdir(outputDir):
os.mkdir(outputDir)
if not os.path.isdir(webDir):
os.mkdir(webDir)
if not os.path.isdir(tempDir):
os.mkdir(tempDir)
musicHtmlPage = webDir + "/music.html"
#musicHtmlPage = "music.html"
if os.path.isfile(musicHtmlPage):
os.remove(musicHtmlPage)
os.system("cp music.html.start {0}".format(webDir + "/" + "Beginner" + ".html"))
os.system("cp music.html.start {0}".format(webDir + "/" + "Booster" + ".html"))
songs=[]
addSong(songs, "Beginner", 1, "ChordOfCMajor")
addSong(songs, "Booster", 1, "ClairDeLaLune")
addSong(songs, "Booster", 2, "LavendersBlue")
addSong(songs, "Booster", 3, "SkipToMyLoo")
addSong(songs, "Booster", 4, "FrereJacques")
addSong(songs, "Booster", 5, "ScarboroughFair")
addSong(songs, "Booster", 6, "Greensleeves")
addSong(songs, "Booster", 7, "AmazingGrace")
songs=[]
addSong(songs, "Beginner Course", 1, "ChordOfCMajor")
addSong(songs, "Booster Music", 1, "ClairDeLaLune")
addSong(songs, "Booster Music", 2, "LavendersBlue")
addSong(songs, "Booster Music", 3, "SkipToMyLoo")
addSong(songs, "Booster Music", 4, "FrereJacques")
addSong(songs, "Booster Music", 5, "ScarboroughFair")
addSong(songs, "Booster Music", 6, "Greensleeves")
addSong(songs, "Booster Music", 7, "AmazingGrace")
result = False
for n,song in enumerate(songs):
result = song.createMusic(outputDir, webDir, tempDir)
if not result:
break
result = False
for n,song in enumerate(songs):
result = song.createMusic(outputDir, webDir, tempDir)
if not result:
break
if result:
os.system("cat music.html.end >>{0}".format(webDir + "/" + "Beginner" + ".html"))
os.system("cat music.html.end >>{0}".format(webDir + "/" + "Booster" + ".html"))
if result:
os.system("cat music.html.end >>{0}".format(webDir + "/" + "Beginner" + ".html"))
os.system("cat music.html.end >>{0}".format(webDir + "/" + "Booster" + ".html"))
#cmd = "gzip \"{0}\" >\"{1}.zip\"" .format(outputDir, outputDir )
if os.path.isfile("{0}/{1}.zip".format(outputRootDir, zipFileName )):
os.remove("{0}/{1}.zip".format(outputRootDir, zipFileName ))
cmd = "cd {0};zip -r {1}.zip \"{2}\" " .format(outputRootDir, zipFileName, zipFileName + MUSIC_RELEASE )
print cmd
if os.system(cmd) != 0:
return False
#cmd = "gzip \"{0}\" >\"{1}.zip\"" .format(outputDir, outputDir )
cmd = "cd {0};zip -r {1}.zip \"{2}\" " .format(outputRootDir, zipFileName, zipFileName + MUSIC_RELEASE )
print cmd
if os.system(cmd) != 0:
return False
else:
print "usage: makescore args"
if __name__ == "__main__":
runMain(sys.argv)

View File

@ -106,9 +106,6 @@ QtWindow::QtWindow()
m_sidePanel->init(m_song, m_song->getTrackList(), m_topBar);
m_topBar->init(m_song, m_song->getTrackList());
createActions();
createMenus();
readSettings();
QWidget *centralWin = new QWidget();
centralWin->setLayout(mainLayout);
@ -148,6 +145,10 @@ QtWindow::QtWindow()
m_settings->loadSettings();
createActions();
createMenus();
readSettings();
show();
}
@ -311,9 +312,17 @@ void QtWindow::createActions()
m_setupKeyboardAct->setStatusTip(tr("Change the piano keybaord settings"));
connect(m_setupKeyboardAct, SIGNAL(triggered()), this, SLOT(showKeyboardSetup()));
m_toggleSidePanelAct = new QAction(tr("&Show/Hide the Side Panel"), this);
m_toggleSidePanelAct->setShortcut(tr("F11"));
connect(m_toggleSidePanelAct, SIGNAL(triggered()), this, SLOT(toggleSidePanel()));
m_fullScreenStateAct = new QAction(tr("&Fullscreen"), this);
m_fullScreenStateAct->setShortcut(tr("F11"));
m_fullScreenStateAct->setCheckable(true);
connect(m_fullScreenStateAct, SIGNAL(triggered()), this, SLOT(onFullScreenStateAct()));
m_sidePanelStateAct = new QAction(tr("&Show the Side Panel"), this);
m_sidePanelStateAct->setShortcut(tr("F12"));
m_sidePanelStateAct->setCheckable(true);
m_sidePanelStateAct->setChecked(true);
connect(m_sidePanelStateAct, SIGNAL(triggered()), this, SLOT(toggleSidePanel()));
m_setupPreferencesAct = new QAction(tr("&Preferences ..."), this);
m_setupPreferencesAct->setShortcut(tr("Ctrl+P"));
@ -352,7 +361,8 @@ void QtWindow::createMenus()
m_fileMenu->addAction(m_exitAct);
m_viewMenu = menuBar()->addMenu(tr("&View"));
m_viewMenu->addAction(m_toggleSidePanelAct);
m_viewMenu->addAction(m_sidePanelStateAct);
m_viewMenu->addAction(m_fullScreenStateAct);
m_songMenu = menuBar()->addMenu(tr("&Song"));
m_songMenu->addAction(m_songDetailsAct);

View File

@ -103,7 +103,14 @@ private slots:
void toggleSidePanel()
{
m_sidePanel->setVisible(!m_sidePanel->isVisible());
m_sidePanel->setVisible(m_sidePanelStateAct->isChecked());
}
void onFullScreenStateAct () {
if (m_fullScreenStateAct->isChecked())
showFullScreen();
else
showNormal();
}
void enableFollowTempo()
@ -175,7 +182,8 @@ private:
QAction *m_songPlayAct;
QAction *m_setupMidiAct;
QAction *m_setupKeyboardAct;
QAction *m_toggleSidePanelAct;
QAction *m_sidePanelStateAct;
QAction *m_fullScreenStateAct;
QAction *m_setupPreferencesAct;
QAction *m_songDetailsAct;

View File

@ -363,102 +363,11 @@ void CSettings::writeSettings()
saveXmlFile();
}
void CSettings::loadSettings()
{
unzipBootserMusicBooks();
// Set default values
const int MUSIC_RELEASE = 1;
if (value("PianoBooster/MusicRelease", 0).toInt() < MUSIC_RELEASE)
{
QDir destMusicDir;
QString resourceDir;
resourceDir = QApplication::applicationDirPath() + "/music/";
destMusicDir.setPath(QDir::homePath() );
if (!QFile::exists(resourceDir))
{
#ifdef Q_OS_LINUX
resourceDir = QApplication::applicationDirPath() + "/../share/" + QSTR_APPNAME + "/music/";
#endif
#ifdef Q_OS_DARWIN
resourceDir = QApplication::applicationDirPath() + "/../Resources/music";
#endif
}
QFileInfo zipFile(resourceDir + "BoosterMusicBooks.zip");
const QString MUSIC_DIR_NAME("Music");
ppLogTrace("xx %s", qPrintable(zipFile.filePath()));
if (zipFile.exists() )
{
ppLogTrace("xx2");
if (!QDir(destMusicDir.path() + "/" + MUSIC_DIR_NAME).exists())
{
destMusicDir.mkdir(MUSIC_DIR_NAME);
}
destMusicDir.setPath(destMusicDir.path() + "/" + MUSIC_DIR_NAME);
QProcess unzip;
unzip.start("unzip", QStringList() << "-o" << zipFile.filePath() << "-d" << destMusicDir.path() );
ppLogInfo(qPrintable("running unzip -o " + zipFile.filePath() + " -d " + destMusicDir.path()) );
char buf[1024];
while (true)
{
qint64 lineLength = unzip.readLine(buf, sizeof(buf));
if (lineLength <= 0)
break;
ppLogInfo(buf);
// the line is available in buf
}
if (unzip.waitForFinished())
{
setCurrentSongName(destMusicDir.path() + "/BoosterMusicBooks" + QString::number(MUSIC_RELEASE) + "/Booster/01-ClairDeLaLune.mid");
setValue("PianoBooster/MusicRelease", MUSIC_RELEASE);
}
else
{
ppLogError("unzip failed");
}
}
/*
srcMusicDir.setPath(resourceDir); // FIXME
srcMusicDir.setFilter(QDir::Files);
QFileInfoList fileNames = srcMusicDir.entryInfoList();
const QString MUSIC_DIR_NAME("PianoBoosterBooks");
QDir des(QDir::homePath() + "/" + MUSIC_DIR_NAME);
if (!QDir(destMusicDir.path() + "/" + MUSIC_DIR_NAME).exists())
{
destMusicDir.mkdir(MUSIC_DIR_NAME);
}
destMusicDir.setPath(destMusicDir.path() + "/" + MUSIC_DIR_NAME);
for (int i = 0; i < fileNames.size(); i++)
{
if ( fileNames.at(i).fileName().endsWith(".mid", Qt::CaseInsensitive ) )
{
//QFileInfo destFile(destMusicDir, QFileInfo(fileNames.at(i)).fileName());
QFile::copy(fileNames.at(i).filePath(), destMusicDir.path() + "/" + fileNames.at(i).fileName());
if (i==2)
openSongFile( destMusicDir.path() + "/" + fileNames.at(i).fileName() );
}
}
*/
}
setValue("PianoBooster/Version",PB_VERSION);
setDefaultValue("ShortCuts/LeftHand", "F2");
setDefaultValue("ShortCuts/BothHands","F3");
@ -477,6 +386,83 @@ void CSettings::loadSettings()
}
void CSettings::unzipBootserMusicBooks()
{
// Set default values
const int MUSIC_RELEASE = 1;
const QString ZIPFILENAME("BoosterMusicBooks.zip");
if (value("PianoBooster/MusicRelease", 0).toInt() < MUSIC_RELEASE)
{
QString resourceDir = QApplication::applicationDirPath() + "/../music/";
ppLogTrace("resourceDir1 %s", qPrintable(resourceDir));
if (!QFile::exists(resourceDir + ZIPFILENAME))
resourceDir = QApplication::applicationDirPath() + "/../../music/";
ppLogTrace("resourceDir2 %s", qPrintable(resourceDir));
if (!QFile::exists(resourceDir + ZIPFILENAME))
{
#ifdef Q_OS_LINUX
resourceDir = QApplication::applicationDirPath() + "/../share/" + QSTR_APPNAME + "/music/";
#endif
#ifdef Q_OS_DARWIN
resourceDir = QApplication::applicationDirPath() + "/../Resources/music/";
#endif
}
ppLogInfo(qPrintable("applicationDirPath=" + QApplication::applicationDirPath()));
ppLogTrace("resourceDir3 %s", qPrintable(resourceDir));
QFileInfo zipFile(resourceDir + ZIPFILENAME);
ppLogTrace("xx %s", qPrintable(zipFile.filePath()));
const QString MUSIC_DIR_NAME("Music");
QDir destMusicDir;
destMusicDir.setPath(QDir::homePath() );
if (!zipFile.exists() )
{
ppLogError(qPrintable("Cannot find " + ZIPFILENAME));
return;
}
if (!QDir(destMusicDir.path() + "/" + MUSIC_DIR_NAME).exists())
{
destMusicDir.mkdir(MUSIC_DIR_NAME);
}
destMusicDir.setPath(destMusicDir.path() + "/" + MUSIC_DIR_NAME);
QProcess unzip;
unzip.start("unzip", QStringList() << "-o" << zipFile.filePath() << "-d" << destMusicDir.path() );
ppLogInfo(qPrintable("running unzip -o " + zipFile.filePath() + " -d " + destMusicDir.path()) );
char buf[1024];
while (true)
{
qint64 lineLength = unzip.readLine(buf, sizeof(buf));
if (lineLength <= 0)
break;
ppLogInfo(buf);
// the line is available in buf
}
if (unzip.waitForFinished())
{
setCurrentSongName(destMusicDir.path() + "/BoosterMusicBooks" + QString::number(MUSIC_RELEASE) + "/Booster Music/01-ClairDeLaLune.mid");
setValue("PianoBooster/MusicRelease", MUSIC_RELEASE);
}
else
{
ppLogError("unzip failed");
}
}
}
void CSettings::setCurrentSongName(const QString & name)
{

View File

@ -72,6 +72,7 @@ public:
QStringList getSongList();
void writeSettings();
void loadSettings();
void unzipBootserMusicBooks();
QString getCurrentSongLongFileName()
{
if (getCurrentSongName().isEmpty())