Skip to content

Commit ac5a69f

Browse files
author
Ben Leadbetter
committed
Merge branch 'release/0.5.3'
2 parents 53ef5c1 + e4a6bf5 commit ac5a69f

34 files changed

+303
-73
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 0.5.1
1+
# 0.5.3
22
docs: flex data module docs
33
docs: adds system common module docs
44
docs: channel voice 2 module docs

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "midi2"
3-
version = "0.5.2"
3+
version = "0.5.3"
44
description = "Ergonomic, versatile, strong types wrapping MIDI 2.0 message data."
55
edition = "2021"
66
readme = "README.md"
@@ -35,7 +35,7 @@ utility = []
3535

3636
[dependencies]
3737
derive_more = { version = "0.99.17", features = ["from"], default-features = false }
38-
midi2_proc = { version = "0.5.2", path = "midi2_proc" }
38+
midi2_proc = { version = "0.5.3", path = "midi2_proc" }
3939
ux = "0.1.6"
4040

4141
[dev-dependencies]

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ You'll want to setup midi2 without default features to compile
156156
without the `std` feature.
157157

158158
```toml
159-
midi2 = { version = "0.5.2", default-features = false, features = ["channel-voice2", "sysex7"], }
159+
midi2 = { version = "0.5.3", default-features = false, features = ["channel-voice2", "sysex7"], }
160160
```
161161

162162
### Generic Representation

midi2_proc/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "midi2_proc"
33
description = "Internal procedural macro crate. Only intended for use with midi2"
4-
version = "0.5.2"
4+
version = "0.5.3"
55
edition = "2021"
66
readme = "README.md"
77
license = "MIT OR Apache-2.0"

src/channel_voice2.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#![doc = include_str!("channel_voice2/README.md")]
2+
13
mod assignable_controller;
24
mod assignable_per_note_controller;
35
mod attribute;

src/channel_voice2/README.md

Lines changed: 53 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -8,78 +8,86 @@ use midi2::{
88
channel_voice2::NoteOn,
99
};
1010

11-
let mut message = ControlChange::<[u32; 4]>::new();
12-
message.set_channel(u4::new(0xA));
13-
message.set_group(u4::new(0xC));
14-
message.set_control(u7::new(0x36));
15-
message.set_control_data(u7::new(0x37));
16-
17-
assert_eq!(message.data(), &[0x2CBA_3637]);
11+
let mut message = NoteOn::<[u32; 4]>::new();
12+
message.set_group(u4::new(0x8));
13+
message.set_channel(u4::new(0x8));
14+
message.set_note(u7::new(0x5E));
15+
message.set_velocity(0x6A14);
16+
message.set_attribute(Some(channel_voice2::NoteAttribute::Pitch7_9 {
17+
note: u7::new(0x74),
18+
pitch_up: u9::new(0x18A),
19+
}));
20+
21+
assert_eq!(message.data(), &[0x4898_5E03, 0x6A14_E98A]);
22+
assert_eq!(message.group(), u4::new(0x8));
23+
assert_eq!(message.channel(), u4::new(0x8));
24+
assert_eq!(message.note(), u7::new(0x5E));
25+
assert_eq!(message.velocity(), 0x6A14);
26+
assert_eq!(
27+
message.attribute(),
28+
Some(channel_voice2::NoteAttribute::Pitch7_9 {
29+
note: u7::new(0x74),
30+
pitch_up: u9::new(0x18A),
31+
}
32+
));
1833
```
1934

2035
## Channeled
2136

22-
`channel_voice1` messages are [Channeled](crate::Channeled).
37+
`channel_voice2` messages are [Channeled](crate::Channeled).
2338

2439
## Grouped
2540

26-
`channel_voice1` messages are [Grouped](crate::Grouped)
27-
when backed with [Ump](crate::buffer::Ump) buffers.
41+
`channel_voice2` messages are [Grouped](crate::Grouped).
2842

2943
## Aggregate Message
3044

31-
There is a single aggregate [ChannelVoice1] enum type which
32-
can represent an arbitrary `channel_voice1` message.
45+
There is a single aggregate [ChannelVoice2] enum type which
46+
can represent an arbitrary `channel_voice2` message.
3347

3448
```rust
3549
use midi2::{
3650
prelude::*,
37-
channel_voice1::ChannelVoice1,
51+
channel_voice2::ChannelVoice2,
3852
};
3953

40-
let mut message = ChannelVoice1::try_from(&[0x2CBA_3637_u32][..]).expect("Valid data");
54+
let mut message = ChannelVoice2::try_from(&[0x4898_5E03, 0x6A14_E98A][..]).expect("Valid data");
4155

