xsynth_core/channel/
event.rs1use std::sync::Arc;
2
3use crate::soundfont::SoundfontBase;
4
5#[derive(Clone, Copy, Debug, PartialEq)]
7#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
8pub enum KeyNoteEvent {
9 On(u8),
11
12 Off,
14
15 AllOff,
17
18 AllKilled,
20}
21
22#[derive(Clone, Debug)]
24#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
25pub enum ChannelConfigEvent {
26 #[cfg_attr(feature = "serde", serde(skip))]
28 SetSoundfonts(Vec<Arc<dyn SoundfontBase>>),
29
30 SetLayerCount(Option<usize>),
32
33 SetPercussionMode(bool),
36}
37
38#[derive(Clone, Copy, Debug, PartialEq)]
40#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
41pub enum ChannelAudioEvent {
42 NoteOn { key: u8, vel: u8 },
44
45 NoteOff { key: u8 },
47
48 AllNotesOff,
50
51 AllNotesKilled,
53
54 ResetControl,
56
57 Control(ControlEvent),
59
60 ProgramChange(u8),
62}
63
64#[derive(Clone, Debug)]
66#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
67pub enum ChannelEvent {
68 Audio(ChannelAudioEvent),
70
71 Config(ChannelConfigEvent),
73}
74
75#[derive(Clone, Copy, Debug, PartialEq)]
77#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
78pub enum ControlEvent {
79 Raw(u8, u8),
81
82 PitchBendSensitivity(f32),
84
85 PitchBendValue(f32),
87
88 PitchBend(f32),
90
91 FineTune(f32),
93
94 CoarseTune(f32),
96}