Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

MusicGenerator

.pdf
Скачиваний:
38
Добавлен:
19.03.2015
Размер:
1.89 Mб
Скачать

аудиовхода – и таким образом происходит потоковая запись сгенериро-

ванного произведения в файл формата WAV. Стоить отметить, что подоб-

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

Запись в файл продолжается до тех пор, пока не будет вызвана функция saveMp3File(String filename), которая прервет запись в текущий файл и запустит в отдельном потоке преобразование его из WAV в MP3

(для экономии места). Для этого используется открытая библиотека JAVE (Java Audio Video Encoder). После того как процесс перекодирования был запущен, файловый плеер вновь начинает захватывать аудиопоток.

Несмотря на тот факт, что сохраненный MIDI или MP3 файл может быть проигран любым музыкальным плеером, прослушивание уже цели-

ком сгенерированного произведения менее удобно, чем возможность озна-

комления с результатом генерации непосредственно в процессе генерации.

Именно этой цели служит музыкальный плеер (RealtimePlayer). Принимая на входе партитуру (Score), он конвертирует ее в MIDI-

последовательности (Sequence) и направляет на стандартный MIDI-

секвенсор, который, используя внешние звуковые библиотеки, воспроиз-

водит мелодию.

В качестве синтезатора используется идущий в комплекте с JDK 1.7

синтезатор Gervill, который позволяет подключать внешние банки звуков в формате .sf2 – они позволяют достичь реалистичного звучания при мини-

мальной нагрузке на процессор и незначительном объеме затраченной оперативной памяти.

Помимо прослушивания, еще одним удобным способом ознакомле-

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

щая много нюансов. Мощные современные нотные редакторы умеют пра-

51

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

то решение воспользоваться уже имеющимися в пакете jMusic методами для отображения нот в классической записи. Они были модифицированы для поддержки динамического обновления партитуры в процессе генера-

ции. На Рис. 26 представлено окно графического плеера с партиями двух инструментов.

Рис. 26. Окно графического плеера.

3.3.4. Модуль взаимодействия с пользователем

Генерация музыки в реальном времени подразумевает возможность изменения в любой момент параметров генерации, таких как темп, тональ-

ность, громкость и прочие. Для этой цели был разработан пользователь-

ский интерфейс, который целиком умещается в модуле взаимодействия с пользователем и позволяет целиком контролировать весь процесс генера-

ции музыки.

52

Рис. 27. Пользовательский интерфейс генератора музыки.

Другим важным требованием к программе-генератору является воз-

можность добавлять и отключать инструменты непосредственно во время генерации произведения. Подобное «включение» инструмента (или музы-

канта) в импровизацию в любой момент времени считается признаком ма-

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

дения. Перехват мелодии «на лету» свойственен джазовой музыке, где,

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

ности произведения и слаженной импровизацией не представляются воз-

