Sprites.Platform.MIDI
The MIDI platform pack: the sequencer channel model. Sixteen general MIDI channels, each with latched pitch, volume, instrument and pan and driven modulation, over the standard note range.
Sprites.Platform.MIDI.Sequencer Object
The sequencer channel model: sixteen identical general MIDI channels, described as address-free capabilities with value ranges. Each channel latches pitch over the note range with fourteen bit finetune, a seven bit volume, one of a hundred and twenty-eight instrument programs and a seven bit pan, and takes a driven seven bit modulation. The Sprites.Media.Sequencer editor reads this to lay out the grid and gate what each channel can do. The note range runs from 24 to 108, and the effects are portamento, vibrato and volume slide.
const model = Sprites.Platform.MIDI.Sequencer;
const caps = model.channelTypes.channel.capabilities;
Sprites.Ui.Layout.Column(() => {
Sprites.Ui.Content.Text('Name = ', model.name);
Sprites.Ui.Content.Text('Channels = ', model.channels.length);
Sprites.Ui.Content.Text('Range = ', model.range.low, ' to ', model.range.high);
Sprites.Ui.Content.Text('Pitch = ', caps.pitch.mode, ', ', caps.pitch.finetune.bits, '-bit finetune');
Sprites.Ui.Content.Text('Volume = ', caps.volume.mode, ', ', caps.volume.level.bits, '-bit');
Sprites.Ui.Content.Text('Instrument = ', caps.instrument.mode, ', ', caps.instrument.programs, ' programs');
Sprites.Ui.Content.Text('Pan = ', caps.pan.mode, ', ', caps.pan.position.bits, '-bit');
Sprites.Ui.Content.Text('Modulation = ', caps.modulation.mode, ', ', caps.modulation.depth.bits, '-bit depth');
Sprites.Reactive.Each(model.effects, (effect) => {
Sprites.Ui.Content.Text('Effect: ', effect);
});
});