Как я могу использовать С# для записи и воспроизведения музыки?

Итак, длинный рассказ, я закладываю рамки для создания эволюционного алгоритма, который будет писать музыку и экспортировать ее в файл для прослушивания.

Мой вопрос в том, есть ли там какие-то программы, с которыми я могу взаимодействовать, чтобы я мог просто загружать программные заметки, и он создает кусок?

Если нет, как мне это сделать самому?

Ответы

Ответ 1

Интересно, какие ответы вы ожидаете, учитывая объем соответствующих тем. Я просто приведу NAudio в таблицу, которая может помочь вам в вашей работе.

Так как он также знает MIDI, возможно, у вас есть устройство Midi (ваша звуковая карта?). Затем вы можете создавать MIDI-события и отправлять их на свое устройство. Результатом может быть музыка.

Ответ 2

Вы можете использовать части С# Synth Toolkit для создания звука. Есть несколько параметров, выходящих за рамки freuency и времени для игры. Если вам это нужно, оно говорит также midi, например. он может быть связан с вашей (midi/usb-midi) -keyboard, чтобы воспроизвести некоторые ноты риффов.

Для генерации (эволюционного) параметра вам нужно, чтобы ваш алгоритм "измерял" качество сгенерированного вывода. Есть некоторые метрики в теории классической музыки, но их не помнят.

Ответ 3

Похоже, С# MIDI Toolkit позволяет записывать MIDI файлы: "Класс Sequence представляет собой коллекцию треков, а также предоставляет функции для загрузка и сохранение MIDI файлов, поэтому последовательности могут загружать и сохранять себя". Поэтому, предполагая, что вы можете создать последовательность в коде, это должно позволить вам легко начать работу.

Я смотрел на то, чтобы что-то подобное было в Java некоторое время назад, а MIDI - очень простой формат для использования в этом типе вещей. И поскольку он настолько базовый, почти все музыкальные программы будут его импортировать, а это значит, что вы, вероятно, можете делать такие вещи, как легко включить его в ноты.

Ответ 4

Музыкальный XML

Ссылка: http://www.musicxml.com/

Существует бесконечная документация для Music XML. Вы можете увидеть список программ, которые могут читать и писать Music XML в http://www.musicxml.com/software/.

Итак, вам просто нужно создать класс, который имеет атрибуты, которые вы хотите сериализовать. Вам нужно будет познакомиться с Сериализация 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
}

Ссылки на конкретную документацию


Пример XML 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>

Удачи!