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 SystemReset,
65}
66
67#[derive(Clone, Debug)]
69#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
70pub enum ChannelEvent {
71 Audio(ChannelAudioEvent),
73
74 Config(ChannelConfigEvent),
76}
77
78#[derive(Clone, Copy, Debug, PartialEq)]
80#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
81pub enum ControlEvent {
82 Raw(u8, u8),
84
85 PitchBendSensitivity(f32),
87
88 PitchBendValue(f32),
90
91 PitchBend(f32),
93
94 FineTune(f32),
96
97 CoarseTune(f32),
99}