Распознавание мелодии с помощью нечеткого поиска

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

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

мелодия сравнение файл левенштейн

 

1. Постановка задачи

 

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

Приложение должно предусматривать дружественный и интуитивно понятный интерфейс.

Алгоритм работы приложения должен включать следующие этапы:

.Выбор сравниваемых файлов MIDI.

.Считывание данных из MIDI-файла в удобное для сравнения представление (например, массив).

.Определение похожести двух массивов MIDI-файлов и вычисление коэффициента похожести.

.На основе значений коэффициента совершение вывода результата о совпадении данных файлов и сообщении степени похожести.

.Выдача результатов пользователю.

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

Для решения первой подзадачи необходимо изучить спецификацию MIDI-файлов, понять, как устроен файл, в какой последовательности хранятся данные, а определение похожести двух массивов и вычисление коэффициента похожести в свою очередь является подзадачей, которую в общем виде можно сформулировать следующим образом:

По заданному слову найти в тексте или словаре размера n все слова, совпадающие с этим словом (или начинающиеся с этого слова) с учетом k возможных различий.

В данной работе, с учетом специфики, рассматривается только частный случай данной задачи:

По заданному слову определить совпадение со словом (или начинающиеся с этого слова) из словаря с учетом k возможных различий.

Такая задача имеет свое название задача нечеткого поиска.

При решении необходимо учесть, что длительность мелодий (длина слов) может быть различной, они могут проигрываться в разных тональностях.

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

 

2. Анализ задачи

 

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

Вначале рассмотрим основные понятия и определения.

MIDI (англ. Musical Instrument Digital Interface - цифровой интерфейс музыкальных инструментов) - стандарт цифровой звукозаписи на формат обмена данными между электронными музыкальными инструментами.

Стандартный MIDI файл (.mid) - в отличие от других форматов это не оцифрованный звук, а наборы команд (проигрываемые ноты, ссылки на проигрываемые инструменты, значения изменяемых параметров звука), которые могут воспроизводиться по-разному в зависимости от устройства воспроизведения. Удобство формата MIDI как формата представления данных позволяет реализовывать устройства, производящие автоматическую аранжировку по заданным аккордам, а также приложения 3D-визуализации звука. Кроме того, такие файлы, как правило, имеют на несколько порядков меньший размер, чем оцифрованный звук сравнимого качества. Данные MIDI-файла хранятся в символьном виде (в виде записей).

Запись - это по своей сути набор взаимосвязанных байтов. В одном MIDI-файле могут сосуществовать несколько различных записей. Каждая запись может иметь свой собственный размер, то есть количество байтов в различных записях может быть различно. Данные, хранящиеся в одной записи, связаны друг с другом определенным образом.

Тогда общий подход к решению задачи сформируется следующим образом:

Считывание содержимого файлов для сравнения в соответствующие массивы байтов.

Проведение процесса сравнения (посредством алгоритма) и вывода результата

Обработка данных, посредством сравнения полученных результатов.

Файл цифрового звука хранит в себе запись звука, файл MIDI хранит в себе запись действий музыканта. Стандартный MIDI файл (SMF и Standard MIDI FIle) - это специально разработанный формат файлов, предназначенный для хранения данных, записываемых и / или исполняемых секвенсором, секвенсор может быть как программой для компьютера, так и аппаратно выполненным модулем. В этом формате хранятся стандартные MIDI сообщения (т.е. статус-байты и соответствующие им байты данных), а также временные метки или маркеры для каждого сообщения (т.е. последовательности байтов, указывающие, какое количество условных единиц