diff options
Diffstat (limited to 'client/lib/midi.js')
| -rw-r--r-- | client/lib/midi.js | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/client/lib/midi.js b/client/lib/midi.js index b22f2fe..1625368 100644 --- a/client/lib/midi.js +++ b/client/lib/midi.js @@ -116,8 +116,9 @@ export function play_sequence(i, bounds, diff, note_time, channel="all", exporti i += 1 if (i >= count) i = 0 const midi_note = play_note( norm(n, min, max) * nx.multiply.value, note_time, channel, exporting) - return [i, [midi_note]] + return [i, [midi_note], [128]] } +// [next_i, notes, timings, pedal_note] /* play the next row as an interval */ @@ -142,7 +143,7 @@ export function play_interval_sequence(i, bounds, diff, note_time, channel="all" /* generate a 1-track midi file by calling the play function repeatedly */ -export function export_pattern_as_midi(datasetName, bounds, diff, tempo, timingIndex, play_fn, max_i) { +export function export_pattern_as_midi(dataset, bounds, diff, tempo, timingIndex, play_fn, max_i) { // const behavior = document.querySelector('#behavior').value const { rows } = bounds // let count = behavior === 'sequence' ? rows[0].length * rows.length : rows.length @@ -150,12 +151,14 @@ export function export_pattern_as_midi(datasetName, bounds, diff, tempo, timingI let notes, timings let note_time // let timing = note_values[timingIndex][2] - let pedal_note, next_i + let pedal_note, pedal_track, next_i let wait = 0 let midi_track = new MidiWriter.Track() midi_track.setTempo(tempo) - let pedal_track = new MidiWriter.Track() - pedal_track.setTempo(tempo) + if (dataset.pedal) { + pedal_track = new MidiWriter.Track() + pedal_track.setTempo(tempo) + } for (let i = 0, len = max_i; i < len; i++) { [next_i, notes, timings, pedal_note] = play_fn(i, bounds, diff, note_time, "all", true) // if (timing.length) { @@ -179,14 +182,16 @@ export function export_pattern_as_midi(datasetName, bounds, diff, tempo, timingI midi_track.addEvent(new MidiWriter.NoteEvent(e)) wait = 0 } - pedal_track.addEvent(new MidiWriter.NoteEvent({ - pitch: pedal_note, - duration: 't128', - velocity: 25, - })) + if (dataset.pedal) { + pedal_track.addEvent(new MidiWriter.NoteEvent({ + pitch: pedal_note, + duration: 't128', + velocity: 25, + })) + } } - let tracks = [midi_track, pedal_track] + let tracks = dataset.pedal ? [midi_track, pedal_track] : [midi_track] const writer = new MidiWriter.Writer(tracks) const blob = dataURItoBlob(writer.dataUri()) - saveAs(blob, 'Recording - ' + datasetName + '.mid') + saveAs(blob, 'Recording - ' + dataset.name + '.mid') } |
