Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于MIDI输入/输出的Delphi库?_Delphi_Midi - Fatal编程技术网

用于MIDI输入/输出的Delphi库?

用于MIDI输入/输出的Delphi库?,delphi,midi,Delphi,Midi,什么是适合MIDI输入/输出的优秀Delphi库 我使用.NET包装器非常成功,而且也有可用的。你确定你真的需要第三方库吗?如果您的需求是基本的,那么Windows API就是您所需要的全部(使用MMSystem) 仪器在哪里 type TMIDIInstrument = (midiAcousticGrandPiano, midiBrightAcousticPiano, midiElectricGrandPiano, midiHonkyTonkPia

什么是适合MIDI输入/输出的优秀Delphi库

我使用.NET包装器非常成功,而且也有可用的。你确定你真的需要第三方库吗?如果您的需求是基本的,那么Windows API就是您所需要的全部(
使用MMSystem

仪器在哪里

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;

我一直在使用这些组件:

他们几乎从未在我身上失败过,与许多其他已经存在这么长时间的专门Delphi组件不同,这段代码非常活跃(最近添加了更新和改进)


没什么特别的,但它使用方便,速度快,坚固耐用。如果你打算做一些严肃的midi工作,你最终会使用它。

一个非常简单的midi输入/输出类:


如果你想自己开发并使用windows API,这看起来是一个很好的起点。

只是一个小小的额外信息:SourceForge“dmidi”项目实际上与BitBucket上的“midiio”项目相同(但开发在这里进行)。

我已经使用这些组件6个多月了,取得了巨大的成功。应与后续职位的所有其他人一起对其进行评估


2014年4月14日星期一上午9:49。既然不允许我发表评论,我就试着回答:我把我过去的生活投给midimountain.com的候选人。我得到了demo_MidiDevices_D6.zip(在页面上获取,而不是“下载”链接),将其解压缩,然后在我的仿古Delphi 7中编译并运行。实际上,我还没有测试它是否有MIDI,但它确实显示了我所连接的MIDI设备的集合……

您好。关于这个问题我不知道怎么提问。。我测试代码。。如果我试着把它放进纽扣里。。它只工作一次。。如何重置它?我想什么时候发声音就什么时候发?ThanksetPlayback卷丢失了吗?但是,当我将设备从0更改为1时,它仍然有效;)因为那是我的微软windows wave synth表,哈哈。Thx为这个,好和简单。。。六羟甲基三聚氰胺六甲醚。。。
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;