用于音乐编程的.NET API?

时间:2010-07-06 03:09:42

标签: .net vb.net api midi jfugue

简而言之,我正在寻找JFugue

的.NET翻译

更新
我意识到JFugue没有真正的.NET替代方案,对于想要自己开发它的人来说,下面的帖子总是很棒。 谢谢你们所有人。

注意:我想强调我的搜索是在转录部分而不是播放部分,换句话说,我正在寻找具有MIDI映射类等的.NET引擎。

到目前为止,{p> NAudio似乎是最热门的选择。

6 个答案:

答案 0 :(得分:2)

NAudio结帐Mark Heath,这是一个很棒的.NET音乐库我会说它应该包含在BCL中。

logo http://code.google.com/p/midi-dot-net/logo?cct=1259803335 midi-dot-net
Tom Lokovic的另一个伟大的C#项目。

答案 1 :(得分:1)

dotnet rock的主持人Carl Franklin已经做了一些工作,如果你查看他的代码示例,它可能会有所帮助:http://www.franklins.net/dotnet.aspx

他也做了screen cast on Midi routers

希望这有帮助

答案 2 :(得分:1)

不知道这是否有帮助:http://www.c-sharpcorner.com/UploadFile/mgold/SheetMusicRecorder09242005060541AM/SheetMusicRecorder.aspx

它是一个音乐键盘,但您应该能够对源代码进行反向工程并使其适应您想要做的事情。

答案 3 :(得分:1)

之前我曾使用Midi Toolkit作为起点,也许你觉得它很有用。

BTW,JFugue不仅是一个库,也是一种语法。我正在努力将它移植到Ruby,如果有人(你,也许?)将它移植到.NET =)

答案 4 :(得分:1)

DryWetMIDI具有基于MIDI的音乐编程功能。那里没有声音生成,只能编写允许创建MIDI文件的API。一个简单的例子:

Pattern pattern = new PatternBuilder()

    // Insert a pause of 5 seconds
    .StepForward(new MetricTimeSpan(0, 0, 5))

    // Insert an eighth C# note of the 4th octave
    .Note(Octave.Get(4).CSharp, MusicalTimeSpan.Eighth)

    // Set default note length to triplet eighth and default octave to 5
    .SetNoteLength(MusicalTimeSpan.Eighth.Triplet())
    .SetOctave(5)

    // Now we can add triplet eighth notes of the 5th octave in a simple way
    .Note(NoteName.A)
    .Note(NoteName.B)
    .Note(NoteName.GSharp)

    // Get pattern
    .Build();

// Now we can export pattern to MIDI file

MidiFile midiFile = pattern.ToFile(TempoMap.Default);
midiFile.Write("My Great Song.mid");

正如你所看到的,它现在不是JFugue的替代品,因为这里没有特殊的语法,只有.NET API。

答案 5 :(得分:0)

好吧,不仅仅是像JFugue,而是我使用了.Net的BASS库。您可以在the un4seen web

找到该库

它具有音频控制和midi thru插件。希望它有所帮助。