summaryrefslogtreecommitdiff
path: root/client/lib/midi.js
diff options
context:
space:
mode:
Diffstat (limited to 'client/lib/midi.js')
-rw-r--r--client/lib/midi.js29
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')
}