Мне интересно, как записывать музыкальные ноты (например, A, B, С# и т.д.) или аккорды (одновременно несколько заметок) и записывать их в wav файл.
Из того, что я понимаю, каждая нота имеет определенную частоту, связанную с ней (для идеального шага) - например, A4 (A выше среднего C) составляет 440 Гц (полный список 2/3 пути вниз Эта страница).
Если мое понимание верное, этот шаг находится в частотной области, и для этого требуется обратное быстрое преобразование Фурье, чтобы сгенерировать эквивалент временной области?
Что я хочу знать:
- Как работают аккорды? Являются ли они средними для полей?
- Как длительность воспроизведения каждой записанной ноты, когда содержимое wav файла является формой волны?
- Как результат нескольких заметок является обратным FFT'd, преобразованным в массив байтов, которые составляют данные в wav файле?
- любую другую соответствующую информацию, относящуюся к этому.
Спасибо за любую помощь, которую вы можете дать. Если вы даете примеры кода, я использую С#, а код, который я использую для создания wav файлов, выглядит следующим образом:
int channels = 1;
int bitsPerSample = 8;
//WaveFile is custom class to create a wav file.
WaveFile file = new WaveFile(channels, bitsPerSample, 11025);
int seconds = 60;
int samples = 11025 * seconds; //Create x seconds of audio
// Sound Data Size = Number Of Channels * Bits Per Sample * Samples
byte[] data = new byte[channels * bitsPerSample/8 * samples];
//Creates a Constant Sound
for(int i = 0; i < data.Length; i++)
{
data[i] = (byte)(256 * Math.Sin(i));
}
file.SetData(data, samples);
Это создает (как-то) постоянный звук, но я не совсем понимаю, как код коррелирует с результатом.