private void GenerateAutomation(Beat beat, Automation automation, int startMove)
{
switch (automation.Type)
{
case AutomationType.Instrument:
_handler.AddProgramChange(beat.Voice.Bar.Staff.Track.Index, beat.Start + startMove,
(byte)beat.Voice.Bar.Staff.Track.PlaybackInfo.PrimaryChannel,
(byte)(automation.Value));
_handler.AddProgramChange(beat.Voice.Bar.Staff.Track.Index, beat.Start + startMove,
(byte)beat.Voice.Bar.Staff.Track.PlaybackInfo.SecondaryChannel,
(byte)(automation.Value));
break;
case AutomationType.Balance:
_handler.AddControlChange(beat.Voice.Bar.Staff.Track.Index, beat.Start + startMove,
(byte)beat.Voice.Bar.Staff.Track.PlaybackInfo.PrimaryChannel,
(byte)MidiController.PanCoarse,
(byte)(automation.Value));
_handler.AddControlChange(beat.Voice.Bar.Staff.Track.Index, beat.Start + startMove,
(byte)beat.Voice.Bar.Staff.Track.PlaybackInfo.SecondaryChannel,
(byte)MidiController.PanCoarse,
(byte)(automation.Value));
break;
case AutomationType.Volume:
_handler.AddControlChange(beat.Voice.Bar.Staff.Track.Index, beat.Start + startMove,
(byte)beat.Voice.Bar.Staff.Track.PlaybackInfo.PrimaryChannel,
(byte)MidiController.VolumeCoarse,
(byte)(automation.Value));
_handler.AddControlChange(beat.Voice.Bar.Staff.Track.Index, beat.Start + startMove,
(byte)beat.Voice.Bar.Staff.Track.PlaybackInfo.SecondaryChannel,
(byte)MidiController.VolumeCoarse,
(byte)(automation.Value));
break;
}
}