对不起,我不会说英语(我正在使用谷歌翻译).
我对Xcode很新.我正在尝试编写一个应用程序,可以收听收到的midi消息并将其显示在NSTextField(就像midi监视器).
我使用CoreMidi,我能够将应用程序连接到所需的输入并接收Midi消息(我可以使用它打印NSLog).我怎样才能输出这些消息(我能读到的消息NSLog)NSTextField?
我设置了一个属性,@synthesize并在接口生成器中连接了NSTextField,但是从midi回调函数我无法访问它(它表示"未声明").
这里是MyDocument.h中的代码
@property (retain,nonatomic) IBOutlet NSTextField *test_messages;
Run Code Online (Sandbox Code Playgroud)
这里是MyDocument.m中的代码
@synthesize test_messages;
void midiInputCallback (const MIDIPacketList *list, void *procRef, void *srcRef) {
id POOL = [[NSAutoreleasePool alloc] init];
UInt16 nBytes;
NSString *ric;
const MIDIPacket *packet = &list->packet[0];
for (unsigned int i = 0; i < list->numPackets; i++) {
nBytes = packet->length;
UInt16 iByte, size;
iByte = 0;
while (iByte < nBytes) {
size = 0;
unsigned char …Run Code Online (Sandbox Code Playgroud) 我想知道如何使用CoreMidi从我的计算机上运行的主机(简单的Ableton Live或Logic Pro)接收MIDI速度(bpm)?
MIDI标准是否支持此功能?如果是,那么请告诉我Objective C代码示例.我正在使用petegoodliffe-PGMidi发送MIDI.但在这种情况下,我想从主机接收节奏.
谢谢.
我一直在研究学习核心音频书中的例子.本书很好地解释了API及其工作原理,但并没有真正讨论如何将它们集成到Cocoa项目中.
我真的不确定如何将核心音频/ midi编程与obj-c类混合.是否有任何好的教程可以解释这样做的标准做法?
目前我脑海中的一些问题是:
有一件事我不明白MusicDeviceMIDIEvent。在我见过的每个示例(搜索 Github 和 Apple 示例)中,它总是在主线程中使用。现在,为了使用示例偏移参数,文档说明:
inOffsetSampleFrame:如果您从音频单元的渲染线程调度 MIDI 事件,那么您可以提供一个样本偏移量,音频单元在其下一个音频单元渲染中应用该事件时可能会应用该偏移量。这允许您安排样本、应用 MIDI 命令的时间,这在开始新音符时尤为重要。如果您不是在音频单元的渲染线程中进行调度,则应将此值设置为 0
尽管如此,即使在最简单的情况下,您只有一个采样器音频单元和一个 io 单元,您如何从音频单元的渲染线程安排 MIDI 事件,因为采样器不允许渲染回调,即使它允许(或者,如果您使用 io 的回调只是为了点击),它会让人感觉很黑,因为渲染回调不是用于安排 MIDI 事件?
如何从音频单元的渲染线程正确调用此函数?
当 MIDI 设备连接到 iOS 设备时,是否有 API 会通知我?我一直试图在 CoreMidi API 中找到它,但没有成功。我只能在给定时刻列出所有连接的设备。
如果可能,我想避免投票,所以这将是有益的。