Как я могу использовать С# для записи и воспроизведения музыки?
Итак, длинный рассказ, я закладываю рамки для создания эволюционного алгоритма, который будет писать музыку и экспортировать ее в файл для прослушивания.
Мой вопрос в том, есть ли там какие-то программы, с которыми я могу взаимодействовать, чтобы я мог просто загружать программные заметки, и он создает кусок?
Если нет, как мне это сделать самому?
Ответы
Ответ 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>
Удачи!