文档章节

WinAPI: midiOutOpen - 打开 MIDI 输出设备

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 360
阅读 22
收藏 0
提示:
因为其中的回调函数是在中断时间内访问的, 必须在 DLL 中; 要访问的数据都必须是在固定的数据段中; 除了
PostMessage
timeGetSystemTime
timeGetTime
timeSetEvent
timeKillEvent
midiOutShortMsg
midiOutLongMsg
OutputDebugString 外, 也不能有其他系统调用.

//声明:
midiOutOpen(
  lphMidiOut: PHMIDIOUT; {用于返回设备句柄的指针; 之后再调用其他函数应该使用这个句柄}
  uDeviceID: UINT;       {设备ID; 可以指定 MIDI_MAPPER = UINT(-1);}
  dwCallback: DWORD      {回调函数地址或窗口句柄; 若不使用回调机制, 设为 nil}
  dwInstance: DWORD      {给回调函数的实例数据; 不用于窗口}
  dwFlags: DWORD         {打开选项}
): MMRESULT;             {成功返回 0; 可能的错误值见下:}

MMSYSERR_BADDEVICEID = 2;  {设备ID超界}
MMSYSERR_ALLOCATED   = 4;  {指定的资源已被分配}
MMSYSERR_NOMEM       = 7;  {不能分配或锁定内存}
MIDIERR_NOMAP        = 66; {当前没有 MIDI 映射, 只有打开映射程序才可能发生}
MIDIERR_NODEVICE     = 68; {MIDI 映射中的端口不存在, 只有打开映射程序才可能发生}

//打开选项 dwFlags 的可选值:
CALLBACK_NULL     = $00000000; {当 dwCallback 是 nil 时指定}
CALLBACK_WINDOW   = $00010000; {当 dwCallback 是窗口句柄时指定}
CALLBACK_FUNCTION = $00030000; {当 dwCallback 是函数指针时指定}

//如果选择窗口接受回调信息, 可能会发送到窗口的消息有:
MM_MOM_OPEN  = $3C7;
MM_MOM_CLOSE = $3C8;
MM_MOM_DONE  = $3C9;

//如果选择函数接受回调信息, 可能会发送给函数的消息有:
MOM_OPEN  = MM_MOM_OPEN;
MOM_CLOSE = MM_MOM_CLOSE;
MOM_DONE  = MM_MOM_DONE;

 
 
 
 
 

 

 

  
//举例:

本文转载自:http://www.cnblogs.com/del/archive/2008/02/23/1079109.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
Windows 音频知识学习汇总

使用低级音频函数 WaveX : http://blog.csdn.net/kvw3000/article/details/68468 控制着不同的音频设备, 包括 wave, midi 和辅助音频设备. 低级服务包括: (1) 查询音频设备. (2) 打开和关闭设...

刘军兴
2015/12/16
19
0
TensorFlow应用实战-6-AI作曲环境搭建

用TensorFlow开发会作曲的AI 背景和知识点介绍 人工智能的不断火热。 Google的Magenta(洋红色)项目 https://magenta.tensorflow.org/ Make Music and Art Using Machine Learning 项目的源代...

天涯明月笙
04/11
0
0
谷歌 Chrome 43 支持网络 MIDI 硬件

谷歌已经推出了Chrome 浏览器 43 最终版,适用于Windows,Mac和Linux,其主要新特性是支持硬件MIDI设备。Chrome浏览器43最终版支持MIDI硬件,经由一个全新的网络MIDI API来实现,它允许网站直...

oschina
2015/05/21
2.9K
16
钢琴曲演奏软件--FreePiano

FreePiano是一款使用电脑键盘演奏钢琴音曲的开源软件。 FreePiano的特点: 完全免费的,您不需要购买就可以使用全部的功能。 直接调用VSTi音源,不需要安装虚拟MIDI设备。 支持多种音频输出方...

匿名
2013/05/27
2.4K
1
MuseScore 1.0 发布,音乐制谱软件

MuseScore 是一个可运行在多种平台上的 WYSIWYG 的音乐制谱软件,它开源免费,遵循 GNU GPL 许可方式发布。 主要特点: WYSIWYG(所见即所得),在乐谱纸上输入音符 不限制谱表个数 多声部:...

小编辑
2011/02/08
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Fragment 退出动画导致fragment退出失败问题(罕见问题)

问题背景: Fragment: A , B; A is hidden; B is added; 操作: 返回键的时候执行操作: B transaction remove ; A transaction attach; 执行移除动画。transaction.setCustomAnimations(i......

Carlyle_Lee
19分钟前
1
0
Java并发编程学习四:CountDownLatch,CyclicBarrier,Semaphore以及原子类

上篇文章线程同步的关键字以及理解中介绍了一下多线程同步协作之间经常使用的关键字,今天这篇文章就介绍一下一些同步类以及原子类的使用吧。Java中提供了不少的同步类,如:CountDownLatch,...

JerryLin123
25分钟前
1
0
面试专题-框架

Spring Spring有哪些特点? 使用Spring有什么好处? 1 应用解耦 2 依赖注入 3 AOP 4 事务管理 5 MVC 6 集成开发 Spring应用程序看起来像什么? 一些接口及其实现 一些POJO类 一些xml配置文件 ...

这很耳东先生
37分钟前
2
0
锁和分布式锁

锁的由来: 多线程环境中,经常遇到多个线程访问同一个 共享资源 ,这时候作为开发者必须考虑如何维护数据一致性,这就需要某种机制来保证只有满足某个条件(获取锁成功)的线程才能访问资源...

Ala6
37分钟前
3
0
Vue + Vue-CLI + Mint-UI 移动端开发新手示例实战 - by dogstar

Vue + Vue-CLI + Mint-UI 移动端开发新手示例实战 - by dogstar 项目源代码,在码云上:https://gitee.com/dogstar/a-vue-mint-demo 快速使用 # 安装依赖npm install# 本地开发调试 lo...

暗夜在火星
50分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部