Работа с WAV файлами. Создание реплик

Дмитрий Маштаков
  Работа по компьютерно-музыкальному проекту Пианола-Трио потребовала использования нескольких вспомогательных программ, обрабатывающих WAV файлы. Иногда требовалось перевести файл из стерео в моно, изменить скорость раздачи семплов, разделить файл на дорожки, соединить файлы, создав общее одновременное звучание записанного в них звука.
  И, наконец, просто считать информацию о файле и получить дамп небольшой части его начала, чтобы иметь более полное представление о нём.
  В сочетании с возможностями простейшего редактора Wave Editor этот блок программ закрывает все вопросы, связанные с обработкой WAV файлов, и делает ненужным использование более сложных редакторов.
  Новая утилита написана в среде Визуал бейсик. Она проста и удобна в работе. Скачать её вместе с исходниками можно отсюда - http://yadi.sk/d/bpW5I50k3NvNyu
 
  Хочу рассказать об одной из возможностей утилиты - создание реплик, небольших кусочков информации, в которых кодируется рельеф звука музыкального инструмента внутри периода.
  Для получения этих реплик можно использовать звук реального инструмента, звучащего соло. Реплика не связана с определённой частотой, она имеет ту длину, которая была задана. И соответственно, содержит столько же информационных точек. Длинная реплика детально описывает звук, короткая - упрощённо. Программа озвучивания Трио, в процессе создания музыкального WAV файла, воссоздаёт по реплике рельеф звука внутри периода.

  Тут я должен сказать, что одной репликой для создания хорошего звука не обойдёшься. Точное повторение рельефа одного и того же периода делает звук унылым и неестественным.
  Эксперимент, однако, показывает, что если взять несколько реплик (вполне достаточно трёх), и тасовать их рельеф в процессе воспроизведения звука, плавно переходя от рельефа одной, к рельефу другой некоторым возвратно поступательным образом, то звук в результате получается вполне натуральным. Один из методов Трио - метод рельефа, как раз основан на этом алгоритме.
 
  Давайте, посмотрим на рисунок. Звуки скрипки с помощью утилиты WAV Манипулятор были переведены из стерео в моно запись. В начале фрагмента этой записи утилитой была сделана прямоугольная метка, которая затем в редакторе Wave Editor была скопирована в начало и в конец одного из периодов звукового колебания.
  Скопированные метки Вы можете видеть на рисунке (в окне Wave Editor).
  Снова обращаемся к утилите, указывая длину реплики (целая часть числа в скобках), и размах амплитуды от её максимального значения (дробная часть числа в скобках).
  Кликнув кнопку "Выполнить", в файле REPL.txt получаем результат, тот, который в несколько облагороженном (повёрнутом) виде можно видеть на рисунке.
  Мнемоническая запись амплитуд в строке соответствует принятой в Трио -
цифры 50 означают нулевую амплитуду, 99 - максимальную (положительную), 00 - максимальную с отрицательным значением.

  По распечатке видно, что реплика хорошо отражает рельеф. Видно, как амплитуда звукового колебания (положение звёздочек на диаграмме) соотносится с двухзначными числами, представляющими её в реплике. Можно заметить, что на диаграмме рельеф представлен звёздочками в огрублённом виде - в действительности, репликой он передаётся в три раза точнее, что вполне достаточно для практических целей.
  Для получения ещё одной реплики из другой части звука нужно разрушить поставленные метки (достаточно уменьшить количество семплов на их вершинах), и затем, поставить новые метки, обозначив интересующий нас период.

  Те результаты, которые с помощью утилиты получаются соединением несколько записей в общий файл, можно прослушать здесь - http://yadi.sk/d/nJxwQB5I3Nqqpg
___________