Skip to content

Commit c640128

Browse files
committed
Consolidate MidiEvent type
1 parent 2d267db commit c640128

File tree

7 files changed

+12
-22
lines changed

7 files changed

+12
-22
lines changed

midi-file/src/lib.rs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,10 @@
11
use caw_core::*;
2-
pub use caw_midi::{MidiMessages, MidiMessagesT};
2+
pub use caw_midi::{MidiEvent, MidiMessages, MidiMessagesT};
33
use midly::{
4-
num::u4, Format, MetaMessage, MidiMessage, Smf, Timing, TrackEvent,
5-
TrackEventKind,
4+
Format, MetaMessage, Smf, Timing, TrackEvent, TrackEventKind, num::u4,
65
};
76
use std::{fs, path::Path};
87

9-
#[derive(Debug, Clone, Copy)]
10-
pub struct MidiEvent {
11-
pub channel: u4,
12-
pub message: MidiMessage,
13-
}
14-
158
pub struct MidiFile {
169
smf: Smf<'static>,
1710
}

midi-live/src/lib.rs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
11
use caw_core::{Sig, SigT};
2-
use caw_midi::MidiMessages;
2+
use caw_midi::{MidiEvent, MidiMessages};
33
use midir::{MidiInput, MidiInputConnection, MidiInputPort};
44
use midly::live::LiveEvent;
5-
use midly::{num::u4, MidiMessage};
65
use std::{cell::RefCell, mem, rc::Rc, sync::mpsc};
76

8-
struct MidiEvent {
9-
pub channel: u4,
10-
pub message: MidiMessage,
11-
}
12-
137
pub struct MidiLive {
148
midi_input: MidiInput,
159
midi_input_ports: Vec<MidiInputPort>,
@@ -122,7 +116,10 @@ impl MidiLiveConnection {
122116
let mut message_buffers = self.message_buffers.borrow_mut();
123117
let buffer = &mut message_buffers.buffers[channel as usize];
124118
if buffer.subscribed {
125-
panic!("Midi channel {} subscribed to multiple times. Each midi channel may be subscribed to only once.", channel);
119+
panic!(
120+
"Midi channel {} subscribed to multiple times. Each midi channel may be subscribed to only once.",
121+
channel
122+
);
126123
}
127124
buffer.subscribed = true;
128125
}

midi-udp-client/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ documentation = "https://docs.rs/caw_widgets"
1212
[dependencies]
1313
anyhow = "1.0"
1414
midly = "0.5"
15+
caw_midi = { version = "0.4", path = "../midi" }
1516

1617
[dev-dependencies]
1718
env_logger = "0.11"

midi-udp-client/src/lib.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use caw_midi::MidiEvent;
12
use midly::live::LiveEvent;
23
pub use midly::{MidiMessage, num::u4};
34
use std::net::{Ipv4Addr, ToSocketAddrs, UdpSocket};
@@ -6,11 +7,6 @@ pub struct MidiUdpClient {
67
socket: UdpSocket,
78
}
89

9-
pub struct MidiEvent {
10-
pub channel: u4,
11-
pub message: MidiMessage,
12-
}
13-
1410
impl MidiUdpClient {
1511
pub fn new<A: ToSocketAddrs>(addrs: A) -> anyhow::Result<Self> {
1612
let socket = UdpSocket::bind((Ipv4Addr::UNSPECIFIED, 0))?;

midi-udp-widgets-app/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ repository = "https://github.com/gridbugs/caw.git"
1010

1111
[dependencies]
1212
caw_widgets = { version = "0.4", path = "../widgets" }
13+
caw_midi = { version = "0.4", path = "../midi" }
1314
caw_midi_udp_client = { version = "0.1", path = "../midi-udp-client" }
1415
caw_keyboard = { version = "0.4", path = "../keyboard" }
1516
clap = { version = "4", features = ["derive"] }

midi-udp-widgets-app/src/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
//! run a UDP server which receives MIDI over UDP.
44
55
use caw_keyboard::{Note, note};
6+
use caw_midi::MidiEvent;
67
use caw_midi_udp_client::*;
78
use caw_widgets::{Button, ComputerKeyboard, Knob, Xy};
89
use clap::{Parser, Subcommand};

midi/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,7 @@ where
297297
self.buf.resize_with(ctx.num_samples, Default::default);
298298
let midi_events = self.midi_events.sample(ctx);
299299
{
300+
// Only copy messages from the first sample worth of events.
300301
let midi_messages = &mut self.buf[0];
301302
if let Some(midi_events) = midi_events.iter().next() {
302303
for midi_event in midi_events {

0 commit comments

Comments
 (0)