use core::ffi::*;
#[cfg(feature = "objc2")]
use objc2::__framework_prelude::*;
use crate::*;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MIDIMessageType(pub c_uint);
impl MIDIMessageType {
#[doc(alias = "kMIDIMessageTypeUtility")]
pub const Utility: Self = Self(0x0);
#[doc(alias = "kMIDIMessageTypeSystem")]
pub const System: Self = Self(0x1);
#[doc(alias = "kMIDIMessageTypeChannelVoice1")]
pub const ChannelVoice1: Self = Self(0x2);
#[doc(alias = "kMIDIMessageTypeSysEx")]
pub const SysEx: Self = Self(0x3);
#[doc(alias = "kMIDIMessageTypeChannelVoice2")]
pub const ChannelVoice2: Self = Self(0x4);
#[doc(alias = "kMIDIMessageTypeData128")]
pub const Data128: Self = Self(0x5);
#[doc(alias = "kMIDIMessageTypeFlexData")]
pub const FlexData: Self = Self(0xD);
#[doc(alias = "kMIDIMessageTypeUnknownF")]
pub const UnknownF: Self = Self(0xF);
#[doc(alias = "kMIDIMessageTypeStream")]
pub const Stream: Self = Self(0xF);
#[doc(alias = "kMIDIMessageTypeInvalid")]
pub const Invalid: Self = Self(0xFF);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIMessageType {
const ENCODING: Encoding = c_uint::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIMessageType {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MIDICVStatus(pub c_uint);
impl MIDICVStatus {
#[doc(alias = "kMIDICVStatusNoteOff")]
pub const NoteOff: Self = Self(0x8);
#[doc(alias = "kMIDICVStatusNoteOn")]
pub const NoteOn: Self = Self(0x9);
#[doc(alias = "kMIDICVStatusPolyPressure")]
pub const PolyPressure: Self = Self(0xA);
#[doc(alias = "kMIDICVStatusControlChange")]
pub const ControlChange: Self = Self(0xB);
#[doc(alias = "kMIDICVStatusProgramChange")]
pub const ProgramChange: Self = Self(0xC);
#[doc(alias = "kMIDICVStatusChannelPressure")]
pub const ChannelPressure: Self = Self(0xD);
#[doc(alias = "kMIDICVStatusPitchBend")]
pub const PitchBend: Self = Self(0xE);
#[doc(alias = "kMIDICVStatusRegisteredPNC")]
pub const RegisteredPNC: Self = Self(0x0);
#[doc(alias = "kMIDICVStatusAssignablePNC")]
pub const AssignablePNC: Self = Self(0x1);
#[doc(alias = "kMIDICVStatusRegisteredControl")]
pub const RegisteredControl: Self = Self(0x2);
#[doc(alias = "kMIDICVStatusAssignableControl")]
pub const AssignableControl: Self = Self(0x3);
#[doc(alias = "kMIDICVStatusRelRegisteredControl")]
pub const RelRegisteredControl: Self = Self(0x4);
#[doc(alias = "kMIDICVStatusRelAssignableControl")]
pub const RelAssignableControl: Self = Self(0x5);
#[doc(alias = "kMIDICVStatusPerNotePitchBend")]
pub const PerNotePitchBend: Self = Self(0x6);
#[doc(alias = "kMIDICVStatusPerNoteMgmt")]
pub const PerNoteMgmt: Self = Self(0xF);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDICVStatus {
const ENCODING: Encoding = c_uint::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDICVStatus {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MIDISystemStatus(pub c_uint);
impl MIDISystemStatus {
#[doc(alias = "kMIDIStatusStartOfExclusive")]
pub const StatusStartOfExclusive: Self = Self(0xF0);
#[doc(alias = "kMIDIStatusEndOfExclusive")]
pub const StatusEndOfExclusive: Self = Self(0xF7);
#[doc(alias = "kMIDIStatusMTC")]
pub const StatusMTC: Self = Self(0xF1);
#[doc(alias = "kMIDIStatusSongPosPointer")]
pub const StatusSongPosPointer: Self = Self(0xF2);
#[doc(alias = "kMIDIStatusSongSelect")]
pub const StatusSongSelect: Self = Self(0xF3);
#[doc(alias = "kMIDIStatusTuneRequest")]
pub const StatusTuneRequest: Self = Self(0xF6);
#[doc(alias = "kMIDIStatusTimingClock")]
pub const StatusTimingClock: Self = Self(0xF8);
#[doc(alias = "kMIDIStatusStart")]
pub const StatusStart: Self = Self(0xFA);
#[doc(alias = "kMIDIStatusContinue")]
pub const StatusContinue: Self = Self(0xFB);
#[doc(alias = "kMIDIStatusStop")]
pub const StatusStop: Self = Self(0xFC);
#[doc(alias = "kMIDIStatusActiveSending")]
pub const StatusActiveSending: Self = Self(0xFE);
#[doc(alias = "kMIDIStatusActiveSensing")]
pub const StatusActiveSensing: Self = Self(MIDISystemStatus::StatusActiveSending.0);
#[doc(alias = "kMIDIStatusSystemReset")]
pub const StatusSystemReset: Self = Self(0xFF);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDISystemStatus {
const ENCODING: Encoding = c_uint::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDISystemStatus {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MIDISysExStatus(pub c_uint);
impl MIDISysExStatus {
#[doc(alias = "kMIDISysExStatusComplete")]
pub const Complete: Self = Self(0x0);
#[doc(alias = "kMIDISysExStatusStart")]
pub const Start: Self = Self(0x1);
#[doc(alias = "kMIDISysExStatusContinue")]
pub const Continue: Self = Self(0x2);
#[doc(alias = "kMIDISysExStatusEnd")]
pub const End: Self = Self(0x3);
#[doc(alias = "kMIDISysExStatusMixedDataSetHeader")]
pub const MixedDataSetHeader: Self = Self(0x8);
#[doc(alias = "kMIDISysExStatusMixedDataSetPayload")]
pub const MixedDataSetPayload: Self = Self(0x9);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDISysExStatus {
const ENCODING: Encoding = c_uint::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDISysExStatus {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MIDIUtilityStatus(pub c_uint);
impl MIDIUtilityStatus {
#[doc(alias = "kMIDIUtilityStatusNOOP")]
pub const NOOP: Self = Self(0x0);
#[doc(alias = "kMIDIUtilityStatusJitterReductionClock")]
pub const JitterReductionClock: Self = Self(0x1);
#[doc(alias = "kMIDIUtilityStatusJitterReductionTimestamp")]
pub const JitterReductionTimestamp: Self = Self(0x2);
#[doc(alias = "kMIDIUtilityStatusDeltaClockstampTicksPerQuarterNote")]
pub const DeltaClockstampTicksPerQuarterNote: Self = Self(0x3);
#[doc(alias = "kMIDIUtilityStatusTicksSinceLastEvent")]
pub const TicksSinceLastEvent: Self = Self(0x4);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIUtilityStatus {
const ENCODING: Encoding = c_uint::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIUtilityStatus {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UMPStreamMessageStatus(pub c_uint);
impl UMPStreamMessageStatus {
#[doc(alias = "kUMPStreamMessageStatusEndpointDiscovery")]
pub const EndpointDiscovery: Self = Self(0x00);
#[doc(alias = "kUMPStreamMessageStatusEndpointInfoNotification")]
pub const EndpointInfoNotification: Self = Self(0x01);
#[doc(alias = "kUMPStreamMessageStatusDeviceIdentityNotification")]
pub const DeviceIdentityNotification: Self = Self(0x02);
#[doc(alias = "kUMPStreamMessageStatusEndpointNameNotification")]
pub const EndpointNameNotification: Self = Self(0x03);
#[doc(alias = "kUMPStreamMessageStatusProductInstanceIDNotification")]
pub const ProductInstanceIDNotification: Self = Self(0x04);
#[doc(alias = "kUMPStreamMessageStatusStreamConfigurationRequest")]
pub const StreamConfigurationRequest: Self = Self(0x05);
#[doc(alias = "kUMPStreamMessageStatusStreamConfigurationNotification")]
pub const StreamConfigurationNotification: Self = Self(0x06);
#[doc(alias = "kUMPStreamMessageStatusFunctionBlockDiscovery")]
pub const FunctionBlockDiscovery: Self = Self(0x10);
#[doc(alias = "kUMPStreamMessageStatusFunctionBlockInfoNotification")]
pub const FunctionBlockInfoNotification: Self = Self(0x11);
#[doc(alias = "kUMPStreamMessageStatusFunctionBlockNameNotification")]
pub const FunctionBlockNameNotification: Self = Self(0x12);
#[doc(alias = "kUMPStreamMessageStatusStartOfClip")]
pub const StartOfClip: Self = Self(0x20);
#[doc(alias = "kUMPStreamMessageStatusEndOfClip")]
pub const EndOfClip: Self = Self(0x21);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for UMPStreamMessageStatus {
const ENCODING: Encoding = c_uint::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for UMPStreamMessageStatus {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MIDINoteAttribute(pub u8);
impl MIDINoteAttribute {
#[doc(alias = "kMIDINoteAttributeNone")]
pub const None: Self = Self(0x0);
#[doc(alias = "kMIDINoteAttributeManufacturerSpecific")]
pub const ManufacturerSpecific: Self = Self(0x1);
#[doc(alias = "kMIDINoteAttributeProfileSpecific")]
pub const ProfileSpecific: Self = Self(0x2);
#[doc(alias = "kMIDINoteAttributePitch")]
pub const Pitch: Self = Self(0x3);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDINoteAttribute {
const ENCODING: Encoding = u8::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDINoteAttribute {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MIDIProgramChangeOptions(pub u8);
bitflags::bitflags! {
impl MIDIProgramChangeOptions: u8 {
#[doc(alias = "kMIDIProgramChangeBankValid")]
const BankValid = 0x1;
}
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIProgramChangeOptions {
const ENCODING: Encoding = u8::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIProgramChangeOptions {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MIDIPerNoteManagementOptions(pub u8);
bitflags::bitflags! {
impl MIDIPerNoteManagementOptions: u8 {
#[doc(alias = "kMIDIPerNoteManagementReset")]
const Reset = 0x1;
#[doc(alias = "kMIDIPerNoteManagementDetach")]
const Detach = 0x2;
}
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIPerNoteManagementOptions {
const ENCODING: Encoding = u8::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIPerNoteManagementOptions {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MIDIUMPFunctionBlockMIDI1Info(pub i32);
impl MIDIUMPFunctionBlockMIDI1Info {
#[doc(alias = "kMIDIUMPFunctionBlockMIDI1InfoNotMIDI1")]
pub const NotMIDI1: Self = Self(0);
#[doc(alias = "kMIDIUMPFunctionBlockMIDI1InfoUnrestrictedBandwidth")]
pub const UnrestrictedBandwidth: Self = Self(1);
#[doc(alias = "kMIDIUMPFunctionBlockMIDI1InfoRestrictedBandwidth")]
pub const RestrictedBandwidth: Self = Self(2);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIUMPFunctionBlockMIDI1Info {
const ENCODING: Encoding = i32::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIUMPFunctionBlockMIDI1Info {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MIDIUMPFunctionBlockUIHint(pub i32);
impl MIDIUMPFunctionBlockUIHint {
#[doc(alias = "kMIDIUMPFunctionBlockUIHintUnknown")]
pub const Unknown: Self = Self(0);
#[doc(alias = "kMIDIUMPFunctionBlockUIHintReceiver")]
pub const Receiver: Self = Self(1);
#[doc(alias = "kMIDIUMPFunctionBlockUIHintSender")]
pub const Sender: Self = Self(2);
#[doc(alias = "kMIDIUMPFunctionBlockUIHintSenderReceiver")]
pub const SenderReceiver: Self = Self(3);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIUMPFunctionBlockUIHint {
const ENCODING: Encoding = i32::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIUMPFunctionBlockUIHint {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MIDIUMPFunctionBlockDirection(pub i32);
impl MIDIUMPFunctionBlockDirection {
#[doc(alias = "kMIDIUMPFunctionBlockDirectionUnknown")]
pub const Unknown: Self = Self(0);
#[doc(alias = "kMIDIUMPFunctionBlockDirectionInput")]
pub const Input: Self = Self(1);
#[doc(alias = "kMIDIUMPFunctionBlockDirectionOutput")]
pub const Output: Self = Self(2);
#[doc(alias = "kMIDIUMPFunctionBlockDirectionBidirectional")]
pub const Bidirectional: Self = Self(3);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIUMPFunctionBlockDirection {
const ENCODING: Encoding = i32::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIUMPFunctionBlockDirection {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UMPStreamMessageFormat(pub u8);
impl UMPStreamMessageFormat {
#[doc(alias = "kUMPStreamMessageFormatComplete")]
pub const Complete: Self = Self(0x00);
#[doc(alias = "kUMPStreamMessageFormatStart")]
pub const Start: Self = Self(0x01);
#[doc(alias = "kUMPStreamMessageFormatContinuing")]
pub const Continuing: Self = Self(0x02);
#[doc(alias = "kUMPStreamMessageFormatEnd")]
pub const End: Self = Self(0x03);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for UMPStreamMessageFormat {
const ENCODING: Encoding = u8::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for UMPStreamMessageFormat {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
pub type MIDIUInteger2 = u8;
pub type MIDIUInteger4 = u8;
pub type MIDIUInteger7 = u8;
pub type MIDIUInteger14 = u16;
pub type MIDIUInteger28 = u32;
pub static kMIDIUInteger2Max: MIDIUInteger2 = 0x3;
pub static kMIDIUInteger4Max: MIDIUInteger4 = 0xF;
pub static kMIDIUInteger7Max: MIDIUInteger7 = 0x7F;
pub static kMIDIUInteger14Max: MIDIUInteger14 = 0x3FFF;
pub static kMIDIUInteger28Max: MIDIUInteger28 = 0xFFFFFFF;
pub type MIDIUMPGroupNumber = MIDIUInteger4;
pub type MIDIChannelNumber = MIDIUInteger4;
pub type MIDICIDeviceID = MIDIUInteger7;
pub static kMIDIDeviceIDUMPGroup: MIDICIDeviceID = 0x7e;
pub static kMIDIDeviceIDFunctionBlock: MIDICIDeviceID = 0x7f;
pub type MIDICIMUID = MIDIUInteger28;
pub type MIDIMessage_32 = u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDIMessage_64 {
pub word0: u32,
pub word1: u32,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIMessage_64 {
const ENCODING: Encoding =
Encoding::Struct("MIDIMessage_64", &[<u32>::ENCODING, <u32>::ENCODING]);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIMessage_64 {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDIMessage_96 {
pub word0: u32,
pub word1: u32,
pub word2: u32,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIMessage_96 {
const ENCODING: Encoding = Encoding::Struct(
"MIDIMessage_96",
&[<u32>::ENCODING, <u32>::ENCODING, <u32>::ENCODING],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIMessage_96 {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDIMessage_128 {
pub word0: u32,
pub word1: u32,
pub word2: u32,
pub word3: u32,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIMessage_128 {
const ENCODING: Encoding = Encoding::Struct(
"MIDIMessage_128",
&[
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
<u32>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIMessage_128 {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
impl MIDIMessageType {
}
pub static kMIDI1UPMaxSysexSize: u8 = 6;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDIUniversalMessage {
pub r#type: MIDIMessageType,
pub group: u8,
pub reserved: [u8; 3],
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIUniversalMessage {
const ENCODING: Encoding = Encoding::Struct(
"MIDIUniversalMessage",
&[
<MIDIMessageType>::ENCODING,
<u8>::ENCODING,
<[u8; 3]>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIUniversalMessage {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[cfg(feature = "MIDIServices")]
pub type MIDIEventVisitor =
Option<unsafe extern "C-unwind" fn(*mut c_void, MIDITimeStamp, MIDIUniversalMessage)>;
#[cfg(feature = "MIDIServices")]
impl MIDIEventList {
#[doc(alias = "MIDIEventListForEachEvent")]
#[cfg(feature = "MIDIServices")]
#[inline]
pub unsafe fn for_each_event(
evtlist: *const MIDIEventList,
visitor: MIDIEventVisitor,
visitor_context: *mut c_void,
) {
extern "C-unwind" {
fn MIDIEventListForEachEvent(
evtlist: *const MIDIEventList,
visitor: MIDIEventVisitor,
visitor_context: *mut c_void,
);
}
unsafe { MIDIEventListForEachEvent(evtlist, visitor, visitor_context) }
}
}
extern "C-unwind" {
#[cfg(feature = "MIDIServices")]
#[deprecated = "renamed to `MIDIEventList::for_each_event`"]
pub fn MIDIEventListForEachEvent(
evtlist: *const MIDIEventList,
visitor: MIDIEventVisitor,
visitor_context: *mut c_void,
);
}