主要内容

设计和MIDI合成器

MIDI协议使您能够发送和接收信息描述的声音。MIDI合成器是一个设备或软件,综合声音响应传入的MIDI数据。在最简单的形式中,MIDI合成器MIDI注意消息转换为音频信号。更复杂的合成器提供微调控制产生的声音,使您能够模拟工具。在本教程中,您将创建一个单声道的合成器,MIDI注意消息流转换为实时的音频信号。

了解与MIDI设备一般来说,明白了MIDI设备接口

MIDI注意消息转换成声波

MIDI注意信息打包为一个NoteOnNoteOffmidimsg对象在音频工具箱™。这两个NoteOnNoteOffmidimsg对象有请注意速度属性:

  • 速度报告表明有多难。按照惯例,注意与速度设置为0表示注意消息的消息。代表注意消息与注意消息是使用运行状态时更有效率。

  • 请注意表明音频信号的频率。的请注意属性值在0和127之间,包容性。MIDI协议指定60中央C,与所有其他相对于报告中指出。上创建一个MIDI注意消息表明中央C。

频道= 1;注意= 60;速度= 64;味精= midimsg (“NoteOn”通道,请注意,速度)
味精= MIDI消息:NoteOn通道:1注意:60速度:64时间:0 (90 3 c 40)

解释注意财产为频率,用平等的规模和A440公约:

频率= 440 * 2 ^ ((msg.note - 69) / 12)
频率= 261.6256

维持一些MIDI合成器使用攻击衰变释放(ADSR)信封来控制音量,或振幅,注意随着时间的推移。为简单起见,使用注意速度来确定振幅。从概念上讲,如果一个关键的打击,由此产生的声音是响亮。的速度属性值在0和127之间,包容性。正常速度和解释注意振幅。

振幅=味精(1).Velocity / 127
幅值= 0.5039

合成一个正弦波,创建一个audioOscillator系统对象™。玩你的电脑的声音默认的音频输出设备,创建一个audioDeviceWriter系统对象。一步两秒,听注意的对象。

osc = audioOscillator (“频率”,频率,“振幅”、振幅);deviceWriter = audioDeviceWriter (“SampleRate”,osc.SampleRate);抽搐toc < 2 synthesizedAudio = osc ();deviceWriter (synthesizedAudio);结束

合成MIDI消息

的数组midimsg对象以适当的时机,创建一个循环。

首先,创建一个数组midimsg对象和缓存的注意和注意了时间变量,eventTimes

公司= [midimsg (“注意”频道,64,0.5,0),midimsg (“注意”、通道、62、64、0.5。)midimsg (“注意”通道,57岁,40岁,0.5,1.5),midimsg (“注意”通道,60岁,50岁,1,3)];eventTimes = [msgs.Timestamp];

实时模拟接收记录,创建一个for循环使用eventTimes变量和抽搐toc玩指出根据时间戳的MIDI消息。释放你的音频设备循环完成后。

i = 1;抽搐toc <马克斯(eventTimes)如果toc > eventTimes(我)味精=公司(我);我=我+ 1;如果味精。速度~ osc = 0。频率= 440 * 2 ^ ((msg.note - 69) / 12);osc。振幅= msg.Velocity / 127;其他的osc。幅值= 0;结束结束deviceWriter (osc ());结束发行版(deviceWriter)

从MIDI设备综合实时报告消息

实时接收和合成注意消息,MIDI设备创建一个接口。的simplesynth示例函数:

  • 从指定的MIDI设备接收MIDI注意消息

  • 综合一个音频信号

  • 玩到你实时音频输出设备

保存simplesynth函数当前文件夹。

simplesynth

为你的设备名称,查询您的系统使用mididevinfo。听你选择设备,调用simplesynth功能的设备名称。这个例子使用一个M-Audio KeyRig 25设备,注册设备名称USB 02在本例中使用的机器上。

mididevinfo
MIDI设备可用:接口名称标识方向0输出MMSystem微软MIDI Mapper的1输入MMSystem的USB MIDI接口2输入MMSystem USB O2的3输出MMSystem微软GS波表Synth的4输出MMSystem的USB MIDI接口5输出MMSystem USB O2的

调用simplesynth功能和你的设备名称。的simplesynth函数监听注意消息和发挥他们默认的音频输出设备。笔记你MIDI设备和听音频合成。

simplesynth (“USB 02”)

使用ctrl - c结束连接。

另请参阅

功能

外部网站