diff --git a/song.yml b/song.yml index a901ad2..daacf9a 100644 --- a/song.yml +++ b/song.yml @@ -27,7 +27,7 @@ score: order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] patterns: [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 81, 83, 84, 86], [88, 83, 84, 81, 88, 83, 84, 81, 88, 83, 84, 81, 88, 83, 84, 81], [91, 83, 84, 81, 91, 83, 84, 81, 91, 83, 84, 81, 91, 83, 84, 81], [93, 83, 84, 81, 93, 83, 84, 81, 93, 83, 84, 81, 93, 83, 84, 81], [89, 81, 83, 84, 86, 88, 89, 91, 89, 81, 83, 84, 83, 84, 86, 88], [89, 79, 81, 83, 81, 83, 84, 86, 84, 86, 88, 89, 88, 84, 86, 83], [91, 88, 89, 86, 88, 84, 86, 83, 84, 81, 83, 79, 81, 77, 79, 76], [77, 74, 76, 72, 74, 71, 72, 69, 71, 67, 69, 65, 67, 69, 71, 74], [77, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 1, 77, 76], [74, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 69, 71, 72, 76], [84, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 83, 1, 1, 1], [81, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 79, 1, 1, 1], [81, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] rowsperpattern: 16 - length: 108 + length: 12 patch: - name: 80s lead numvoices: 2 diff --git a/song_og.yml b/song_og.yml new file mode 100644 index 0000000..a901ad2 --- /dev/null +++ b/song_og.yml @@ -0,0 +1,381 @@ +bpm: 138 +rowsperbeat: 4 +score: + tracks: + - numvoices: 1 + order: [-1, -1, -1, -1, 0, -1, 1, -1, 0, -1, 1, -1, 2, -1, 1, -1, 3, -1, 1, -1, 2, -1, 1, -1, 4, -1, 1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 2, -1, -1, -1, 2, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 4, -1, 2, -1, 0, -1, -1, -1, 4, -1, 2, -1, 0, -1, -1, -1, 0, -1, -1, -1, 2, -1, 2, -1, 3, 5, 2, 6, 0, -1, -1, -1, 0, -1, 1, -1, 0, -1, 1, -1, 0, -1, 1, -1] + patterns: [[33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [29, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [26, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 28, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1]] + - numvoices: 1 + order: [-1, -1, -1, -1, 0, -1, 1, -1, 0, -1, 1, -1, 2, -1, 1, -1, 3, -1, 1, -1, 2, -1, 1, -1, 4, -1, 1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 2, -1, -1, -1, 2, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 4, -1, 2, -1, 0, -1, -1, -1, 4, -1, 2, -1, 0, -1, -1, -1, 0, -1, -1, -1, 5, -1, 5, -1, 6, 7, 5, 8, 9, -1, -1, -1, 9, -1, 1, -1, 9, -1, 1, -1, 0, -1, 1, -1] + patterns: [[45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [41, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [43, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [50, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 52, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 55, 1, 1, 1, 1, 1, 1, 1], [57, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] + - numvoices: 1 + order: [-1, -1, -1, -1, 0, -1, 1, -1, 2, -1, 1, -1, 3, -1, 1, -1, 4, -1, 1, -1, 3, -1, 1, -1, 5, -1, 1, -1, 6, 7, 6, 7, 6, 7, 6, 8, 6, 7, 6, 7, 6, 7, 6, 7, 9, 10, 9, 10, 9, 10, 9, 10, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 5, -1, 3, -1, 6, 7, 6, 7, 11, 12, 9, 10, 6, 7, 6, 13, 6, 7, 6, 7, 9, 10, 9, 14, 15, 16, 9, 17, 6, 6, 6, 6, 0, -1, 1, -1, 0, -1, 1, -1, 2, -1, 1, -1] + patterns: [[57, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [50, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [55, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [57, 0, 57, 0, 57, 0, 57, 0, 57, 0, 57, 0, 57, 0, 57, 0], [57, 0, 57, 0, 57, 0, 57, 0, 57, 0, 57, 0, 67, 0, 69, 0], [57, 0, 57, 0, 57, 0, 57, 0, 64, 1, 62, 1, 60, 1, 55, 1], [53, 0, 53, 0, 53, 0, 53, 0, 53, 0, 53, 0, 53, 0, 53, 0], [53, 0, 53, 0, 53, 0, 53, 0, 53, 0, 53, 0, 63, 0, 65, 0], [55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0], [55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 65, 0, 67, 0], [57, 0, 57, 0, 57, 0, 57, 0, 57, 0, 57, 0, 69, 0, 57, 0], [53, 0, 53, 0, 53, 0, 53, 0, 53, 0, 53, 0, 53, 0, 65, 0], [50, 0, 50, 0, 50, 0, 50, 0, 50, 0, 50, 0, 50, 0, 50, 0], [50, 0, 50, 0, 50, 0, 50, 0, 52, 0, 52, 0, 52, 0, 52, 0], [53, 0, 53, 0, 53, 0, 53, 0, 55, 0, 55, 0, 55, 0, 55, 0]] + - numvoices: 1 + order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] + patterns: [[60, 1, 1, 1, 1, 1, 1, 1, 60, 1, 1, 1, 1, 1, 1, 1], [60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 60, 1, 1, 1, 60, 1], [60, 1, 1, 1, 60, 1, 1, 1, 60, 1, 1, 1, 60, 1, 1, 1]] + - numvoices: 1 + order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] + patterns: [[1, 1, 1, 1, 1, 1, 1, 1, 72, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 72, 1, 1, 1, 72, 1, 1, 1], [1, 1, 1, 1, 72, 1, 1, 1, 1, 1, 1, 1, 72, 1, 1, 1]] + - numvoices: 1 + order: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -1, 4, -1] + patterns: [[88, 0, 83, 0, 84, 0, 81, 0, 88, 0, 83, 0, 84, 0, 81, 0], [91, 0, 83, 0, 84, 0, 81, 0, 91, 0, 83, 0, 84, 0, 81, 0], [89, 0, 83, 0, 84, 0, 81, 0, 89, 0, 83, 0, 84, 0, 81, 0], [45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] + - numvoices: 1 + order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, -1, 2, 3, 4, 5, -1, 0, 6, -1, -1, 0, 6, -1, 7, 0, -1, -1, -1, 8, -1, -1, 9, -1, -1, -1, -1, 10, 7, 11, 12, 0, -1, -1, 13, 10, 7, 11, 7, 8, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] + patterns: [[83, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 84, 1, 81, 1], [1, 1, 1, 1, 1, 1, 1, 1, 72, 1, 74, 1, 76, 1, 1, 1], [71, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 72, 1, 1, 1], [69, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 84, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 86, 1, 1, 1, 1, 1, 1, 1], [81, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [88, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [84, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 83, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1]] + - numvoices: 1 + order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] + patterns: [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 81, 83, 84, 86], [88, 83, 84, 81, 88, 83, 84, 81, 88, 83, 84, 81, 88, 83, 84, 81], [91, 83, 84, 81, 91, 83, 84, 81, 91, 83, 84, 81, 91, 83, 84, 81], [93, 83, 84, 81, 93, 83, 84, 81, 93, 83, 84, 81, 93, 83, 84, 81], [89, 81, 83, 84, 86, 88, 89, 91, 89, 81, 83, 84, 83, 84, 86, 88], [89, 79, 81, 83, 81, 83, 84, 86, 84, 86, 88, 89, 88, 84, 86, 83], [91, 88, 89, 86, 88, 84, 86, 83, 84, 81, 83, 79, 81, 77, 79, 76], [77, 74, 76, 72, 74, 71, 72, 69, 71, 67, 69, 65, 67, 69, 71, 74], [77, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 1, 77, 76], [74, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 69, 71, 72, 76], [84, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 83, 1, 1, 1], [81, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 79, 1, 1, 1], [81, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] + rowsperpattern: 16 + length: 108 +patch: + - name: 80s lead + numvoices: 2 + units: + - type: oscillator + id: 1089 + parameters: {color: 128, detune: 80, gain: 128, lfo: 0, phase: 0, shape: 64, stereo: 1, transpose: 76, type: 1, unison: 3} + - type: oscillator + id: 1090 + parameters: {color: 128, detune: 57, gain: 128, lfo: 0, phase: 0, shape: 64, stereo: 1, transpose: 64, type: 1, unison: 2} + - type: addp + id: 1091 + parameters: {stereo: 1} + - type: envelope + id: 1092 + parameters: {attack: 37, decay: 66, gain: 90, release: 54, stereo: 1, sustain: 81} + - type: mulp + id: 1098 + parameters: {stereo: 1} + - type: pan + id: 1096 + parameters: {panning: 60, stereo: 1} + - type: filter + id: 1108 + parameters: {bandpass: 0, frequency: 84, highpass: 0, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 128, stereo: 1} + - type: gain + id: 1119 + parameters: {gain: 64, stereo: 1} + - type: filter + id: 1133 + parameters: {bandpass: 0, frequency: 10, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 88, stereo: 1} + - type: sync + id: 1141 + parameters: {} + - type: outaux + id: 1097 + parameters: {auxgain: 34, outgain: 34, stereo: 1} + - name: 80s bass + numvoices: 1 + units: + - type: oscillator + id: 3 + parameters: {color: 128, detune: 64, gain: 128, lfo: 0, phase: 64, shape: 64, stereo: 1, transpose: 64, type: 1, unison: 0} + - type: oscillator + id: 4 + parameters: {color: 128, detune: 76, gain: 128, lfo: 0, phase: 30, shape: 64, stereo: 1, transpose: 52, type: 1, unison: 1} + - type: addp + id: 1084 + parameters: {stereo: 1} + - type: envelope + id: 1085 + parameters: {attack: 0, decay: 69, gain: 100, release: 68, stereo: 1, sustain: 50} + - type: send + id: 1088 + parameters: {amount: 100, port: 0, sendpop: 0, stereo: 1, target: 1087, voice: 0} + - type: mulp + id: 1086 + parameters: {stereo: 1} + - type: distort + id: 1107 + parameters: {drive: 112, stereo: 1} + - type: filter + id: 1087 + parameters: {bandpass: 0, frequency: 30, highpass: 1, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 40, stereo: 1} + - type: pan + id: 284 + parameters: {panning: 64, stereo: 1} + - type: gain + id: 1121 + parameters: {gain: 110, stereo: 1} + - type: outaux + id: 15 + parameters: {auxgain: 30, outgain: 30, stereo: 1} + - name: Kick + comment: 'Suggested note: C-3' + numvoices: 1 + units: + - type: envelope + id: 261 + parameters: {attack: 0, decay: 49, gain: 128, release: 0, stereo: 0, sustain: 0} + - type: noise + id: 269 + parameters: {gain: 128, shape: 74, stereo: 0} + - type: send + id: 268 + parameters: {amount: 96, port: 0, sendpop: 1, stereo: 0, target: 262, voice: 0} + - type: oscillator + id: 262 + parameters: {color: 128, detune: 64, gain: 128, phase: 0, shape: 64, stereo: 0, transpose: 57, type: 0, unison: 0} + - type: filter + id: 281 + parameters: {bandpass: 0, frequency: 91, highpass: 0, lowpass: 0, negbandpass: 1, neghighpass: 1, resonance: 98, stereo: 0} + - type: mulp + id: 263 + parameters: {stereo: 0} + - type: envelope + id: 280 + parameters: {attack: 0, decay: 64, gain: 80, release: 64, stereo: 0, sustain: 0} + - type: send + id: 1110 + parameters: {amount: 75, port: 0, sendpop: 1, stereo: 0, target: 277, voice: 0} + - type: noise + id: 275 + parameters: {gain: 72, shape: 24, stereo: 0} + - type: send + id: 276 + parameters: {amount: 84, port: 0, sendpop: 1, stereo: 0, target: 277, voice: 0} + - type: envelope + id: 274 + parameters: {attack: 45, decay: 70, gain: 128, release: 0, stereo: 0, sustain: 0} + - type: send + id: 1118 + parameters: {amount: 0, port: 0, sendpop: 0, stereo: 0, target: 1119, voice: 0} + - type: send + id: 1122 + parameters: {amount: 0, port: 0, sendpop: 0, stereo: 0, target: 1121, voice: 0} + - type: send + id: 1124 + parameters: {amount: 32, port: 0, sendpop: 0, stereo: 0, target: 1123, voice: 0} + - type: oscillator + id: 277 + parameters: {color: 128, detune: 64, gain: 128, phase: 0, shape: 64, stereo: 0, transpose: 45, type: 0} + - type: mulp + id: 279 + parameters: {stereo: 0} + - type: addp + id: 271 + parameters: {stereo: 0} + - type: pan + id: 294 + parameters: {panning: 64, stereo: 0} + - type: filter + id: 1132 + parameters: {bandpass: 0, frequency: 11, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 1} + - type: outaux + id: 266 + parameters: {auxgain: 14, outgain: 50, stereo: 1} + - type: oscillator + id: 1134 + parameters: {color: 64, detune: 64, gain: 128, lfo: 1, phase: 0, shape: 64, stereo: 0, transpose: 52, type: 0} + - type: sync + id: 1135 + parameters: {} + - type: pop + id: 1136 + parameters: {stereo: 0} + - name: snare edm 3 + comment: 'Suggested range: E-4' + numvoices: 1 + units: + - type: envelope + id: 217 + parameters: {attack: 0, decay: 67, gain: 29, release: 0, stereo: 0, sustain: 0} + - type: oscillator + id: 218 + parameters: {color: 128, detune: 64, gain: 80, lfo: 0, phase: 0, shape: 64, stereo: 0, transpose: 57, type: 0, unison: 0} + - type: mulp + id: 221 + parameters: {stereo: 0} + - type: envelope + id: 222 + parameters: {attack: 0, decay: 69, gain: 54, release: 0, stereo: 0, sustain: 0} + - type: noise + id: 223 + parameters: {gain: 31, shape: 14, stereo: 0} + - type: mulp + id: 224 + parameters: {stereo: 0} + - type: filter + id: 201 + parameters: {bandpass: 0, frequency: 78, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 127, stereo: 0} + - type: filter + id: 225 + parameters: {bandpass: 0, frequency: 122, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 112, stereo: 0} + - type: addp + id: 226 + parameters: {stereo: 0} + - type: distort + id: 338 + parameters: {drive: 108, stereo: 0} + - type: pan + id: 231 + parameters: {panning: 63, stereo: 0} + - type: outaux + id: 232 + parameters: {auxgain: 52, outgain: 58, stereo: 1} + - type: envelope + id: 233 + parameters: {attack: 37, decay: 47, gain: 128, release: 0, stereo: 0, sustain: 0} + - type: send + id: 234 + parameters: {amount: 69, port: 0, sendpop: 1, target: 218} + - type: envelope + id: 235 + parameters: {attack: 53, decay: 58, gain: 128, release: 0, stereo: 0, sustain: 0} + - type: send + id: 236 + parameters: {amount: 0, port: 0, sendpop: 1, target: 201} + - type: envelope + id: 237 + parameters: {attack: 53, decay: 73, gain: 128, release: 0, stereo: 0, sustain: 0} + - type: send + id: 238 + parameters: {amount: 32, port: 0, sendpop: 1, target: 202} + - name: SuperSaw 4 + comment: Automate filter frequency for the classic trance sound + numvoices: 1 + units: + - type: envelope + id: 1109 + parameters: {attack: 0, decay: 0, gain: 64, release: 64, stereo: 0, sustain: 85} + - type: oscillator + id: 1099 + parameters: {color: 128, detune: 96, gain: 64, phase: 64, shape: 64, stereo: 0, transpose: 64, type: 1, unison: 3} + - type: oscillator + id: 12 + parameters: {color: 128, detune: 77, gain: 80, lfo: 0, phase: 64, shape: 64, stereo: 0, transpose: 64, type: 1, unison: 3} + - type: addp + id: 13 + parameters: {stereo: 0} + - type: mulp + id: 16 + parameters: {stereo: 0} + - type: envelope + id: 17 + parameters: {attack: 18, decay: 67, gain: 64, release: 64, stereo: 0, sustain: 99} + - type: oscillator + id: 18 + parameters: {color: 128, detune: 46, gain: 81, phase: 64, shape: 64, stereo: 0, transpose: 64, type: 1, unison: 3} + - type: oscillator + id: 19 + parameters: {color: 128, detune: 38, gain: 76, lfo: 0, phase: 64, shape: 64, stereo: 0, transpose: 64, type: 1, unison: 3} + - type: addp + id: 20 + parameters: {stereo: 0} + - type: mulp + id: 23 + parameters: {stereo: 0} + - type: gain + id: 1123 + parameters: {gain: 120, stereo: 1} + - type: delay + id: 24 + parameters: {damp: 0, dry: 0, feedback: 0, notetracking: 0, pregain: 128, stereo: 0} + varargs: [420] + - type: delay + id: 29 + parameters: {damp: 0, dry: 71, feedback: 32, notetracking: 2, pregain: 71, stereo: 1} + varargs: [32, 36] + - type: loadnote + id: 1140 + parameters: {stereo: 0} + - type: sync + id: 1138 + parameters: {} + - type: pop + id: 1139 + parameters: {stereo: 0} + - type: outaux + id: 30 + parameters: {auxgain: 23, outgain: 25, stereo: 1} + - name: pad + numvoices: 1 + units: + - type: envelope + id: 1 + parameters: {attack: 72, decay: 96, gain: 128, release: 88, stereo: 0, sustain: 96} + - type: send + id: 2 + parameters: {amount: 64, port: 4, sendpop: 0, target: 1} + - type: oscillator + id: 1125 + parameters: {color: 80, detune: 60, gain: 128, lfo: 0, phase: 32, shape: 64, stereo: 0, transpose: 64, type: 2} + - type: oscillator + id: 1126 + parameters: {color: 96, detune: 72, gain: 128, lfo: 0, phase: 32, shape: 64, stereo: 0, transpose: 64, type: 1} + - type: oscillator + id: 5 + parameters: {color: 128, detune: 64, gain: 128, lfo: 1, phase: 0, shape: 90, stereo: 0, transpose: 32, type: 0} + - type: send + id: 6 + parameters: {amount: 68, port: 1, sendpop: 0, target: 1125} + - type: send + id: 78 + parameters: {amount: 61, port: 1, sendpop: 1, target: 1126} + - type: addp + id: 80 + parameters: {stereo: 0} + - type: mulp + id: 10 + parameters: {stereo: 0} + - type: filter + id: 11 + parameters: {bandpass: 0, frequency: 26, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + - type: filter + id: 1127 + parameters: {bandpass: 0, frequency: 64, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 64, stereo: 0} + - type: distort + id: 1128 + parameters: {drive: 109, stereo: 0} + - type: pan + id: 1129 + parameters: {panning: 64, stereo: 0} + - type: delay + id: 1130 + parameters: {damp: 64, dry: 128, feedback: 96, notetracking: 2, pregain: 96, stereo: 1} + varargs: [24, 48] + - type: outaux + id: 1131 + parameters: {auxgain: 15, outgain: 15, stereo: 1} + - name: HappyLead + numvoices: 1 + units: + - type: oscillator + id: 164 + parameters: {color: 84, detune: 62, gain: 128, lfo: 0, phase: 0, shape: 64, stereo: 0, transpose: 64, type: 1, unison: 0} + - type: oscillator + id: 165 + parameters: {color: 128, detune: 62, gain: 92, lfo: 0, phase: 0, shape: 64, stereo: 0, transpose: 64, type: 1, unison: 2} + - type: addp + id: 166 + parameters: {stereo: 0} + - type: envelope + id: 163 + parameters: {attack: 44, decay: 64, gain: 72, release: 64, stereo: 0, sustain: 92} + - type: mulp + id: 167 + parameters: {stereo: 0} + - type: pan + id: 168 + parameters: {panning: 60, stereo: 0} + - type: delay + id: 169 + parameters: {damp: 0, dry: 64, feedback: 64, notetracking: 0, pregain: 54, stereo: 1} + varargs: [12550, 24402, 21265, 32419] + - type: outaux + id: 172 + parameters: {auxgain: 64, outgain: 64, stereo: 1} + - name: Global + numvoices: 1 + units: + - type: in + id: 7 + parameters: {channel: 2, stereo: 1} + - type: delay + id: 8 + parameters: {damp: 25, dry: 0, feedback: 120, notetracking: 0, pregain: 40, stereo: 1} + varargs: [1116, 1188, 1276, 1356, 1422, 1492, 1556, 1618, 1140, 1212, 1300, 1380, 1446, 1516, 1580, 1642] + - type: out + id: 9 + parameters: {gain: 64, stereo: 1} diff --git a/src/main.cpp b/src/main.cpp index 39174c3..f7ec04e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,7 +6,7 @@ #define BREAK_COMPATIBILITY 0 #else #define OPENGL_DEBUG 0 - #define FULLSCREEN 1 + #define FULLSCREEN 0 #define DESPERATE 0 #define BREAK_COMPATIBILITY 0 #endif @@ -44,6 +44,7 @@ void entrypoint(void) int __cdecl main(int argc, char* argv[]) #endif + { // initialize window #if FULLSCREEN @@ -59,7 +60,8 @@ int __cdecl main(int argc, char* argv[]) // you can create a pseudo fullscreen window by similarly enabling the WS_MAXIMIZE flag as above // in which case you can replace the resolution parameters with 0s and save a couple bytes // this only works if the resolution is set to the display device's native resolution - HDC hDC = GetDC(CreateWindow((LPCSTR)0xC018, 0, WS_POPUP | WS_VISIBLE, 0, 0, XRES, YRES, 0, 0, 0, 0)); + HWND window = CreateWindow((LPCSTR)0xC018, 0, WS_POPUP | WS_VISIBLE, 0, 0, XRES, YRES, 0, 0, 0, 0); + HDC hDC = GetDC(window); #endif #endif @@ -105,19 +107,15 @@ int __cdecl main(int argc, char* argv[]) #endif long playCursor = 0; + long lastPlayCursor = -1; // main loop direct_sound_buffer->Play(0, 0, 0); + do { - - direct_sound_buffer->GetCurrentPosition((DWORD*)&playCursor, NULL); + direct_sound_buffer->GetCurrentPosition((DWORD*)&playCursor, NULL); float syncs[1 + SU_NUMSYNCS]; - - #ifdef EDITOR_CONTROLS - editor.beginFrame(timeGetTime()); - #endif - #if !(DESPERATE) // do minimal message handling so windows doesn't kill your application // not always strictly necessary but increases compatibility and reliability a lot @@ -187,12 +185,11 @@ int __cdecl main(int argc, char* argv[]) editor.printFrameStatistics(); editor.updateShaders(&pidMain, &pidPost); #endif - - } while(!GetAsyncKeyState(VK_ESCAPE) - #if USE_AUDIO - && playCursor < SU_LENGTH_IN_SAMPLES * 2 * sizeof(SUsample) - #endif - ); + if (playCursor < lastPlayCursor) { + break; + } + lastPlayCursor = playCursor; + } while(!GetAsyncKeyState(VK_ESCAPE)); ExitProcess(0); } diff --git a/src/sointu/song.h b/src/sointu/song.h index 3518e73..bb8a206 100644 --- a/src/sointu/song.h +++ b/src/sointu/song.h @@ -3,14 +3,14 @@ #define SU_RENDER_H #define SU_CHANNEL_COUNT 2 -#define SU_LENGTH_IN_SAMPLES 8282304 +#define SU_LENGTH_IN_SAMPLES 920256 #define SU_BUFFER_LENGTH (SU_LENGTH_IN_SAMPLES*SU_CHANNEL_COUNT) #define SU_SAMPLE_RATE 44100 #define SU_BPM 138 #define SU_ROWS_PER_BEAT 4 #define SU_ROWS_PER_PATTERN 16 -#define SU_LENGTH_IN_PATTERNS 108 +#define SU_LENGTH_IN_PATTERNS 12 #define SU_LENGTH_IN_ROWS (SU_LENGTH_IN_PATTERNS*SU_PATTERN_SIZE) #define SU_SAMPLES_PER_ROW (SU_SAMPLE_RATE*60/(SU_BPM*SU_ROWS_PER_BEAT)) #define SU_NUMSYNCS 4