4256
match message {
43-
ChannelVoice1::ChannelPressure(m) => println!("channel_pressure {:?}", m.data()),
44-
ChannelVoice1::ControlChange(m) => println!("control_change {:?}", m.data()),
45-
ChannelVoice1::KeyPressure(m) => println!("key_pressure {:?}", m.data()),
46-
ChannelVoice1::NoteOff(m) => println!("note_off {:?}", m.data()),
47-
ChannelVoice1::NoteOn(m) => println!("note_on {:?}", m.data()),
48-
ChannelVoice1::PitchBend(m) => println!("pitch_bend {:?}", m.data()),
49-
ChannelVoice1::ProgramChange(m) => println!("program_change {:?}", m.data()),
57+
ChannelVoice2::AssignableController(m) => println!("assignable_controller {:?}", m.data()),
58+
ChannelVoice2::AssignablePerNoteController(m) => println!("assignable_per_note_controller {:?}", m.data()),
59+
ChannelVoice2::ChannelPitchBend(m) => println!("channel_pitch_bend {:?}", m.data()),
60+
ChannelVoice2::ChannelPressure(m) => println!("channel_pressure {:?}", m.data()),
61+
ChannelVoice2::ControlChange(m) => println!("control_change {:?}", m.data()),
62+
ChannelVoice2::KeyPressure(m) => println!("key_pressure {:?}", m.data()),
63+
ChannelVoice2::NoteOff(m) => println!("note_off {:?}", m.data()),
64+
ChannelVoice2::NoteOn(m) => println!("note_on {:?}", m.data()),
65+
ChannelVoice2::PerNoteManagement(m) => println!("per_note_management {:?}", m.data()),
66+
ChannelVoice2::PerNotePitchBend(m) => println!("per_note_pitch_bend {:?}", m.data()),
67+
ChannelVoice2::ProgramChange(m) => println!("program_change {:?}", m.data()),
68+
ChannelVoice2::RegisteredController(m) => println!("registered_controller {:?}", m.data()),
69+
ChannelVoice2::RegisteredPerNoteController(m) => println!("registered_per_note_controller {:?}", m.data()),
70+
ChannelVoice2::RelativeAssignableController(m) => println!("relative_assignable_controller {:?}", m.data()),
71+
ChannelVoice2::RelativeRegisteredController(m) => println!("relative_registered_controller {:?}", m.data()),
5072
}
5173
```
5274

53-
## Generic Over [Unit](crate::buffer::Unit)
75+
## Fixed Size
5476

55-
`channel_voice1` messages can also be represented with [Bytes](crate::buffer::Bytes) buffers
56-
as well as [Ump](crate::buffer::Ump) buffers.
77+
All `channel_voice1` messages are Fixed size and will fit
78+
into an array of [u32] size 2 or greater.
5779

5880
```rust
59-
use midi2::{
60-
prelude::*,
61-
channel_voice1::ControlChange,
62-
};
63-
64-
let mut message = ControlChange::<[u8; 3]>::new();
65-
message.set_channel(u4::new(0xA));
66-
message.set_control(u7::new(0x36));
67-
message.set_control_data(u7::new(0x37));
81+
use midi2::channel_voice2::NoteOn;
6882

69-
assert_eq!(message.data(), &[0xBA, 0x36, 0x37]);
83+
let _ = NoteOn::<[u32; 2]>::new();
84+
let _ = NoteOn::<[u32; 4]>::new();
7085
```
7186

72-
## Fixed Size
73-
74-
All `channel_voice1` messages are Fixed size.
75-
76-
```rust
77-
use midi2::channel_voice1::KeyPressure;
78-
87+
Arrays smaller than two are invalid backing buffers.
7988

80-
// All channel_voice1 bytes-backed messages fit into a `[u8; 3]`
81-
let _ = KeyPressure::<[u8; 3]>::new();
89+
```rust,compile_fail,E0080
90+
use midi2::channel_voice2::NoteOn;
8291
83-
// All channel_voice1 ump-backed messages fit into a `[u32; 1]`
84-
let _ = KeyPressure::<[u32; 1]>::new();
92+
let _ = NoteOn::<[u32; 1]>::new(); // compile err - buffer too short
8593
```

src/channel_voice2/assignable_controller.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ use crate::{
66

77
pub(crate) const STATUS: u8 = 0b0011;
88

9+
/// MIDI 2.0 Channel Voice Assignable Controller Message
10+
///
11+
/// See the [module docs](crate::channel_voice2) for more info.
912
#[midi2_proc::generate_message(Via(crate::channel_voice2::ChannelVoice2), FixedSize, MinSizeUmp(2))]
1013
struct AssignableController {
1114
#[property(common_properties::UmpMessageTypeProperty<UMP_MESSAGE_TYPE>)]

src/channel_voice2/assignable_per_note_controller.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ use crate::{
66

77
pub(crate) const STATUS: u8 = 0b0001;
88

9+
/// MIDI 2.0 Channel Voice Assignable Per Note Controller Message
10+
///
11+
/// See the [module docs](crate::channel_voice2) for more info.
912
#[midi2_proc::generate_message(Via(crate::channel_voice2::ChannelVoice2), FixedSize, MinSizeUmp(2))]
1013
struct AssignablePerNoteController {
1114
#[property(common_properties::UmpMessageTypeProperty<UMP_MESSAGE_TYPE>)]

src/channel_voice2/channel_pitch_bend.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ use crate::{
66

77
pub(crate) const STATUS: u8 = 0b1110;
88

9+
/// MIDI 2.0 Channel Voice Channel Pitch Bend Message
10+
///
11+
/// See the [module docs](crate::channel_voice2) for more info.
912
#[midi2_proc::generate_message(Via(crate::channel_voice2::ChannelVoice2), FixedSize, MinSizeUmp(2))]
1013
struct ChannelPitchBend {
1114
#[property(common_properties::UmpMessageTypeProperty<UMP_MESSAGE_TYPE>)]

src/channel_voice2/channel_pressure.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ use crate::{
66

77
pub(crate) const STATUS: u8 = 0b1101;
88

9+
/// MIDI 2.0 Channel Voice Channel Pressure Message
10+
///
11+
/// See the [module docs](crate::channel_voice2) for more info.
912
#[midi2_proc::generate_message(Via(crate::channel_voice2::ChannelVoice2), FixedSize, MinSizeUmp(2))]
1013
struct ChannelPressure {
1114
#[property(common_properties::UmpMessageTypeProperty<UMP_MESSAGE_TYPE>)]

0 commit comments

Comments
 (0)