Skip to content

Instantly share code, notes, and snippets.

@tclamb
Created April 18, 2014 19:06
Show Gist options
  • Save tclamb/11059624 to your computer and use it in GitHub Desktop.
Save tclamb/11059624 to your computer and use it in GitHub Desktop.
Bach's Invention in C Major, BWV 772
#define C4_ 3821
#define Db4_ 3607
#define D4_ 3404
#define Eb4_ 3213
#define E4_ 3033
#define F4_ 2862
#define Gb4_ 2702
#define G4_ 2550
#define Ab4_ 2407
#define A4_ 2272
#define Bb4_ 2144
#define B4_ 2024
#define C5_ 1910
#define Db5_ 1803
#define D5_ 1702
#define Eb5_ 1606
#define E5_ 1516
#define F5_ 1431
#define Gb5_ 1350
#define G5_ 1275
#define Ab5_ 1203
#define A5_ 1135
#define Bb5_ 1072
#define B5_ 1011
#define C6_ 955
#define Db6_ 901
#define D6_ 850
#define Eb6_ 803
#define E6_ 757
#define F6_ 715
#define Gb6_ 675
#define G6_ 637
#define Ab6_ 601
#define A6_ 567
#define Bb6_ 535
#define B6_ 505
#define C7_ 477
#define bpm (72.)
#define dur (1000. * 60. / bpm)
#define quarterNote (dur)
#define halfNote (2*dur)
#define wholeNote (4*dur)
#define eighthNote (dur/2)
#define sixteenthNote (dur/4)
#define thirtySecondNote (dur/8)
#define thirtySecondTriplet (dur/12)
typedef struct {
uint16_t pitch;
uint16_t duration;
} note;
note bachRight[] = {
{ 0, sixteenthNote },
{ C5_, sixteenthNote },
{ D5_, sixteenthNote },
{ E5_, sixteenthNote },
{ F5_, sixteenthNote },
{ D5_, sixteenthNote },
{ E5_, sixteenthNote },
{ C5_, sixteenthNote },
{ G5_, eighthNote },
{ C6_, eighthNote },
{ C6_, thirtySecondTriplet },
{ B5_, thirtySecondTriplet },
{ C6_, thirtySecondTriplet },
{ B5_, sixteenthNote },
{ C6_, eighthNote },
{ D6_, sixteenthNote },
{ G5_, sixteenthNote },
{ A5_, sixteenthNote },
{ B5_, sixteenthNote },
{ C6_, sixteenthNote },
{ A5_, sixteenthNote },
{ B5_, sixteenthNote },
{ G5_, sixteenthNote },
{ D6_, eighthNote },
{ G6_, eighthNote },
{ G6_, thirtySecondTriplet },
{ F6_, thirtySecondTriplet },
{ G6_, thirtySecondTriplet },
{ F6_, sixteenthNote },
{ G6_, eighthNote },
{ E6_, sixteenthNote },
{ A6_, sixteenthNote },
{ G6_, sixteenthNote },
{ F6_, sixteenthNote },
{ E6_, sixteenthNote },
{ G6_, sixteenthNote },
{ F6_, sixteenthNote },
{ A6_, sixteenthNote },
{ G6_, sixteenthNote },
{ F6_, sixteenthNote },
{ E6_, sixteenthNote },
{ D6_, sixteenthNote },
{ C6_, sixteenthNote },
{ E6_, sixteenthNote },
{ D6_, sixteenthNote },
{ F6_, sixteenthNote },
{ E6_, sixteenthNote },
{ D6_, sixteenthNote },
{ C6_, sixteenthNote },
{ B5_, sixteenthNote },
{ A5_, sixteenthNote },
{ C6_, sixteenthNote },
{ B5_, sixteenthNote },
{ D6_, sixteenthNote },
{ C6_, sixteenthNote },
{ B5_, sixteenthNote },
{ A5_, sixteenthNote },
{ G5_, sixteenthNote },
{ Gb5_, sixteenthNote },
{ A5_, sixteenthNote },
{ G5_, sixteenthNote },
{ B5_, sixteenthNote },
{ A5_, eighthNote },
{ D5_, eighthNote },
{ C6_, thirtySecondNote },
{ B5_, thirtySecondNote },
{ C6_, eighthNote },
{ D6_, sixteenthNote },
{ B5_, sixteenthNote },
{ A5_, sixteenthNote },
{ G5_, sixteenthNote },
{ Gb5_, sixteenthNote },
{ E5_, sixteenthNote },
{ G5_, sixteenthNote },
{ Gb5_, sixteenthNote },
{ A5_, sixteenthNote },
{ G5_, sixteenthNote },
{ B5_, sixteenthNote },
{ A5_, sixteenthNote },
{ C6_, sixteenthNote },
{ B5_, sixteenthNote },
{ D6_, sixteenthNote },
{ C6_, sixteenthNote },
{ E6_, sixteenthNote },
{ D6_, sixteenthNote },
{ B5_, thirtySecondNote },
{ C6_, thirtySecondNote },
{ D6_, sixteenthNote },
{ G6_, sixteenthNote },
{ C6_, thirtySecondTriplet },
{ B5_, thirtySecondTriplet },
{ C6_, thirtySecondTriplet },
{ B5_, sixteenthNote },
{ A5_, sixteenthNote },
{ G5_, sixteenthNote },
{ G5_, eighthNote },
{ 0, eighthNote },
{ 0, quarterNote },
{ 0, sixteenthNote },
{ G5_, sixteenthNote },
{ A5_, sixteenthNote },
{ B5_, sixteenthNote },
{ C6_, sixteenthNote },
{ A5_, sixteenthNote },
{ B5_, sixteenthNote },
{ G5_, sixteenthNote },
{ G5_, thirtySecondTriplet },
{ Gb5_, thirtySecondTriplet },
{ G5_, thirtySecondTriplet },
{ Gb5_, sixteenthNote },
{ 0, eighthNote },
{ 0, quarterNote },
{ 0, sixteenthNote },
{ A5_, sixteenthNote },
{ B5_, sixteenthNote },
{ C6_, sixteenthNote },
{ D6_, sixteenthNote },
{ B5_, sixteenthNote },
{ C6_, sixteenthNote },
{ A5_, sixteenthNote },
{ B5_, eighthNote },
{ 0, eighthNote },
{ 0, quarterNote },
{ 0, sixteenthNote },
{ D6_, sixteenthNote },
{ C6_, sixteenthNote },
{ B5_, sixteenthNote },
{ A5_, sixteenthNote },
{ C6_, sixteenthNote },
{ B5_, sixteenthNote },
{ D6_, sixteenthNote },
{ C6_, eighthNote },
{ 0, eighthNote },
{ 0, quarterNote },
{ 0, sixteenthNote },
{ E6_, sixteenthNote },
{ D6_, sixteenthNote },
{ C6_, sixteenthNote },
{ B5_, sixteenthNote },
{ D6_, sixteenthNote },
{ Db6_, sixteenthNote },
{ E6_, sixteenthNote },
{ D6_, eighthNote },
{ Db6_, eighthNote },
{ D6_, eighthNote },
{ E6_, eighthNote },
{ F6_, eighthNote },
{ A5_, eighthNote },
{ B5_, eighthNote },
{ C6_, eighthNote },
{ D6_, eighthNote },
{ Gb5_, eighthNote },
{ Ab5_, eighthNote },
{ A5_, eighthNote },
{ B5_, eighthNote },
{ C6_, eighthNote },
{ D6_, quarterNote },
{ D6_, sixteenthNote },
{ E5_, sixteenthNote },
{ Gb5_, sixteenthNote },
{ Ab5_, sixteenthNote },
{ A5_, sixteenthNote },
{ Gb5_, sixteenthNote },
{ Ab5_, sixteenthNote },
{ E5_, sixteenthNote },
{ E6_, sixteenthNote },
{ D6_, sixteenthNote },
{ C6_, sixteenthNote },
{ E6_, sixteenthNote },
{ D6_, sixteenthNote },
{ C6_, sixteenthNote },
{ B5_, sixteenthNote },
{ D6_, sixteenthNote },
{ C6_, sixteenthNote },
{ A6_, sixteenthNote },
{ Ab6_, sixteenthNote },
{ B6_, sixteenthNote },
{ A6_, sixteenthNote },
{ E6_, sixteenthNote },
{ F6_, sixteenthNote },
{ D6_, sixteenthNote },
{ Ab5_, sixteenthNote },
{ F6_, sixteenthNote },
{ E6_, sixteenthNote },
{ D6_, sixteenthNote },
{ C6_, eighthNote },
{ B5_, sixteenthNote },
{ A5_, sixteenthNote },
{ A5_, sixteenthNote },
{ A6_, sixteenthNote },
{ G6_, sixteenthNote },
{ F6_, sixteenthNote },
{ E6_, sixteenthNote },
{ G6_, sixteenthNote },
{ F6_, sixteenthNote },
{ A6_, sixteenthNote },
{ G6_, halfNote },
{ G6_, sixteenthNote },
{ E6_, sixteenthNote },
{ F6_, sixteenthNote },
{ G6_, sixteenthNote },
{ A6_, sixteenthNote },
{ F6_, sixteenthNote },
{ G6_, sixteenthNote },
{ E6_, sixteenthNote },
{ F6_, halfNote },
{ F6_, sixteenthNote },
{ G6_, sixteenthNote },
{ F6_, sixteenthNote },
{ E6_, sixteenthNote },
{ D6_, sixteenthNote },
{ F6_, sixteenthNote },
{ E6_, sixteenthNote },
{ G6_, sixteenthNote },
{ F6_, halfNote },
{ F6_, sixteenthNote },
{ D6_, sixteenthNote },
{ E6_, sixteenthNote },
{ F6_, sixteenthNote },
{ G6_, sixteenthNote },
{ E6_, sixteenthNote },
{ F6_, sixteenthNote },
{ D6_, sixteenthNote },
{ E6_, halfNote },
{ E6_, sixteenthNote },
{ C6_, sixteenthNote },
{ D6_, sixteenthNote },
{ E6_, sixteenthNote },
{ F6_, sixteenthNote },
{ D6_, sixteenthNote },
{ E6_, sixteenthNote },
{ C6_, sixteenthNote },
{ D6_, sixteenthNote },
{ E6_, sixteenthNote },
{ F6_, sixteenthNote },
{ G6_, sixteenthNote },
{ A6_, sixteenthNote },
{ F6_, sixteenthNote },
{ G6_, sixteenthNote },
{ E6_, sixteenthNote },
{ F6_, sixteenthNote },
{ G6_, sixteenthNote },
{ A6_, sixteenthNote },
{ B6_, sixteenthNote },
{ C7_, sixteenthNote },
{ A6_, sixteenthNote },
{ B6_, sixteenthNote },
{ G6_, sixteenthNote },
{ C7_, eighthNote },
{ G6_, eighthNote },
{ F6_, thirtySecondTriplet },
{ E6_, thirtySecondTriplet },
{ F6_, thirtySecondTriplet },
{ E6_, sixteenthNote },
{ D6_, sixteenthNote },
{ C6_, sixteenthNote },
{ C6_, sixteenthNote },
{ Bb5_, sixteenthNote },
{ A5_, sixteenthNote },
{ G5_, sixteenthNote },
{ F5_, sixteenthNote },
{ A5_, sixteenthNote },
{ G5_, sixteenthNote },
{ Bb5_, sixteenthNote },
{ A5_, sixteenthNote },
{ B5_, sixteenthNote },
{ C6_, sixteenthNote },
{ E5_, sixteenthNote },
{ D5_, sixteenthNote },
{ C6_, sixteenthNote },
{ F5_, sixteenthNote },
{ B5_, sixteenthNote },
{ C6_, halfNote }
};
note bachLeft[] = {
{ 0, halfNote },
{ 0, sixteenthNote },
{ C4_, sixteenthNote },
{ D4_, sixteenthNote },
{ E4_, sixteenthNote },
{ F4_, sixteenthNote },
{ D4_, sixteenthNote },
{ E4_, sixteenthNote },
{ C4_, sixteenthNote },
{ G4_, quarterNote },
{ 0, quarterNote },
{ 0, sixteenthNote },
{ G4_, sixteenthNote },
{ A4_, sixteenthNote },
{ B4_, sixteenthNote },
{ C5_, sixteenthNote },
{ A4_, sixteenthNote },
{ B4_, sixteenthNote },
{ G4_, sixteenthNote },
{ C5_, eighthNote },
{ B4_, eighthNote },
{ C5_, eighthNote },
{ D5_, eighthNote },
{ E5_, eighthNote },
{ G4_, eighthNote },
{ A4_, eighthNote },
{ B4_, eighthNote },
{ C5_, eighthNote },
{ E4_, eighthNote },
{ Gb4_, eighthNote },
{ G4_, eighthNote },
{ A4_, eighthNote },
{ B4_, eighthNote },
{ C5_, quarterNote },
{ C5_, sixteenthNote },
{ D4_, sixteenthNote },
{ E4_, sixteenthNote },
{ Gb4_, sixteenthNote },
{ G4_, sixteenthNote },
{ E4_, sixteenthNote },
{ Gb4_, sixteenthNote },
{ D4_, sixteenthNote },
{ G4_, eighthNote },
{ B4_, eighthNote },
{ C4_, eighthNote },
{ D4_, eighthNote },
{ E4_, eighthNote },
{ Gb4_, eighthNote },
{ G4_, eighthNote },
{ E4_, eighthNote },
{ B4_, eighthNote },
{ B4_, sixteenthNote },
{ C4_, sixteenthNote },
{ D4_, quarterNote },
{ 0, sixteenthNote },
{ G4_, sixteenthNote },
{ A4_, sixteenthNote },
{ B4_, sixteenthNote },
{ C5_, sixteenthNote },
{ A4_, sixteenthNote },
{ B4_, sixteenthNote },
{ G4_, sixteenthNote },
{ D4_, eighthNote },
{ G4_, eighthNote },
{ Gb4_, eighthNote },
{ G4_, eighthNote },
{ A4_, sixteenthNote },
{ D4_, sixteenthNote },
{ E4_, sixteenthNote },
{ Gb4_, sixteenthNote },
{ G5_, sixteenthNote },
{ E4_, sixteenthNote },
{ Gb4_, sixteenthNote },
{ D4_, sixteenthNote },
{ A4_, eighthNote },
{ D5_, eighthNote },
{ C5_, eighthNote },
{ D5_, eighthNote },
{ G4_, sixteenthNote },
{ G5_, sixteenthNote },
{ F5_, sixteenthNote },
{ E5_, sixteenthNote },
{ D5_, sixteenthNote },
{ F5_, sixteenthNote },
{ E5_, sixteenthNote },
{ G5_, sixteenthNote },
{ F5_, eighthNote },
{ E5_, eighthNote },
{ F5_, eighthNote },
{ D5_, eighthNote },
{ E5_, sixteenthNote },
{ A5_, sixteenthNote },
{ G5_, sixteenthNote },
{ F5_, sixteenthNote },
{ E5_, sixteenthNote },
{ G5_, sixteenthNote },
{ F5_, sixteenthNote },
{ A5_, sixteenthNote },
{ G5_, eighthNote },
{ F5_, eighthNote },
{ G5_, eighthNote },
{ E5_, eighthNote },
{ F5_, sixteenthNote },
{ Bb5_, sixteenthNote },
{ A5_, sixteenthNote },
{ G5_, sixteenthNote },
{ F5_, sixteenthNote },
{ A5_, sixteenthNote },
{ G5_, sixteenthNote },
{ Bb5_, sixteenthNote },
{ A5_, sixteenthNote },
{ G5_, sixteenthNote },
{ F5_, sixteenthNote },
{ E5_, sixteenthNote },
{ D5_, sixteenthNote },
{ F5_, sixteenthNote },
{ E5_, sixteenthNote },
{ G5_, sixteenthNote },
{ F5_, sixteenthNote },
{ E5_, sixteenthNote },
{ D5_, sixteenthNote },
{ C5_, sixteenthNote },
{ B4_, sixteenthNote },
{ D5_, sixteenthNote },
{ C5_, sixteenthNote },
{ E5_, sixteenthNote },
{ D5_, sixteenthNote },
{ C5_, sixteenthNote },
{ B4_, sixteenthNote },
{ A4_, sixteenthNote },
{ Ab4_, sixteenthNote },
{ B4_, sixteenthNote },
{ A4_, sixteenthNote },
{ C5_, sixteenthNote },
{ B4_, eighthNote },
{ E4_, eighthNote },
{ D5_, thirtySecondNote },
{ C5_, thirtySecondNote },
{ D5_, eighthNote },
{ E5_, sixteenthNote },
{ C5_, sixteenthNote },
{ B4_, sixteenthNote },
{ A4_, sixteenthNote },
{ G4_, sixteenthNote },
{ Gb4_, sixteenthNote },
{ A4_, sixteenthNote },
{ Ab4_, sixteenthNote },
{ B4_, sixteenthNote },
{ A4_, sixteenthNote },
{ C5_, sixteenthNote },
{ B4_, sixteenthNote },
{ D5_, sixteenthNote },
{ C5_, sixteenthNote },
{ E5_, sixteenthNote },
{ D5_, sixteenthNote },
{ F5_, sixteenthNote },
{ E5_, eighthNote },
{ A4_, eighthNote },
{ E5_, eighthNote },
{ E4_, eighthNote },
{ A4_, quarterNote },
{ 0, quarterNote },
{ 0, sixteenthNote },
{ E5_, sixteenthNote },
{ D5_, sixteenthNote },
{ C5_, sixteenthNote },
{ B4_, sixteenthNote },
{ D5_, sixteenthNote },
{ Db5_, sixteenthNote },
{ E5_, sixteenthNote },
{ D5_, halfNote },
{ D5_, sixteenthNote },
{ A4_, sixteenthNote },
{ B4_, sixteenthNote },
{ C5_, sixteenthNote },
{ D5_, sixteenthNote },
{ B4_, sixteenthNote },
{ C5_, sixteenthNote },
{ A4_, sixteenthNote },
{ B4_, halfNote },
{ B4_, sixteenthNote },
{ D5_, sixteenthNote },
{ C5_, sixteenthNote },
{ B4_, sixteenthNote },
{ A4_, sixteenthNote },
{ C5_, sixteenthNote },
{ B4_, sixteenthNote },
{ D5_, sixteenthNote },
{ C5_, halfNote },
{ C5_, sixteenthNote },
{ G4_, sixteenthNote },
{ A4_, sixteenthNote },
{ Bb4_, sixteenthNote },
{ C5_, sixteenthNote },
{ A4_, sixteenthNote },
{ Bb4_, sixteenthNote },
{ G4_, sixteenthNote },
{ A4_, eighthNote },
{ Bb4_, eighthNote },
{ A4_, eighthNote },
{ G4_, eighthNote },
{ F4_, eighthNote },
{ D5_, eighthNote },
{ C5_, eighthNote },
{ Bb4_, eighthNote },
{ A4_, eighthNote },
{ F5_, eighthNote },
{ E5_, eighthNote },
{ D5_, eighthNote },
{ E5_, sixteenthNote },
{ D4_, sixteenthNote },
{ E4_, sixteenthNote },
{ F4_, sixteenthNote },
{ G4_, sixteenthNote },
{ E4_, sixteenthNote },
{ F4_, sixteenthNote },
{ D4_, sixteenthNote },
{ E4_, eighthNote },
{ C4_, eighthNote },
{ D4_, eighthNote },
{ E4_, eighthNote },
{ F4_, sixteenthNote },
{ D4_, sixteenthNote },
{ E4_, sixteenthNote },
{ F4_, sixteenthNote },
{ G4_, quarterNote },
{ C4_, halfNote }
};
const uint16_t bachLeftLength = sizeof(bachLeft)/sizeof(bachLeft[0]);
const uint16_t bachRightLength = sizeof(bachRight)/sizeof(bachRight[0]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment