diff --git a/sound-driver/melody_tetris.c b/sound-driver/melody_tetris.c new file mode 100644 index 0000000..bb329ff --- /dev/null +++ b/sound-driver/melody_tetris.c @@ -0,0 +1,935 @@ +#include +#include +#include "psg.h" +#include "sequencer.h" +#include "scheduler.h" + + +/* + * three voices theme from https://www.gamemusicthemes.com/sheetmusic/gameboy/tetris/themea/Tetris_-_Theme_A_by_Gori_Fater.pdf + */ +const t_tone voice1[] = { + // ------- + // 1. bar + { .octave = e_O_5, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_D, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_E, .length = e_L_1_16, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_D, .length = e_L_1_16, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 2. bar + { .octave = e_O_4, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_D, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 3. bar + { .octave = e_O_4, .note = e_H, .length = e_L_1_4, .legato = true, .staccato = false }, // diese und die naechste zusammen: ein punktiertes Viertel + { .octave = e_O_4, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_D, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 4. bar + { .octave = e_O_5, .note = e_C, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 5. bar + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_D, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_F, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_G, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_F, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 6. bar + { .octave = e_O_5, .note = e_E, .length = e_L_1_4, .legato = true, .staccato = false }, // punktiert + { .octave = e_O_5, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_D, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 7. bar + { .octave = e_O_4, .note = e_H, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_D, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 8. bar + { .octave = e_O_5, .note = e_C, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_4, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // ------- + // 1. bar, repeat + { .octave = e_O_5, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_D, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_E, .length = e_L_1_16, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_D, .length = e_L_1_16, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 2. bar, repeat + { .octave = e_O_4, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_D, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 3. bar, repeat + { .octave = e_O_4, .note = e_H, .length = e_L_1_4, .legato = true, .staccato = false }, // diese und die naechste zusammen: ein punktiertes Viertel + { .octave = e_O_4, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_D, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 4. bar, repeat + { .octave = e_O_5, .note = e_C, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 5. bar, repeat + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_D, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_F, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_G, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_F, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 6. bar, repeat + { .octave = e_O_5, .note = e_E, .length = e_L_1_4, .legato = true, .staccato = false }, // punktiert + { .octave = e_O_5, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_D, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 7. bar, repeat + { .octave = e_O_4, .note = e_H, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_D, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 8. bar, repeat + { .octave = e_O_5, .note = e_C, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_4, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // ------- + // 9. bar + { .octave = e_O_4, .note = e_E, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_C, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 10. bar + { .octave = e_O_4, .note = e_D, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_H, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 11. bar + { .octave = e_O_4, .note = e_C, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 12. bar + { .octave = e_O_3, .note = e_Gis, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_H, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 13. bar + { .octave = e_O_4, .note = e_E, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_C, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 14. bar + { .octave = e_O_4, .note = e_D, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_H, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 15. bar + { .octave = e_O_4, .note = e_C, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 16. bar + { .octave = e_O_4, .note = e_Gis, .length = e_L_1, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // ------- + // 9. bar, repeat + { .octave = e_O_4, .note = e_E, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_C, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 10. bar, repeat + { .octave = e_O_4, .note = e_D, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_H, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 11. bar, repeat + { .octave = e_O_4, .note = e_C, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 12. bar, repeat + { .octave = e_O_3, .note = e_Gis, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_H, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 13. bar, repeat + { .octave = e_O_4, .note = e_E, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_C, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 14. bar, repeat + { .octave = e_O_4, .note = e_D, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_H, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 15. bar, repeat + { .octave = e_O_4, .note = e_C, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 16. bar, repeat + { .octave = e_O_4, .note = e_Gis, .length = e_L_1, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_EndMark, .legato = false, .staccato = false }, +}; + +const t_tone voice2[] = { + // ------- + // 1. bar + { .octave = e_O_4, .note = e_H, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_16, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_16, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 2. bar + { .octave = e_O_4, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 3. bar + { .octave = e_O_4, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_H, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_4, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 4. bar + { .octave = e_O_4, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 5. bar + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_F, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_16, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_16, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 6. bar + { .octave = e_O_4, .note = e_G, .length = e_L_1_4, .legato = true, .staccato = false }, // punktiert + { .octave = e_O_4, .note = e_G, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_G, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_16, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_G, .length = e_L_1_16, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_F, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 7. bar + { .octave = e_O_4, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 8. bar + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_4, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // ------- + // 1. bar, repeat + { .octave = e_O_4, .note = e_H, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_16, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_16, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 2. bar, repeat + { .octave = e_O_4, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 3. bar, repeat + { .octave = e_O_4, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_H, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_4, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 4. bar, repeat + { .octave = e_O_4, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 5. bar, repeat + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_F, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_16, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_16, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 6. bar, repeat + { .octave = e_O_4, .note = e_G, .length = e_L_1_4, .legato = true, .staccato = false }, // punktiert + { .octave = e_O_4, .note = e_G, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_G, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_16, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_G, .length = e_L_1_16, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_F, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 7. bar, repeat + { .octave = e_O_4, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 8. bar, repeat + { .octave = e_O_4, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_E, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_4, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // ------- + // 9. bar + { .octave = e_O_4, .note = e_C, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 10. bar + { .octave = e_O_3, .note = e_H, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_Gis, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 11. bar + { .octave = e_O_3, .note = e_A, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 12. bar + { .octave = e_O_3, .note = e_E, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_Gis, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 13. bar + { .octave = e_O_4, .note = e_C, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 14. bar + { .octave = e_O_3, .note = e_H, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_Gis, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 15. bar + { .octave = e_O_3, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_C, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 16. bar + { .octave = e_O_3, .note = e_E, .length = e_L_1, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // ------- + // 9. bar, repeat + { .octave = e_O_4, .note = e_C, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 10. bar, repeat + { .octave = e_O_3, .note = e_H, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_Gis, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 11. bar, repeat + { .octave = e_O_3, .note = e_A, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 12. bar, repeat + { .octave = e_O_3, .note = e_E, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_Gis, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 13. bar, repeat + { .octave = e_O_4, .note = e_C, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 14. bar, repeat + { .octave = e_O_3, .note = e_H, .length = e_L_1_2, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_Gis, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 15. bar, repeat + { .octave = e_O_3, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_C, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 16. bar, repeat + { .octave = e_O_3, .note = e_E, .length = e_L_1, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_EndMark, .legato = false, .staccato = false }, +}; + +const t_tone voice3[] = { + // ------- + // 1. bar + { .octave = e_O_2, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 2. bar + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 3. bar + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 4. bar + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 5. bar + { .octave = e_O_3, .note = e_D, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_D, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_D, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_D, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_F, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 6. bar + { .octave = e_O_2, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_G, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_G, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 7. bar + { .octave = e_O_2, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 8. bar + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_4, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // ------- + // 1. bar,repeat + { .octave = e_O_2, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 2. bar,repeat + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 3. bar,repeat + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 4. bar,repeat + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 5. bar,repeat + { .octave = e_O_3, .note = e_D, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_D, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_D, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_D, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_F, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 6. bar,repeat + { .octave = e_O_2, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_C, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_G, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_G, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 7. bar,repeat + { .octave = e_O_2, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_H, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 8. bar,repeat + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_4, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // ------- + // 9. bar + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 10. bar + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 11. bar + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 12. bar + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 13. bar + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 14. bar + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 15. bar + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 16. bar + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // ------- + // 9. bar, repeat + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 10. bar, repeat + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 11. bar, repeat + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 12. bar, repeat + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 13. bar, repeat + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 14. bar, repeat + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 15. bar, repeat + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_A, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + // 16. bar, repeat + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_2, .note = e_Gis, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_3, .note = e_E, .length = e_L_1_8, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_EndMark, .legato = false, .staccato = false }, +}; + +t_melodies tetrisTheme = { + .melodies = { { .chip = 0, .amplitude = 3, .tones = voice1 }, { .chip = 0, .amplitude = 3, .tones = voice2 }, { .chip = 0, .amplitude = 3, .tones = voice3 } }, + .numOfMelodies = 3, + .pace = 160 +}; + +void playMelodyTetris() { + sequencerPlayMelodies(&tetrisTheme); +} + + diff --git a/sound-driver/melody_tetris.h b/sound-driver/melody_tetris.h new file mode 100644 index 0000000..06ca9d9 --- /dev/null +++ b/sound-driver/melody_tetris.h @@ -0,0 +1,8 @@ +#ifndef _MELODY_TETRIS_H_ +#define _MELODY_TETRIS_H_ + + +void playMelodyTetris(); + + +#endif // _MELODY_TETRIS_H_ diff --git a/sound-driver/melody_tusch1.c b/sound-driver/melody_tusch1.c new file mode 100644 index 0000000..886067a --- /dev/null +++ b/sound-driver/melody_tusch1.c @@ -0,0 +1,84 @@ +#include +#include +#include "psg.h" +#include "sequencer.h" +#include "scheduler.h" + +const t_tone tusch1voice1[] = { + { .octave = e_O_5, .note = e_C, .length = e_L_1_4, .legato = false, .staccato = true }, + { .octave = e_O_5, .note = e_F, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + { .octave = e_O_5, .note = e_C, .length = e_L_1_4, .legato = false, .staccato = true }, + { .octave = e_O_5, .note = e_F, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + { .octave = e_O_5, .note = e_C, .length = e_L_1_4, .legato = false, .staccato = true }, + { .octave = e_O_5, .note = e_F, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Null, .length = e_L_StopMark,.legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_EndMark, .legato = false, .staccato = false }, +}; + +const t_tone tusch1voice2[] = { + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_5, .note = e_C, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Null, .length = e_L_HoldMark,.legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_EndMark, .legato = false, .staccato = false }, +}; + +const t_tone tusch1voice3[] = { + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_8, .legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Pause, .length = e_L_1_4, .legato = false, .staccato = false }, + { .octave = e_O_4, .note = e_A, .length = e_L_1_2, .legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_SyncMark,.legato = false, .staccato = false }, + { .octave = e_O_Null, .note = e_Null, .length = e_L_HoldMark,.legato = false, .staccato = false }, + + { .octave = e_O_Null, .note = e_Null, .length = e_L_EndMark, .legato = false, .staccato = false }, +}; + +t_melodies tusch1 = { + .melodies = { { .chip = 1, .amplitude = 6, .tones = tusch1voice1 }, { .chip = 1, .amplitude = 6, .tones = tusch1voice2 }, { .chip = 1, .amplitude = 6, .tones = tusch1voice3 } }, + .numOfMelodies = 3, + .pace = 200 +}; + +void playTusch1() { + sequencerPlayMelodies(&tusch1); +} + + + diff --git a/sound-driver/melody_tusch1.h b/sound-driver/melody_tusch1.h new file mode 100644 index 0000000..8d95240 --- /dev/null +++ b/sound-driver/melody_tusch1.h @@ -0,0 +1,8 @@ +#ifndef _MELODY_TUSCH1_H_ +#define _MELODY_TUSCH1_H_ + + +void playTusch1(); + + +#endif // _MELODY_TUSCH1_H_