试图在PortMidi中打开输入

时间:2011-06-28 12:28:56

标签: c++ audio midi

我正在尝试打开midi端口,使用PortMidi在C ++中从midi键盘读取事件。我使用GetDeviceInfo找到了键盘的设备ID但无法打开输入。

该功能如下所示:

    Pm_OpenInput    (   PortMidiStream **   stream,
                        PmDeviceID  inputDevice,
                        void *  inputDriverInfo,
                        long    bufferSize,
                        PmTimeProcPtr   time_proc,
                        void *  time_info    
                    )   

该功能背后的完整文档是here

我的实施......

PortMidiStream **stream;
Pm_OpenInput(stream, 12, NULL, 128, NULL, NULL);

..给出错误

  

运行时检查失败#3 - 正在使用变量'stream'而未初始化。

..这是真的,因为我没有初始化它。我查看了PortMidi.h和大多数互联网试图找到PortMidiStream以及如何初始化它没有成功。头文件只有一个typedef和一个评论说

  

单个PortMidiStream是一个   打开的MIDI设备的描述符

没有多大帮助。

赞赏任何想法

约旦

P.S-这是PortMidi下载页面http://sourceforge.net/apps/trac/portmedia/wiki/portmidi

1 个答案:

答案 0 :(得分:4)

文档说明

  

stream是一个地址   将使用PortMidiStream指针   收到一个指向新打开的指针   流。

所以修改你的代码就可以完全按照它所说的去做。

PortMidiStream *stream; /* A PortMidiStream pointer */
Pm_OpenInput(&stream, 12, NULL, 128, NULL, NULL); /* Pass the address of the pointer */

这是C中用于返回指针值的常用习惯用法。