什麼是一個很好的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