@@ -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
3549use 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
4256match 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```
0 commit comments