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.

Sequencer

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);
  });
});
The MIDI sequencer channel model read out field by field, then one line per effect.