@@ -8,78 +8,86 @@ use midi2::{
8
8
channel_voice2 :: NoteOn ,
9
9
};
10
10
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
+ ));
18
33
```
19
34
20
35
## Channeled
21
36
22
- ` channel_voice1 ` messages are [ Channeled] ( crate::Channeled ) .
37
+ ` channel_voice2 ` messages are [ Channeled] ( crate::Channeled ) .
23
38
24
39
## Grouped
25
40
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 ) .
28
42
29
43
## Aggregate Message
30
44
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.
33
47
34
48
``` rust
35
49
use midi2 :: {
36
50
prelude :: * ,
37
- channel_voice1 :: ChannelVoice1 ,
51
+ channel_voice2 :: ChannelVoice2 ,
38
52
};
39
53
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" );
41
55
42
56
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 ()),
50
72
}
51
73
```
52
74
53
- ## Generic Over [ Unit ] ( crate::buffer::Unit )
75
+ ## Fixed Size
54
76
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 .
57
79
58
80
``` 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 ;
68
82
69
- assert_eq! (message . data (), & [0xBA , 0x36 , 0x37 ]);
83
+ let _ = NoteOn :: <[u32 ; 2]>:: new ();
84
+ let _ = NoteOn :: <[u32 ; 4]>:: new ();
70
85
```
71
86
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.
79
88
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 ;
82
91
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
85
93
```
0 commit comments