torque_tracker_engine/project/
event_command.rs1#[derive(Debug, Default, Copy, Clone)]
2pub enum NoteCommand {
3 #[default]
4 None, SetTempo(u8), JumpToOrder(u8), BreakToRow(u8), VolumeSlideDown(u8), PitchSlideDown(u8), PitchSlideUp(u8), SlideToNote(u8), Vibrato(u8), Tremor(u8), Arpeggio(u8), VibratoAndVolSlideDown(u8), SlideToNoteAndVolSlideDown(u8), SetChannelVol(u8), ChannelVolumeSlideDown(u8), SetSampleOffset(u8), PanningSlide(u8), RetriggerNote(u8), Tremolo(u8), AlmostEverything(u8), TempoChange(u8), FineVibrato(u8), SetGlobalVolume(u8), GlobalVolumeSlide(u8), SetPanning(u8), Panbrello(u8), MIDIMacros(u8), }
38
39pub struct UnknownCommand;
40
41impl TryFrom<(u8, u8)> for NoteCommand {
42 type Error = UnknownCommand;
43
44 fn try_from((command_type, command_value): (u8, u8)) -> Result<Self, Self::Error> {
45 match command_type {
46 0 => Ok(Self::None),
47 1 => Ok(Self::SetTempo(command_value)),
48 2 => Ok(Self::JumpToOrder(command_value)),
49 3 => Ok(Self::BreakToRow(command_value)),
50 4 => Ok(Self::VolumeSlideDown(command_value)),
51 5 => Ok(Self::PitchSlideDown(command_value)),
52 6 => Ok(Self::PitchSlideUp(command_value)),
53 7 => Ok(Self::SlideToNote(command_value)),
54 8 => Ok(Self::Vibrato(command_value)),
55 9 => Ok(Self::Tremor(command_value)),
56 10 => Ok(Self::Arpeggio(command_value)),
57 11 => Ok(Self::VibratoAndVolSlideDown(command_value)),
58 12 => Ok(Self::SlideToNoteAndVolSlideDown(command_value)),
59 13 => Ok(Self::SetChannelVol(command_value)),
60 14 => Ok(Self::ChannelVolumeSlideDown(command_value)),
61 15 => Ok(Self::SetSampleOffset(command_value)),
62 16 => Ok(Self::PanningSlide(command_value)),
63 17 => Ok(Self::RetriggerNote(command_value)),
64 18 => Ok(Self::Tremolo(command_value)),
65 19 => Ok(Self::AlmostEverything(command_value)),
66 20 => Ok(Self::TempoChange(command_value)),
67 21 => Ok(Self::FineVibrato(command_value)),
68 22 => Ok(Self::SetGlobalVolume(command_value)),
69 23 => Ok(Self::GlobalVolumeSlide(command_value)),
70 24 => Ok(Self::SetPanning(command_value)),
71 25 => Ok(Self::Panbrello(command_value)),
72 26 => Ok(Self::MIDIMacros(command_value)),
73 _ => Err(UnknownCommand),
74 }
75 }
76}