什么是一个很好的MIDI输入/输出的Delphi库?用于MIDI输入/输出的Delphi库?
3
A
回答
2
我一直在使用这些组件ages:
http://bitbucket.org/h4ndy/midiio-dev
他们几乎从未失败过,而且与许多其他已经存在很长时间的专用Delphi组件不同,这些代码非常活跃(最近增加了更新和改进)。
没有什么特别的,但它很容易使用,快速,坚如磐石。如果你打算做严重的midi的东西,你最终会最终使用这个。
1
1
我一直在使用大获成功的.NET包装使用BASS MIDI,并有Delphi wrappers可供它。
4
你确定你确实需要第三方库吗?如果您的需求是基本的,那么Windows API就是您需要的(using MMSystem
)。
var
mo: HMIDIOUT;
const
MIDI_NOTE_ON = $90;
MIDI_NOTE_OFF = $80;
MIDI_CHANGE_INSTRUMENT = $C0;
MIDI_DEVICE = 0;
MIDI_VEL = 108;
procedure MIDIInit;
begin
midiOutOpen(@mo, MIDI_DEVICE, 0, 0, CALLBACK_NULL);
SetPlaybackVolume($FFFFFFFF);
end;
function MIDIEncodeMessage(Msg, Param1, Param2: integer): integer;
begin
result := Msg + (Param1 shl 8) + (Param2 shl 16);
end;
procedure SetCurrentInstrument(CurrentInstrument: TMIDIInstrument);
begin
midiOutShortMsg(mo, MIDIEncodeMessage(MIDI_CHANGE_INSTRUMENT, ord(CurrentInstrument), 0));
end;
procedure NoteOn(NewNote, NewIntensity: byte);
begin
midiOutShortMsg(mo, MIDIEncodeMessage(MIDI_NOTE_ON, NewNote, NewIntensity));
end;
procedure NoteOff(NewNote, NewIntensity: byte);
begin
midiOutShortMsg(mo, MIDIEncodeMessage(MIDI_NOTE_OFF, NewNote, NewIntensity));
end;
procedure SetPlaybackVolume(PlaybackVolume: cardinal);
begin
midiOutSetVolume(mo, PlaybackVolume);
end;
在仪器
type
TMIDIInstrument = (midiAcousticGrandPiano, midiBrightAcousticPiano,
midiElectricGrandPiano, midiHonkyTonkPiano,
midiRhodesPiano, midiChorusedPiano, midiHarpsichord,
midiClavinet, midiCelesta, midiGlockenspiel,
midiMusicBox, midiVibraphone, midiMarimba, midiXylophone,
midiTubularBells, midiDulcimer, midiHammondOrgan,
midiPercussiveOrgan, midiRockOrgan, midiChurchOrgan,
midiReedOrgan, midiAccordion, midiHarmonica,
midiTangoAccordion, midiAcousticGuitarNylon,
midiAcousticGuitarSteel, midiElectricGuitarJazz,
midiElectricGuitarClean, midiElectricGuitarMuted,
midiOverdrivenGuitar, midiDistortionGuitar,
midiGuitarHarmonics, midiAcousticBass, midiElectricBassFinger,
midiElectricBassPick, midiFretlessBass, midiSlapBass1,
midiSlapBass2, midiSynthBass1, midiSynthBass2, midiViolin,
midiViola, midiCello, midiContrabass, midiTremoloStrings,
midiPizzicatoStrings, midiOrchestralHarp, midiTimpani,
midiStringEnsemble1, midiStringEnsemble2, midiSynthStrings1,
midiSynthStrings2, midiChoirAahs, midiVoiceOohs,
midiSynthVoice, midiOrchestraHit, midiTrumpet, midiTrombone,
midiTuba, midiMutedTrumpet, midiFrenchHorn, midiBrassSection,
midiSynthBrass1, midiSynthBrass2, midiSopranoSax, midiAltoSax,
midiTenorSax, midiBaritoneSax, midiOboe, midiEnglishHorn,
midiBassoon, midiClarinet, midiPiccolo, midiFlute,
midiRecorder, midiPanFlute, midiBottleBlow, midiShakuhachi,
midiWhistle, midiOcarina, midiLead1Square,
midiLead2Sawtooth, midiLead3CalliopeLead, midiLead4ChiffLead,
midiLead5Charang, midiLead6Voice, midiLead7Fifths,
midiLead8BrassLead, midiPad1NewAge, midiPad2Warm,
midiPad3Polysynth, midiPad4Choir, midiPad5Bowed,
midiPad6Metallic, midiPad7Halo, midiPad8Sweep, midiEmpty0,
midiEmpty1, midiEmpty2, midiEmpty3, midiEmpty4, midiEmpty5,
midiEmpty6, midiEmpty7, midiEmpty8, midiEmpty9, midiEmpty10,
midiEmpty11, midiEmpty12, midiEmpty13, midiEmpty14,
midiEmpty15, midiEmpty16, midiEmpty17, midiEmpty18,
midiEmpty19, midiEmpty20, midiEmpty21, midiEmpty22,
midiEmpty23, midiGuitarFretNoise, midiBreathNoise,
midiSeashore, midiBirdTweet, midiTelephoneRing,
midiHelicopter, midiApplause, midiGunshot);
试试这个:
procedure TForm1.FormCreate(Sender: TObject);
begin
MIDIInit;
SetCurrentInstrument(midiHarmonica);
NoteOn(50, 127);
sleep(200);
NoteOn(60, 127);
sleep(200);
NoteOn(70, 127);
sleep(200);
NoteOff(70, 127);
NoteOff(60, 127);
NoteOff(50, 127);
SetCurrentInstrument(midiAcousticGrandPiano);
NoteOn(70, 127);
NoteOn(80, 127);
sleep(1000);
SetCurrentInstrument(midiApplause);
NoteOn(64, 127);
sleep(2000);
NoteOff(64, 127);
end;
1
一个非常简单的MIDI IN/OUT类: www.midimountain.com/delphi_midi.html
它看起来像一个很好的起点,如果你想推出自己的,并使用Windows API。
1
只是一个小额外的信息:SourceForge“dmidi”项目实际上与BitBucket上的“midiio”相同(但发展在这里发生)。
2
我已经使用这些组件超过6个月,现在取得了巨大的成功。他们应该与其他所有人一起评估后续职位。
0
星期一2014年4月14日9:49。由于我不允许发表评论,因此我会尝试回答:我为midimountain.com候选人投了我的生活在过去的投票。我得到了demo_MidiDevices_D6.zip(获取它的页面http://www.midimountain.com/delphi_midi.html,而不是的“下载”链接),解压缩它,然后编译我的古董Delphi 7和运行。我还没有真正测试过它是否会使用MIDI,但它确实显示了我附属的MIDI设备的动画片....
相关问题
- 1. 阅读MIDI输入
- 2. VST插件的MIDI输出
- 3. 在Python中的MIDI输入
- 4. 用于密码输入的Delphi输入框?
- 5. 终止Java Midi输出
- 6. 现场MIDI输入到JSON?
- 7. 用于输入和输出的QTextEdit
- 8. 向用户输出MIDI编号
- 9. 在Java中用于播放的硬件MIDI输出?
- 10. 用于Mac上的MIDI Midi库
- 11. IOS如何使用Midi输入回调记录midi文件?
- 12. 如何打开输出的MIDI设备?
- 13. 基于输入关键字的输出
- 14. 输入,输出,输入/输出参数
- 15. 用于用户输入的python库
- 16. 用于消毒用户输入的URL的Delphi代码
- 17. 在OS X,C++中播放MIDI输出
- 18. 输入输出
- 19. WPF RichTextBox:输出RTF不同于输入
- 20. Swift 2到Swift 3转换Midi输入
- 21. 实时midi输入和音频同步
- 22. 爪哇从MIDI键盘获取输入
- 23. 用于键盘异步输入的库
- 24. 输入/输出用户
- 25. 用户输入和输出
- 26. 输出用户输入(CGI)
- 27. 用于溢出输入的scanf行为
- 28. WebDeveloper数据库webform表格 - 用于输出的gridview输入版本
- 29. 当UWP进入后台时保持MiDi输出播放
- 30. CC_SHA256生成用于不同的输入相同的输出
+1非常有用的帖子。 – 2011-06-15 10:05:33
你好。我不知道如何提出一个关于这个问题的问题..我测试que代码..如果我试图把它放到一个buttonEvent ..它只是工作一次..我如何重新设置它?随时随地发声吗?谢谢 – Pericles 2013-12-10 21:36:40