можными для исполнения ансамблем более чем из десяти человек (не го-

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

способен контролировать игру любого набора инструментов, независимо от их типа и количества.

Интерфейс программы представлен на Рис. 27. В верхней части рас-

положены общие настройки для всей программы: тон и тип тональности,

53

наличие мелизмов и частота их появления, общий темп произведения и громкость. Также здесь есть доступ к меню, где можно сохранить сгенери-

рованное произведение в MIDI-файл и кнопки добавления и выключения инструментов.

Каждый добавленный инструмент имеет собственную панель настроек, где можно задать сам инструмент, тип голоса (мело-

дия/второстепенный голос/аккомпанемент), громкость инструмента, высо-

ту мелодии (позволяет направлять движение мелодии) и октаву, в которой должен играть инструмент. Также есть опция выключения инструмента и иконка, отображающая выбранный инструмент.

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

чить нескольких инструментам роль основной мелодии, равно как и оста-

вить произведение вовсе без основной мелодии.

Максимальное количество инструментов теоретически не ограниче-

но, но на практике оно не должно превышать 16-20 голосов. При большем числе голосов синтезатор не успевает обрабатывать такое количество зву-

ковых дорожек и корректно их воспроизводить.

54

Заключение

В результате проделанной работы был написан полноценный генера-

тор музыки, работающий в реальном времени. В процессе разработки была сформулирована упрощенная модель музыкального произведения и разра-

ботаны алгоритмы построения мелодий и гармонизации. На этой базе реа-

лизован инкрементный генератор музыкальных произведений, работаю-

щий с динамически формируемыми паттернами. С помощью разработан-

ного интерфейса взаимодействия пользователь может непосредственно влиять на процесс генерации музыки путем изменения таких параметров,

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

ние.

Созданные с помощью генератора мелодии имеют простую и благо-

звучную структуру. Благодаря модулю гармонизации даже при большом количестве инструментов не возникает диссонансов и конфликтов. Добав-

ление к мелодии 3-4 второстепенных голосов и аккомпанемента значи-

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

55

Литература

1.Месснер Е. Основы композиции. — М.: МУЗЫКА, 1968.

2.Кюрегян Т.С. Форма в музыке XVII-XX веков. — М.: ТЦ «Сфера»,

1998.

3.Способин И.В. Музыкальная форма. — М.: МУЗЫКА, 1984.

4.Способин И.В. Учебник гармонии. — М.: МУЗЫКА, 1965.

5.Тимофеев А.В. Информатика и компьютерный интеллект. — М.: Педа-

гогика, 1991.

6.David Cope. Computers and Musical Style. — Madison, WI: A-R Editions, 1991.

56

ПРИЛОЖЕНИЕ А

База музыкальных паттернов

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

Таблица 1. Простейшие паттерны.

Название

 

Нотный вид

Текстовый вид

 

 

 

 

 

Движение

по

хроматической

 

Name~Upward Chromatic

гамме вверх на 1 ступень

 

 

0~1~1

 

 

End

 

 

 

 

 

 

 

 

 

 

Движение

по

хроматической

 

Name~Downward Chromatic

гамме вниз на 1 ступень

 

 

0~-1~1

 

 

End

 

 

 

 

 

 

 

 

Движение по тональности вверх

 

Name~Upward Tonality 1

на 1 ступень

 

 

 

 

1~1~1

 

 

 

 

End

 

 

 

 

 

 

 

 

 

Движение по тональности

вниз

 

Name~Downward Tonality 1

на 1 ступень

 

 

 

 

1~-1~1

 

 

 

 

End

 

 

 

 

 

 

 

 

Движение по тональности вверх

 

Name~Upward Tonality 2

на 2 ступени

 

 

 

 

1~2~1

 

 

 

 

End

 

 

 

 

 

 

 

 

 

Движение по тональности

вниз

 

Name~Downward Tonality 2

на 2 ступени

 

 

 

 

1~-2~1

 

 

 

 

End

 

 

 

 

 

Движение по тональности вверх

 

Name~Upward Tonality 3

на 3 ступени

 

 

 

 

1~3~1

 

 

 

 

End

 

 

 

 

 

 

 

 

 

Движение по тональности

вниз

 

Name~Downward Tonality 3

на 3 ступени

 

 

 

 

1~-3~1

 

 

 

 

End

 

 

 

 

 

 

 

 

Движение по аккорду вверх на 1

 

Name~Upward Chord

ступень

 

 

 

 

2~1~1

 

 

 

 

End

 

 

 

 

 

 

 

 

Движение по аккорду вниз на 1

 

Name~Downward Chord

ступень

 

 

 

 

2~-1~1

 

 

 

 

End

 

 

 

 

 

57

Движение по аккорду вверх на 2

 

Name~Upward Chord

ступени

 

2~2~1

 

End

 

 

 

 

 

Движение по аккорду вниз на 2

 

Name~Downward Chord

ступени

 

2~-2~1

 

End

 

 

 

 

 

Повтор ноты

 

Name~Same Pattern

 

 

3~0~1

 

 

End

 

 

 

В следующей таблице представлены составные паттерны, использу-

емые при построении основной мелодии наряду с простейшими. Для удоб-

ства была введена система именования паттернов: имя состоит из последо-

вательности пар, вида «буква + число». Буква обозначает тип перехода между нотами, число – расстояние перехода, а количество пар – количе-

ство переходов в паттерне. Например, имя «C1T-1T1» будет означать пат-

терн из четырех нот (три перехода между нотами), где сначала будет пры-

жок по аккорду вверх на 1 ступень («C» = Chord), затем шаг по тонально-

сти («T» = Tonality) на ступень вниз, и, наконец, снова шаг по тональности вверх.

Таблица 2. Составные паттерны.

Нотный вид

Текстовый вид

Нотный вид

Текстовый вид

 

 

 

 

 

Name~C1C1C1

 

Name~T1C-1T1

 

2~1~1

 

1~1~1

 

2~1~1

 

2~-1~1

 

2~1~1

 

1~1~1

 

End

 

End

 

Name~C1C1C-1

 

Name~T1T1T1

 

2~1~1

 

1~1~1

 

2~1~1

 

1~1~1

 

2~-1~1

 

1~1~1

 

End

 

End

 

Name~C1C-1C1

 

Name~T1T1T-1

 

2~1~1

 

1~1~1

 

2~-1~1

 

1~1~1

 

2~1~1

 

1~-1~1

 

End

 

End

58

 

Name~C1C-1C-1

 

Name~T1T-1T1

 

2~1~1

 

1~1~1

 

2~-1~1

 

1~-1~1

 

2~-1~1

 

1~1~1

 

End

 

End

 

Name~C1T-1T1

 

Name~T1T-1T-1

 

2~1~1

 

1~1~1

 

1~-1~1

 

1~-1~1

 

1~1~1

 

1~-1~1

 

End

 

End

 

Name~C1T-1T-1

 

Name~T-1C1C1

 

2~1~1

 

1~-1~1

 

1~-1~1

 

2~1~1

 

1~-1~1

 

2~1~1

 

End

 

End

 

Name~C-1C1C1

 

Name~T-1C1T-1

 

2~-1~1

 

1~-1~1

 

2~1~1

 

2~1~1

 

2~1~1

 

1~-1~1

 

End

 

End

 

Name~C-1C1C-1

 

Name~T-1T1C1

 

2~-1~1

 

1~-1~1

 

2~1~1

 

1~1~1

 

2~-1~1

 

2~1~1

 

End

 

End

 

Name~C-1C-1C1

 

Name~T-1T1T1

 

2~-1~1

 

1~-1~1

 

2~-1~1

 

1~1~1

 

2~1~1

 

1~1~1

 

End

 

End

 

Name~C-1C-1C-1

 

Name~T-1T1T-1

 

2~-1~1

 

1~-1~1

 

2~-1~1

 

1~1~1

 

2~-1~1

 

1~-1~1

 

End

 

End

 

Name~C-1T1T1

 

Name~T-1T-1T1

 

2~-1~1

 

1~-1~1

 

1~1~1

 

1~-1~1

 

1~1~1

 

1~1~1

 

End

 

End

 

Name~C-1T-1T1

 

Name~T-1T-1T-1

 

2~-1~1

 

1~-1~1

 

1~-1~1

 

1~-1~1

 

1~1~1

 

1~-1~1

 

End

 

End

 

Name~T1C-1C-1

 

 

 

1~1~1

 

 

 

2~-1~1

 

 

 

2~-1~1

 

 

 

End

 

 

59

Таблица 3. Аккомпанементные паттерны.

Название

Нотный вид

Текстовый вид

 

 

 

Аккордовый №1

 

Name~Chord 1

 

 

2~1~1

 

 

2~1~1

 

 

2~-1~1

 

 

End

Аккордовый №2

 

Name~Chord 2

 

 

2~1~1

 

 

2~-1~1

 

 

2~1~1

 

 

End

Аккордовый №3

 

Name~Chord 3

 

 

2~2~1

 

 

1~-1~1

 

 

1~1~1

 

 

End

Альбертиевы басы

 

Name~Alberty bass

 

 

2~2~1

 

 

2~-1~1

 

 

2~1~1

 

 

End

60

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]