如何使用C#编写和播放音乐?

如何使用C#编写和播放音乐?,c#,.net,C#,.net,因此,长话短说,我正在制定一个框架来创建一个进化算法,它将编写音乐并将其导出到一个文件中供我聆听 我的问题是,有没有什么程序可以与我交互,这样我就可以输入软件注释,然后它就可以构建这篇文章 如果没有,我自己怎么做?考虑到相关主题的范围,我想知道您希望得到什么样的答案。我想请你谈谈,这可能对你的工作有所帮助 因为它也知道MIDI,也许你有一个MIDI设备(你的声卡?),那么你可以创建MIDI事件并将它们发送到你的设备。结果可能是音乐。看起来允许您编写MIDI文件:“Sequence类表示曲目的集合

因此,长话短说,我正在制定一个框架来创建一个进化算法,它将编写音乐并将其导出到一个文件中供我聆听

我的问题是,有没有什么程序可以与我交互,这样我就可以输入软件注释,然后它就可以构建这篇文章


如果没有,我自己怎么做?

考虑到相关主题的范围,我想知道您希望得到什么样的答案。我想请你谈谈,这可能对你的工作有所帮助

因为它也知道MIDI,也许你有一个MIDI设备(你的声卡?),那么你可以创建MIDI事件并将它们发送到你的设备。结果可能是音乐。

看起来允许您编写MIDI文件:“Sequence类表示曲目的集合。它还提供加载和保存MIDI文件的功能,因此序列可以加载和保存自己。”因此,假设您可以在代码中构建序列,这应该可以让您非常轻松地开始


不久前,我在Java中做过类似的事情,MIDI是一种非常简单的格式,可以用于这类事情。因为它是如此的基本,几乎所有与音乐相关的程序都会导入它,这意味着你可以很容易地将它转换成乐谱。

你可以使用它的一部分来制作声音。除了频率和时间之外,还有几个参数可供使用。如果你需要,它也会说midi,例如,它可以连接你的(midi/usb midi)键盘来播放一些即兴演奏的音符


对于(进化)参数生成,您需要一种算法“测量”生成的输出质量的方法。经典音乐理论中有一些度量标准,但不记得它们。

音乐XML

链接:

关于音乐XML的文档层出不穷。您可以在上看到一个可以读取和写入音乐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
}
[XmlRoot(“分数部分”)]
公开课成绩
{
身份识别;
信用;
列表部分列表;
列表部分;
}
公共阶级身份
{
//标识元素的文件,如下面的链接1所示
}
公营信用
{
//信贷要素的文件如下文链接2所示
}
公共类PartItem
{
//零件清单元素的文档,如下面的链接3所示
}
公共阶级措施
{
//测量元素的文档如下面的链接4所示
}
特定文档的链接


  • 音乐XML示例

    写起来可能相当简单。以下是一个衡量标准的示例:

    <measure>
      <note>
        <pitch>
          <step>F</step>
          <octave>5</octave>
        </pitch>
        <duration>2</duration>
        <voice>1</voice>
        <type>eighth</type>
        <stem>down</stem>
      </note>
      <note>
        <pitch>
          <step>F</step>
          <alter>1</alter>
          <octave>5</octave>
        </pitch>
        <duration>6</duration>
        <voice>1</voice>
        <type>quarter</type>
        <dot/>
        <accidental>sharp</accidental>
        <stem>down</stem>
      </note>
      <note>
        <pitch>
          <step>A</step>
          <alter>1</alter>
          <octave>4</octave>
        </pitch>
        <duration>8</duration>
        <voice>1</voice>
        <type>half</type>
        <accidental>sharp</accidental>
        <stem>up</stem>
      </note>
    </measure>
    
    
    F
    5.
    2.
    1.
    第八
    向下
    F
    1.
    5.
    6.
    1.
    一刻钟
    锋利的
    向下
    A.
    1.
    4.
    8.
    1.
    一半
    锋利的
    向上的
    
    祝你好运

    是一个音乐编程库。这是C#port。不是很完整,但基本功能都有。它可以读取和播放MIDI和MusicXML文件,创建自定义音乐模式和进行曲,保存MIDI文件等。目前,实时MIDI信号解析还没有移植