所以,长话短说,我正在制定一个框架来创建一个进化算法,它将编写音乐并将其导出到一个文件供我听。
我的问题是,是否有任何我可以与之交互的程序,以便我可以只提供软件说明并构建它?
如果没有,我该如何自己做?
答案 0 :(得分:9)
我想知道你期望什么样的答案,考虑到相关主题的范围。我只需将NAudio带到桌面上,这可以帮助您完成工作。
既然它也知道MIDI,也许你有一个Midi设备(你的声卡?)然后你可以创建MIDI事件并将它们发送到你的设备。结果可能是音乐。
答案 1 :(得分:6)
您可以使用部分C# Synth Toolkit创建声音。除了频率和时间之外,还有几个参数。如果你需要的话,它也会说midi。它可以与你的(midi / usb-midi)键盘连接,播放一些关于即兴演奏的音符。
对于(进化)参数生成,您需要一种方法让您的算法“测量”生成的输出的质量。古典音乐理论中有一些指标,但不记得它们。
答案 2 :(得分:3)
看起来the C# MIDI Toolkit允许你编写MIDI文件:“Sequence类代表一组Tracks。它还提供了加载和保存MIDI文件的功能,因此Sequences可以加载和保存自己。”因此,假设您可以在代码中构建一个序列,这应该可以让您轻松上手。
我看过用Java做类似的事情,而MIDI是一种非常容易用于此类事情的格式。因为它是如此基本,几乎所有与音乐相关的程序都会导入它,这意味着你可以做一些事情,比如轻松将它转换为乐谱。
答案 3 :(得分:0)
音乐XML
Music XML有无穷无尽的文档。您可以在http://www.musicxml.com/software/处看到可以读取和编写音乐XML的程序列表。
因此,您只需要创建一个具有要序列化的属性的类。您需要熟悉XML Serialization。以下是类的外观的粗略示例:
RequestMapping(value = "/checkLogin", method = RequestMethod.POST)
public static String checkLogin(HttpServletRequest request, final Model model) {
System.out.println("here i want to access studentdata");
// Recreate StudentData From request.getParameter(...)
Studentdata studentdata = new Studentdata();
studentdata.setProperty1 ( request.getParameter("property1"));
// ... You may have to convert data too
return "MyAccount";
}
指向特定文档的链接
音乐XML示例
写起来相当简单。以下是一个衡量标准的示例:
[XmlRoot("score-partwise")]
public class Score
{
Identity identification;
Credit credit;
List<PartItem> partList;
List<Measure> part;
}
public class Identity
{
// Documentation for Identification elements as link 1 below
}
public class Credit
{
// Documentation for Credit elements as link 2 below
}
public class PartItem
{
// Documentation for Part-List elements as link 3 below
}
public class Measure
{
// Documentation for Measure elements as link 4 below
}
祝你好运!
答案 4 :(得分:0)