-
Notifications
You must be signed in to change notification settings - Fork 139
/
BXMIDIDevice.h
64 lines (47 loc) · 2.02 KB
/
BXMIDIDevice.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
Boxer is copyright 2011 Alun Bestor and contributors.
Boxer is released under the GNU General Public License 2.0. A full copy of this license can be
found in this XCode project at Resources/English.lproj/BoxerHelp/pages/legalese.html, or read
online at [http://www.gnu.org/licenses/gpl-2.0.txt].
*/
//The BXMIDIDevice protocol defines an interface for emulated (and not-so-emulated)
//MIDI devices, to which BXEmulator can send MIDI output.
#import <Foundation/Foundation.h>
#import "BXMIDIConstants.h"
#pragma mark -
#pragma mark Protocol declaration
@protocol BXMIDIDevice <NSObject>
#pragma mark -
#pragma mark Properties
//The master volume of the MIDI device from 0.0 to 1.0, independent of the volume
//of individual channels. MIDI devices are not expected to support fine-grained
//volume control, but at the very least should mute themselves when their volume
//is set to 0.
- (float) volume;
- (void) setVolume: (float)volume;
//Returns whether this device can play back MT-32 music properly.
- (BOOL) supportsMT32Music;
//Returns whether this device can play back General MIDI music properly.
- (BOOL) supportsGeneralMIDIMusic;
//Returns whether this device is still processing events.
//If YES, further messages should not be sent until dateWhenReady.
- (BOOL) isProcessing;
//The date at which this device will next be able to receive events.
//Sending events before this may result in skipped or truncated messages.
- (NSDate *) dateWhenReady;
#pragma mark -
#pragma mark Instance methods
//Handle a standard MIDI message, which will be between 1 and 3
//bytes long depending on the type of message.
- (void) handleMessage: (NSData *)message;
//Handle a System Exclusive message of arbitrary length.
- (void) handleSysex: (NSData *)message;
//Pause/resume MIDI playback.
- (void) pause;
- (void) resume;
//Close down the connection and free up all resources.
//Should be called by dealloc, but may be called sooner manually.
//After this has been called, the MIDI device is expected to be
//in an unusable state.
- (void) close;
@end