Spaces:
Running
Running
File size: 1,555 Bytes
f23825d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
import { toTrackEvents } from "../helpers/toTrackEvents"
import {
endOfTrackMidiEvent,
expressionMidiEvent,
masterCoarceTuningEvents,
masterFineTuningEvents,
modulationMidiEvent,
panMidiEvent,
pitchBendMidiEvent,
pitchbendSensitivityEvents,
programChangeMidiEvent,
resetAllMidiEvent,
setTempoMidiEvent,
timeSignatureMidiEvent,
trackNameMidiEvent,
volumeMidiEvent,
} from "../midi/MidiEvent"
import Track from "./Track"
export function conductorTrack(name = "") {
const track = new Track()
const events = toTrackEvents([
trackNameMidiEvent(0, name),
timeSignatureMidiEvent(0),
setTempoMidiEvent(0, 60000000 / 120),
endOfTrackMidiEvent(0),
])
track.addEvents(events)
return track
}
export const resetTrackMIDIEvents = (channel: number) => [
resetAllMidiEvent(0, channel),
trackNameMidiEvent(0, ""),
panMidiEvent(0, channel, 64),
volumeMidiEvent(0, channel, 100),
expressionMidiEvent(0, channel, 127),
...masterCoarceTuningEvents(0, channel),
...masterFineTuningEvents(0, channel),
...pitchbendSensitivityEvents(0, channel, 12),
pitchBendMidiEvent(0, channel, 0x2000),
modulationMidiEvent(0, channel, 0),
programChangeMidiEvent(0, channel, 0),
]
export function emptyTrack(channel: number) {
if (!Number.isInteger(channel)) {
throw new Error("channel is not integer")
}
const track = new Track()
track.channel = channel
const events = toTrackEvents([
...resetTrackMIDIEvents(channel),
endOfTrackMidiEvent(1),
])
track.addEvents(events)
return track
}
|