Окончательный проект APCS: преобразование аудиофайла в более простой MIDI-файл - PullRequest
0 голосов
/ 20 апреля 2020

Допустим, у меня есть аудиофайл для Happy Birthday. Я хочу преобразовать этот аудиофайл в аудиофайл, который звучит так: с днем ​​рождения .

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

Если я могу: Как бы я изменил удары в минуту песни? Я просмотрел несколько сайтов, но они не очень помогли.

Я знаю, что аудиофайлы могут быть представлены в виде сигналов. Как мне отсканировать каждую отдельную волну в аудиофайле (мне это нужно, чтобы выделить ноты)?

1 Ответ

0 голосов
/ 21 апреля 2020

На самом деле это очень амбициозный проект. Одна из причин заключается в том, что он использует инструменты цифровой обработки сигналов, такие как FFT (быстрое преобразование Фурье), для анализа звука, чтобы выделить высоту звука. Возможно, вам удастся найти библиотеку, которая может сделать это, но, если кодировать такой инструмент, который будет включать в себя крутой кривой обучения.

Если вы хотите изучить это дальше, есть хороший Интернет-ресурс под названием " Руководство для ученых и инженеров по цифровой обработке сигналов ". Я смог проработать и понять дискретное преобразование Фурье только с помощью математики средней школы (много триггеров) и небольшого исчисления. Хотя это был подъем.

Попытка проанализировать ритм также не простая задача. Даже с помощью продвинутых инструментов, предоставляемых в профессиональной системе обозначений, таких как Finale, у людей возникают проблемы с воспроизведением ритмов во времени достаточно хорошо для лучших инструментов транскрипции. Алгоритмы, которые «квантовывают» доли, помогают, но также ограничивают количество деталей, которые могут быть включены в воспроизведение.

Я предполагаю, что столь же интересно и полезно, как этот проект, довести его до завершения до конец семестра потребовал бы собрать готовые части. В наши дни много программирования выполняется таким образом.

Если вы масштабируете проект до чего-то вроде простого получения кода для анализа короткой выборки одной ноты и ее подачи, это было бы впечатляюще и выполнимо с большой работой. Это можно сделать с помощью алгоритма DFT вместо того, чтобы требовать БПФ, уменьшая объем информации, который вам придется получить в первую очередь. Таким образом, вам нужно будет только разобраться и реализовать материал по этой ссылке, которая посвящена расчету DFT . Обратите внимание, что в BASI C есть пример кода. Примеры кода в этой книге очень помогают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...