@@ -3,24 +3,24 @@ mod midi;
33mod synth;
44pub mod ui;
55
6- use std:: sync:: { Mutex , Arc } ;
6+ use std:: sync:: { Arc , Mutex } ;
77
88use anyhow:: Result ;
99use ringbuf:: RingBuffer ;
1010
1111use kiro_synth_core:: float:: Float ;
12- use kiro_synth_midi:: messages:: Message as MidiMessage ;
13- use kiro_synth_engine:: program:: Program ;
1412use kiro_synth_engine:: event:: Event ;
15- use kiro_synth_engine:: synth:: Synth ;
1613use kiro_synth_engine:: globals:: SynthGlobals ;
14+ use kiro_synth_engine:: program:: Program ;
15+ use kiro_synth_engine:: synth:: Synth ;
16+ use kiro_synth_midi:: messages:: Message as MidiMessage ;
1717
1818use crate :: audio:: AudioDriver ;
1919use crate :: midi:: drivers:: { MidiDriver , MidiHandler } ;
2020use crate :: midi:: mapper:: MidiMapper ;
21- use crate :: synth:: { SynthClient , SynthClientMutex , SynthAudioHandler , SynthFeedback } ;
2221use crate :: synth:: program:: kiro:: KiroModule ;
23- use crate :: ui:: { Synth as SynthData } ;
22+ use crate :: synth:: { SynthAudioHandler , SynthClient , SynthClientMutex , SynthFeedback } ;
23+ use crate :: ui:: Synth as SynthData ;
2424
2525const SAMPLE_RATE : u32 = 44100 ;
2626
@@ -46,15 +46,17 @@ fn main() -> Result<()> {
4646
4747 // SYNTH CLIENT
4848
49- let synth_client = Arc :: new ( Mutex :: new (
50- SynthClient :: new ( synth_globals. clone ( ) , events_producer, feedback_consumer)
51- ) ) ;
49+ let synth_client = Arc :: new ( Mutex :: new ( SynthClient :: new (
50+ synth_globals. clone ( ) ,
51+ events_producer,
52+ feedback_consumer,
53+ ) ) ) ;
5254
5355 // PROGRAM
5456
5557 let ( program, module) = KiroModule :: new_program (
5658 synth_globals. lfo_waveforms . len ( ) ,
57- synth_globals. osc_waveforms . len ( )
59+ synth_globals. osc_waveforms . len ( ) ,
5860 ) ;
5961
6062 // UI DATA
@@ -93,7 +95,7 @@ impl EventsMidiHandler {
9395 pub fn new ( midi_mapper : MidiMapper < f32 > , synth_client : Arc < Mutex < SynthClient < f32 > > > ) -> Self {
9496 EventsMidiHandler {
9597 midi_mapper,
96- synth_client
98+ synth_client,
9799 }
98100 }
99101}
@@ -102,18 +104,38 @@ impl MidiHandler for EventsMidiHandler {
102104 fn on_message ( & mut self , timestamp : u64 , message : MidiMessage ) {
103105 println ! ( "{:014}: {:?}" , timestamp, message) ;
104106 match message {
105- MidiMessage :: NoteOn { channel : _, key, velocity } => {
106- self . synth_client . lock ( ) . unwrap ( ) . send_note_on ( key, velocity as f32 / 127.0 ) ;
107- } ,
108- MidiMessage :: NoteOff { channel : _, key, velocity } => {
109- self . synth_client . lock ( ) . unwrap ( ) . send_note_off ( key, velocity as f32 / 127.0 ) ;
110- } ,
107+ MidiMessage :: NoteOn {
108+ channel : _,
109+ key,
110+ velocity,
111+ } => {
112+ self
113+ . synth_client
114+ . lock ( )
115+ . unwrap ( )
116+ . send_note_on ( key, velocity as f32 / 127.0 ) ;
117+ }
118+ MidiMessage :: NoteOff {
119+ channel : _,
120+ key,
121+ velocity,
122+ } => {
123+ self
124+ . synth_client
125+ . lock ( )
126+ . unwrap ( )
127+ . send_note_off ( key, velocity as f32 / 127.0 ) ;
128+ }
111129 MidiMessage :: PitchBend { channel : _, value } => {
112130 if let Some ( event) = self . midi_mapper . map_midi_pitch_bend ( value) {
113131 self . synth_client . lock ( ) . unwrap ( ) . send_event ( event) ;
114132 }
115- } ,
116- MidiMessage :: ControlChange { channel : _, controller, value } => {
133+ }
134+ MidiMessage :: ControlChange {
135+ channel : _,
136+ controller,
137+ value,
138+ } => {
117139 if let Some ( event) = self . midi_mapper . map_midi_controller ( controller, value) {
118140 self . synth_client . lock ( ) . unwrap ( ) . send_event ( event) ;
119141 }
@@ -142,31 +164,46 @@ fn create_midi_mapper<F: Float>(program: &Program<F>, module: &KiroModule) -> Mi
142164 midi_mapper. rel_controller ( 26 , program. get_param ( module. params . dca . amplitude . reference ) ) ;
143165 midi_mapper. rel_controller ( 27 , program. get_param ( module. params . dca . pan . reference ) ) ;
144166
145- // midi_mapper.rel_controller(29, program.get_param(module.params.osc2.amplitude.reference));
146- // midi_mapper.rel_controller(30, program.get_param(module.params.osc2.shape.reference));
147- // midi_mapper.rel_controller(31, program.get_param(module.params.osc2.octave.reference));
148- // midi_mapper.rel_controller(32, program.get_param(module.params.osc2.semitones.reference));
149- // midi_mapper.rel_controller(33, program.get_param(module.params.osc2.cents.reference));
167+ // midi_mapper.rel_controller(29, program.get_param(module.params.osc2.amplitude.reference));
168+ // midi_mapper.rel_controller(30, program.get_param(module.params.osc2.shape.reference));
169+ // midi_mapper.rel_controller(31, program.get_param(module.params.osc2.octave.reference));
170+ // midi_mapper.rel_controller(32, program.get_param(module.params.osc2.semitones.reference));
171+ // midi_mapper.rel_controller(33, program.get_param(module.params.osc2.cents.reference));
150172
151173 midi_mapper. rel_controller ( 29 , program. get_param ( module. params . eg1 . attack . reference ) ) ;
152174 midi_mapper. rel_controller ( 30 , program. get_param ( module. params . eg1 . decay . reference ) ) ;
153175 midi_mapper. rel_controller ( 31 , program. get_param ( module. params . eg1 . sustain . reference ) ) ;
154176 midi_mapper. rel_controller ( 32 , program. get_param ( module. params . eg1 . release . reference ) ) ;
155177 midi_mapper. rel_controller ( 33 , program. get_param ( module. params . eg1 . mode . reference ) ) ;
156178 midi_mapper. rel_controller ( 34 , program. get_param ( module. params . eg1 . legato . reference ) ) ;
157- midi_mapper. rel_controller ( 35 , program. get_param ( module. params . eg1 . reset_to_zero . reference ) ) ;
179+ midi_mapper. rel_controller (
180+ 35 ,
181+ program. get_param ( module. params . eg1 . reset_to_zero . reference ) ,
182+ ) ;
158183 midi_mapper. rel_controller ( 36 , program. get_param ( module. params . eg1 . dca_mod . reference ) ) ;
159184
160- midi_mapper. rel_controller ( 41 , program. get_param ( module. params . osc3 . amplitude . reference ) ) ;
185+ midi_mapper. rel_controller (
186+ 41 ,
187+ program. get_param ( module. params . osc3 . amplitude . reference ) ,
188+ ) ;
161189 midi_mapper. rel_controller ( 42 , program. get_param ( module. params . osc3 . shape . reference ) ) ;
162190 midi_mapper. rel_controller ( 43 , program. get_param ( module. params . osc3 . octaves . reference ) ) ;
163- midi_mapper. rel_controller ( 44 , program. get_param ( module. params . osc3 . semitones . reference ) ) ;
191+ midi_mapper. rel_controller (
192+ 44 ,
193+ program. get_param ( module. params . osc3 . semitones . reference ) ,
194+ ) ;
164195 midi_mapper. rel_controller ( 45 , program. get_param ( module. params . osc3 . cents . reference ) ) ;
165196
166- midi_mapper. rel_controller ( 49 , program. get_param ( module. params . osc4 . amplitude . reference ) ) ;
197+ midi_mapper. rel_controller (
198+ 49 ,
199+ program. get_param ( module. params . osc4 . amplitude . reference ) ,
200+ ) ;
167201 midi_mapper. rel_controller ( 50 , program. get_param ( module. params . osc4 . shape . reference ) ) ;
168202 midi_mapper. rel_controller ( 51 , program. get_param ( module. params . osc4 . octaves . reference ) ) ;
169- midi_mapper. rel_controller ( 52 , program. get_param ( module. params . osc4 . semitones . reference ) ) ;
203+ midi_mapper. rel_controller (
204+ 52 ,
205+ program. get_param ( module. params . osc4 . semitones . reference ) ,
206+ ) ;
170207 midi_mapper. rel_controller ( 53 , program. get_param ( module. params . osc4 . cents . reference ) ) ;
171208
172209 midi_mapper. rel_controller ( 54 , program. get_param ( module. params . filter1 . mode . reference ) ) ;
0 commit comments