Tag: coremidi

我如何在Swift中定义一个MIDINotifyProc?

我试图让MIDI会话使用swift代码,并且遇到了一些代表的问题。 这是Objective-C中的一个工作示例。 OSStatus status = MIDIClientCreate(CFSTR("MIDI Client"), MIDIStateChangedHandler, nil, &client); void MIDIStateChangedHandler(const MIDINotification *message, void *refCon) { NSLog(@"MIDIStateChanged!"); } 这就是我用Swift尝试的: var status = MIDIClientCreate("the client", notifyProc: MIDIStateChangedHandler, notifyRefCon: nil, outClient: client) func MIDIStateChangedHandler(message: MIDINotification, refCon: UnsafeMutablePointer<Void>) { println("MIDIStateChanged!"); } 这是我无法弄清楚的错误(我是iOS新手,拥有多年的C#经验): (StringLiteralConvertible,notifyProc:(MIDINotification,refCon:UnsafeMutablePointer) – >(),notifyRefCon:NilLiteralConvertible,outClient:@lvalue MIDIClientRef!)'来input'StringLiteralConvertible' var status = MIDIClientCreate("the client", notifyProc: MIDIStateChangedHandler, notifyRefCon: nil, outClient: client) […]

可选框架不工作(CoreAudioKit不在模拟器上)

为了让MIDI通过蓝牙工作,我需要使用CoreAudioKit框架。 这工作完美,但我不能在模拟器上编译。 使框架“可选”没有帮助,错误是ld: framework not found CoreAudioKit 我认为它应该按照文档工作 删除框架允许我的代码进行编译 我已经得到了代码,这就是为什么我可以删除没有问题的框架。 #if !TARGET_IPHONE_SIMULATOR #import <CoreAudioKit/CoreAudioKit.h> #endif 我怎样才能得到这个可选的编译工作?

任何人都可以告诉我如何在iOS上使用CoreMIDI?

我一直无法find关于iOS的CoreMIDI的很多信息。 是否可以通过向设备发送消息来播放MIDI声音。 iPhone或iPad是否安装了MIDI设备,或者是否必须连接一个设备连接到?

计算iOS的CoreMIDI Pitch Bend值?

我需要在iOS中从原始UInt16值手工组装14位MIDI Pitch Bend值。 我想知道有没有人有机会提出一个优雅的解决scheme? 这就是我所在的位置 – 我将有机会在今天晚些时候对此进行testing,但是如果在此之前我听到,很好: 首先,一些好奇的MIDI预备。 MIDI Pitch Bend被分成一个状态字节和两个数据字节(这是一个14位控制器),这两个数据字节都与它们的状态字节相关联,这两个数据字节都带有一个零状态位 ,MIDI Spec使它们按照MSB – > LSB (编辑:更新,它实际上是状态 – > LSB – > MSB ) (即1110 0000,011111111,01111111) 我们面临的挑战是如何在iOS上将ARM / Intel 16位UInt16分解为两个7位段,并且对MIDI有意义? 请记住,因为我们正在处理一个无符号的整数,所以0值不是中性弯音,而是整个音高下降 – 中音弯曲定义为8192,而16,383是全音高。 所以这里是我最好的猜测如何做到这一点: UInt16 msbAnd = base10ValueUInt16 & 16256; //clearing out LSB UInt16 msbAndShift = msbAnd << 1; //shift into leading Byte, with 0 […]

ios – 混合midi文件,每个文件都有自己的声音字体

我正在寻找一种方法来混合2个或更多的midi文件,每个文件都有自己的声音文件。 我已经find了一个文件的下面的代码,并试图做多个音乐播放器,但我想这不应该是正确的做法。 另外我每秒都会听到一些奇怪的stream行音乐。 那么有没有其他的方法,也许没有音乐播放器和音乐序列的方法,只使用au单位? 这是我在另一个线程中find的代码: -(void) playMusic:(NSString*) name { NSString *presetURLPath = [[NSBundle mainBundle] pathForResource:@"GortsMiniPianoJ1" ofType:@"SF2"]; NSURL * presetURL = [NSURL fileURLWithPath:presetURLPath]; [self loadFromDLSOrSoundFont: (NSURL *)presetURL withPatch: (int)3]; NSString *midiFilePath = [[NSBundle mainBundle] pathForResource:name ofType:@"mid"]; NSURL * midiFileURL = [NSURL fileURLWithPath:midiFilePath]; NewMusicPlayer(&musicPlayer); if (NewMusicSequence(&musicSequence) != noErr) { [NSException raise:@"play" format:@"Can't create MusicSequence"]; } if(MusicSequenceFileLoad(musicSequence, (CFURLRef)midiFileURL, […]