主页 | 新闻 | 论坛 | 文件 | 常见问题 | 链接 | 贡献者 | 作者
在最近的Windows上,由于Microsoft Difender SmartScreen功能,从互联网下载的exe文件可能无法启动。如果此消息出来了,通过一单击“更多信息”然后单击“仍要运行”,就会启动。请注意,您可能在虚拟站点上下载了假冒产品。
另外,请右点击zip文件,选择“属性”,复选“常规”的“安全:此文件来自其他计算机,可能被阻止以帮助保护该计算机。”的“解除锁定(&K)”,然后使用文件。
不。开源MIDI项目是MIDI专用。为了防止软件和库变得沉重复杂,没有编辑音频的功能。如果你要编辑音频,请是用音频编辑软件,如Audacity。如果你要在同一时间编辑MIDI和音频,请使用DAW,如Cubase或者Sonar等。
不。因为VSTi的规格不一样,再有,因为VSTi的输入输出系统跟MIDI的不太一样,所以没有VSTi对应的计划。此外,因为我喜欢用硬件合成器,我不需要支持VSTi。如果你要使用VSTi,请使用MIDIYoke或咯loopMIDI等MIDI Loop Back程序和VSTiHost。
不。但是,汇报了用WINE在Linux或Mac OS 10上世界树工作好了。
是的,可以。但是,支持只有在论坛里有。此外,没有担保,作者不承担任何责任。另外,如果你改变并重新分发程序,许可证必须是LGPL或GPL(世界树是MPL2.0),必须重新分发源代码。如果你发布到这些库动态链接的自己的程序(只用DLL),许可证可以不用是LGPL或GPL,但你不能违反“禁止反编译”的规定。
MIDI音序器或演奏器不出音了。MIDI音序器或演奏器只给仪器发送演奏信息。也许,因为你使用廉价的合成器,如Microsoft GS Wavetable Synth,你听这样坏音质。如果你要好听的音质,你应该买一个硬件合成器。2015年现在,Roland JUNO,YAMAHA MOTIF,或KORG KROME等有了。虽然贵软件合成器(VSTi)也有好听的音质,你要启动电脑和软件合成器。而且,除非你强化电脑的性能,在同一时间多个声音不能出来。而且,电脑坏了的时候,或OS改变了的时候,你已经买了的软件合成器可能或不能使用下去不是清楚。或者你可以使用更好的合成器例如Bassmidi Coolsoft并挂载好的音色库
如果你用Windows内置的Microsoft GS Wavetable Synth,经常发生这个问题。原因是,因为指定的音色号码(CC#0的值,CC#32的值,程序改变的值)是不正确的。因此,用世界树你要修改错误的号码到GS定义的音色号码。在WindowsXP上,即使指定了错误的音色号码,因为代表音色出来了,这个问题偶然没发生了。在另一方面,如果是非Microsoft GS Wavetable Synth对应的MIDI数据(例如,是Roland SC-88Pro对应的MIDI数据),因为使用的仪器是不同的,你可能没法听到正确的音色。同样地,你要修改音色号码。
在某些电脑,除非你连接立体声耳机或音箱,Microsoft GS Wavetable Synth不会出现。请连接它们,然后启动程序。
如果你买了电脑的时候Microsoft GS Wavetable Synth已经没有,也许制造的注册表设置是错误的。您可能会解决如下。要小心,如果你已经安装了其它的MIDI设备,它们可能会导致错误。要小心,编辑注册表是很危险的,没有任何担保。
1.如果32bitOS中,移动到[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersin\Drivers32]。如果64bitOS中,移动到[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersin\Drivers32]。
2. 修正如下。
如果你把程序放在c:\Program Files或c:\Program Files(x86)或c:\windows文件夹里,因为Windows有用户帐户控制(UAC)功能,组态文件(*.ini)不能打开或保存。请把程序放在上述以外的文件夹里。此外,从退出应用程序,写着组态文件(*.ini)需要大约2秒。请大约2秒等后启动应用程序。
如果你把程序放在c:\Program Files或c:\Program Files(x86)或c:\windows文件夹里,因为Windows有用户帐户控制(UAC)功能,组态文件(*.ini)不能打开或保存。请把程序放在上述以外的文件夹里。此外,从退出应用程序,写着组态文件(*.ini)需要大约2秒。请大约2秒等后启动应用程序。
请选择"文件(F)" - "属性(R)...",然后选择轨道格式,然后按OK。此外,世界树的默认轨道格式是格式1。
请选择"文件(F)" - "属性(R)...",然后选择基格式和分辨率,然后按OK。此外,世界树的默认基格式是TPQN格式,默认分辨率是120(Ticks每四分音符)。
有几个办法。并,世界树的默认拍子速度是120,拍子标记是4/4,调号标记是0#大(C大调)。拍标记事件和调标记事件只影响屏幕显示,一点儿不影响演奏,请注意。
a) 在轨道列表窗口或钢琴卷帘口或乐谱窗口上,一右键点击"■120.00 4/4 0#"显示的区域上,就出现一个弹出式菜单为插入或变更或删除拍速度,拍子标记,调号标记。
b) 在钢琴卷的下边儿图形区域上,而第一轨道上,你可以画着断续的拍速度图形。
c) 在事件列表窗口上,显示只第一轨道,你可以手动而逐个地插入或变更或删除拍速度事件,拍子标记事件,调号标记事件。为了指定升号,请输入"#", 降号,输入小写的"B"。为了指定大调,输入"major",小调,输入"minor"。
在轨道列表窗口的左区域上,这有CC#0, CC#32, 程序号码列,在这儿你可以选择钢琴以外的音色。如果你用Windows内置的Microsoft GS Wavetable Synth,默认音色选择是,在信道10以外,CC#=0, CC#32=0, 程序号码=0-Piano1,在信道10(鼓)是CC#=0, CC#32=0, 程序号码=0-Standard。另外,在MIDI中,请注意音色排列是在每个音源或合成器不同的。如果指定了错误的数字,声音就不会出来。而,为了显示正确音色名,你要选择你使用的MIDI音源的乐器定义文件(*.ins)。
▼轨道列表窗口
轨道 | 输出 | 输出端口 | 输出信道 | 显示模式 | CC#0 | CC#32 | 程序号码 |
2 | on | 1-Microsoft GS Wavetable Synth | 1 | 通常 | 0 | 0 | 48-Strings1 |
11 | on | 1-Microsoft GS Wavetable Synth | 10 | 鼓 | 0 | 0 | 48-Orchestra |
在事件列表窗口上,请手动插入CC#0(Bank Select MSB)和CC#32(Bank Select LSB)和程序变更。在轨道列表窗口上,你会指定只最初的音色。这三个事件(CC#0・CC#32・程序变更)要遵守这顺序。然而,除非有轨道数的限制等在特殊情况下,在同一轨道上中途改变音色是不推荐的。另外,在MIDI中,请注意音色排列是在每个音源或合成器不同的。如果指定了错误的数字,声音就不会出来。而,为了显示正确音色名,你要选择你使用的MIDI音源的乐器定义文件(*.ins)。
▼事件列表窗口 (通常轨道)
轨道 | 小节:拍:滴答 | 事件种类 | 信道 | 值1 | 值2 | 值3 |
2- | 00001:02:000 | 控制变更 | 1 | 0-Bank Select MSB | 0 | - |
2- | 00001:02:010 | 控制变更 | 1 | 32-Bank Select LSB | 0 | - |
2- | 00001:02:020 | 程序变更 | 1 | 48-Strings | - | - |
▼事件列表窗口 (鼓轨道)
轨道 | 小节:拍:滴答 | 事件种类 | 信道 | 值1 | 值2 | 值3 |
11- | 00001:02:000 | 控制变更 | 10 | 0-Bank Select MSB | 0 | - |
11- | 00001:02:010 | 控制变更 | 10 | 32-Bank Select LSB | 0 | - |
11- | 00001:02:020 | 程序变更 | 10 | 48-Orchestra | - | - |
默认仪器定义是Microsoft GS Wavetable Synth。请在网上等寻找你使用的MIDI音源的仪器定义文件(*.ins),然后把这个文件放instrument夹里,然后选择 "设定(S)" - "MIDI设备和仪器...",选择你的设备和仪器。如果你没有找到仪器定义文件,你可以直接输入音色号码的数字,或者选择 "设定(S)" - "选项(O)...",清取消选中“探索只存在的音色”。另外,在MIDI中,请注意音色排列是在每个音源或合成器不同的。如果指定了错误的数字,声音就不会出来。而,为了显示正确音色名,你要选择你使用的MIDI音源的乐器定义文件(*.ins)。
方法是不同的MIDI音源或合成器。在某些音源或合成器,你只需简单地选择鼓的程序号码。在GM音源中,因为鼓只信道10可以使用,所以更改是不可能的。在GS音源如Microsoft GS Wavetable Synth或Roland SC-88等,虽然鼓只信道10可以使用,可是通过写入以下的系统排他的事件,你把信道11可以更改为鼓轨道。第一行表示GS复位。详细信息,请参见你使用的音源的手册。
▼事件列表窗口
轨道 | 小节:拍:滴答 | 事件种类 | 信道 | 值1 | 值2 | 值3 |
1- | 00001:01:000 | 系统排他 | n/a | F0 41 10 42 12 40 00 7F 00 41 F7 | ||
1- | 00001:01:060 | 系统排他 | n/a | F0 41 10 42 12 40 1A 15 02 0F F7 |
在标准MIDI文件(*.mid)里,轨道属性不能保存。工作时,请保存为世界树序列文件(*.skj),然后发布时,请保存作为标准MIDI文件(*.mid)。如果MIDI数据使用两个或多个端口,即使输出端口设定了在轨道窗口上,你要嵌入每个轨道里端口前缀事件。每个文件格式的可保存的信息,请参考用户手册。世界树序列文件(*.skj)可以保存全信息。
世界树不改变基格式或分辨率,或追加,变更,删除事件。如果需要自动修改,消息框就出现。或许,因为省略或不省略运行状态节,数据内容是不同的。在标准MIDI文件中,如果一个事件的种类跟先前的事件的一样,可以省略这事件的运行状态节。
先,在字符串的前头描述"{@UTF-16LE}",其次描述下面的字符串。一旦描述字码,这就适用于后来的同一轨道上的同类的事件。字码会选择"{@latin}" "{@jp}" "{@UTF-16LE}" "{@UTF-16BE}"。如果你指定任何东西,原始就适用{@latin},可世界树就的适用在"设定"-"语言..."指定的文本编码。
对了、虽然世界树会使用Unicode,可是请小心Unicode不支持的或字码不支持的MIDI音序器或MIDI演奏器不会显示这个字符串。这是MIDI的拡张仕様(RP-026),原来支持只歌词。
▼事件列表窗口 : 如何强制更改文本号码
轨道 | 小节:拍:滴答 | 事件种类 | 信道 | 值1 | 值2 | 值3 |
1- | 00001:01:000 | 文本 | n/a | {@latin}Just make a contract with me, and become a Magical Girl! | ||
1- | 00001:01:030 | 文本 | n/a | {@jp}僕と契約して魔法少女になってよ! | ||
1- | 00001:01:060 | 文本 | n/a | {@UTF-16LE}成为魔术少女我的契約! |
在音符输入的时或在音符拖移的时,如果你右键点击,#或b就添加。怎记号添加是于该位置的调标记自动确定的。
因为MIDI数据没有休止符事件,这是规格。音符没有的位置就作为休止符工作。
因为MIDI数据没有外观信息,这是规格。
也许屏幕绘制负载很大。特别,页面切换的时,因为画了很多个文字和图像,经常发生卡顿。正式演奏时,你应该最小化世界树的全窗口,省得屏幕绘制,这样就不会发生卡顿。即使你使用高性能的显卡,它可能对3D绘图和DirectX有效,但是对GDI的2D绘图无效,如世界树。
而且,请注意MIDI事件的配置。你把多个事件不应该放在同一时刻上。尽可能分散放。特别,为了要初始化或设定,在最初的小节,多个事件拥挤,所以每个事件要确保一定的间隔。否则,一些音源可能接受不到一些MIDI消息。
世界树不支持编辑VSQ文件。这个功能可能用调试VSQ文件。虽然VSQ文件的规格跟标准MIDI文件(*.MID)的规格一样,因为每个事件的规格跟标准MIDI文件(*.MID)事件的不一样,所以除非你作VSQ规格对应的确作的数据,它才正常运行。
Windows不能识别该设备。对于USB设备,请再次试断开电缆。请试重新启动Windows。此外,尽管你用Windows Vista / Windows7不兼容的设备驱动程序,往往可能碰巧运行得好。另外,32位的设备驱动程序跟64位的不一样。请使用正确版本的设备驱动程序。
2013年09月01号以前的软件或库,我用VisualC++ 4.0 Standard Edition制作了,所以你用VisualC++ 4.0 Standard Edition打开mdp文件。2020年12月31号以前的软件或库,我用Visual Studio 2008 Standard Edition SP1制作了,所以你用Visual Studio 2008 Standard Edition SP1打开sln文件。2021年01月01号以后的,我用Visual Studio 2015 Community SP3制作了,所以你用Visual Studio 2015 Community SP3打开sln文件。可是,如果你不用变更或编译程序,且你要吃使用DLL,可以使用任何版本的Visual C++。
下面是Visual Studio上,MIDIIO库、MIDIData库、MIDIClock库、MIDIStatus库、MIDIInstrument库等DLL的用法。
1. 制作项目工作空间(Project Work Space)
2. 编译/链接 (案例MIDIData库)
下面是,简单的控制台程序的例。请参考。这个程序使用MIDIIO库、MIDIData库、MIDIClock库。
/* Simple Console MIDI Player example */ #include <stdio.h> #include <tchar.h> #include <windows.h> #include "..\\MIDIIO\\MIDIIO.h" #include "..\\MIDIData\\MIDIData.h" #include "..\\MIDIClock\\MIDIClock.h" /* Don't forget to add MIDIIO(d).lib to your project */ /* Don't forget to add MIDIData(d).lib to your project */ /* Don't forget to add MIDIClock(d).lib to your project */ int _tmain () { long lTimeMode = 0; long lTimeResolution = 0; long lTempo = 60000000 / 120; /* [microsec/quarter note] */ long lEndTime = 0; long lOldTime = 0; long lCurTime = 0; MIDIOut* pMIDIOut = NULL; MIDIData* pMIDIData = NULL; MIDITrack* pMIDITrack = NULL; MIDIEvent* pMIDIEvent = NULL; MIDIClock* pMIDIClock = NULL; pMIDIOut = MIDIOut_Open (_T("Microsoft GS Wavetable Synth")); if (pMIDIOut == NULL) { _tprintf (_T("MIDIOut Open failed.\n")); return 0; } pMIDIData = MIDIData_LoadFromSMF (_T("test.mid")); if (pMIDIData == NULL) { _tprintf (_T("MIDIData Load failed.\n")); return 0; } lTimeMode = MIDIData_GetTimeMode (pMIDIData); lTimeResolution = MIDIData_GetTimeResolution (pMIDIData); lEndTime = MIDIData_GetEndTime (pMIDIData); pMIDIClock = MIDIClock_Create (lTimeMode, lTimeResolution, lTempo); if (pMIDIClock == NULL) { _tprintf (_T("MIDIClock_Create failed.\n")); return 0; } _tprintf (_T("Now playing...\n")); MIDIClock_Start (pMIDIClock); while (lCurTime <= lEndTime) { lCurTime = MIDIClock_GetTickCount (pMIDIClock); forEachTrack (pMIDIData, pMIDITrack) { forEachEvent (pMIDITrack, pMIDIEvent) { long lTime = MIDIEvent_GetTime (pMIDIEvent); if (lOldTime <= lTime && lTime < lCurTime) { if (MIDIEvent_IsTempo (pMIDIEvent)) { long lTempo = MIDIEvent_GetTempo (pMIDIEvent); MIDIClock_SetTempo (pMIDIClock, lTempo); } if (MIDIEvent_IsMIDIEvent (pMIDIEvent) || MIDIEvent_IsSysExEvent (pMIDIEvent)) { unsigned char byMessage[256]; long lLen = MIDIEvent_GetLen (pMIDIEvent); MIDIEvent_GetData (pMIDIEvent, byMessage, 256); MIDIOut_PutMIDIMessage (pMIDIOut, byMessage, lLen); } } } } lOldTime = lCurTime; Sleep (5); } MIDIClock_Stop (pMIDIClock); _tprintf (_T("Now end.\n")); MIDIClock_Delete (pMIDIClock); MIDIData_Delete (pMIDIData); MIDIOut_Close (pMIDIOut); return 1; }
世界树?MIDI测试器?自动鼓 使用MIDIIO库?MIDIData库?MIDIClock库?MIDIStatus库?MIDIInstrument库,所以你要下载这些库,然后你要重命名如下所示,且你要放在如下所示的文件夹结构里面。
(C)2000-2025 kuzu All rights reserved.