Как работать с программой ТРИО
=== ВНИМАНИЕ в настоящее время программы Пианола и Трио переведены на современную платформу. Ознакомиться с их работой можно тут - http://www.proza.ru/2017/10/13/1274
См. также другие статьи в разделе о синтезе музыкального звука в среде Визуал Бейсик.
Программа Пианола и программа ТРИО входят в общий проект по созданию музыкальных записей звуком, синтезированным но компьютере. С историей проекта можно ознакомиться здесь - http://www.proza.ru/2016/12/29/1190
подробности о проекте целиком см. здесь - http://www.proza.ru/2016/06/10/1302
ссылка на звучание представленного на рисунке - http://yadi.sk/d/2ha3u4X8uhMMc
Другие записи можно прослушать здесь - http://yadi.sk/d/poMxlrBuxendv
РАЗМЕЩЕНИЕ
В папке по адресу http://yadi.sk/d/zv-WYZdC328cGV находится всё необходимое для работы с проектом. Программа Пианола откомпиллирована, однако имеются и два файла - исходники этой программы.
Что касается программ озвучивания, то они запускаются из среды Турбо Бейсик. Эти программы, обозначенные общим названием ТРИО, состоят из начального файла (T_mono, T_stereo, T_mix или T_lp), организующего запись, и двух файлов T_B и T_FN с расширением INK, которые подключаются к начальному файлу.
Все статьи по музыке, относящиеся к проекту, находятся тут -
https://yadi.sk/d/MxeUfs3XtKA8p
МОЖНО ПОПРОБОВАТЬ
В этой же папке находятся примеры - файл CP1.txt или CL1.txt можно загрузить в программу Пианола. Для этого запустите Пианолу, и в верхнем поле напечатайте CP1 и нажмите Enter. Затем дважды нажмите клавишу F8 и идите на нижнюю строку. Строка, на которую Вы попали, пустая, она лишняя, удалите её, нажав Del, и теперь можете экспериментировать.
Чтобы попробовать, как работает программа озвучивания, приготовьте для неё файлы партитуры P.txt и L.txt (можно просто переименовать примеры P1.txt и L1.txt). Затем запустите Турбо Бейсик, загрузите в него T_lp.bas и запустите программу через поле RUN. В ответ на возникший знак вопроса нажмите f и Enter.
Результат - файл PROBA.wav можно разглядывать и прослушивать, используя редактор Wave Editor. Через него же запись можно перевести в mp3 формат.
Программа T_mix.bas делает то же, но не разводит звук раздельно по динамикам, а делает для левой и правой руки лёгкий микс.
Программа T_mono.bas делает монозапись из файла партитуры A.txt. Предполагается, что это звук виолы. Чтобы соединить Виолу с фортепьяно нужно использовать три файла партитуры и программу T_stereo.bas.
ОБЩИЕ СВЕДЕНИЯ О ПРОГРАММЕ
Музыкальный звуковой файл, по имеющейся партитуре, создаёт программа озвучивания ТРИО. Структурно программа состоит из Дирижёра и трёх МУЗов - музыкантов, читающих каждый - свою партитуру (текстовый файл, содержащий указания на частоты, паузы, и на их длительности), и играющих каждый на своём инструменте.
Все доступные музыканту инструменты "сложены" в принадлежащую ему функцию создания звука в виде отдельных сценариев. Причём, одному инструменту может соответствовать не один, а два, или даже три сценария развития звука. Ведь и инструменты бывают разными, и звучать они могут очень по разному, если исполнитель постарается. Играет он смычком, щипком, или стучит по деке - это ведь очень разные звуки. Тембр пианино отличается от тембра рояля. И аккордеоны бывают разными. Смешно было бы требовать одного унифицированного сценария на все варианты звучания одного инструмента.
Но и раздувать количество сценариев не следует - нехорошо загромождать программу большим количеством текста. Каждому отдельно взятому сценарию следует дать возможности перестройки в части громкости звучания отдельных компонентов, формы развития звука и тембра. Естественно, что такая перестройка должна делаться не "перетягиванием колков во время игры" - не изменением текста сценария, а указаниями партитуры. Также, как в обычной нотной записи мы читаем - форте, пиано, торжественно, спокойно, блестяще.
Также, как и в скрипичной технике, тембр звука определяется несколькими составляющими:
" В основе штрихов лежит не деташе, как это часто неверно полагают, — ведь оно само является штрихом, а соотношение пяти различных элементов движения правой руки: 1) проведение смычка; 2) характер начального импульса и заключительное филирование звука; 3) нажим или ослабление давления смычка на струну; 4) использование сил упругой эластичности, заложенных в самом смычке (в частности, вибрация трости); 5) автоматизированные (дрожательные, колебательные) природные движения мышц руки. Эти элементы в той или иной степени присутствуют в каждом штрихе, но их сочетание и баланс различны."
Также и в синтезе музыкального звука перестройка его осуществляется параметрически. А конкретнее, через глобальные переменные, которые, в свою очередь, задаются через мнемонические указания в сценарии.
ОТСТУПЛЕНИЕ. ЧТО ТАКОЕ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
Тут, людям несведущим в программировании, я хочу пояснить, что такое "глобальные переменные" и почему они так называются.
В тексте функции, делающей звук, каждой переменной даётся своё название, и, если мы хотим, чтобы значения переменных сохранялись, наши переменные не должны путаться - нельзя давать одно название двум разным переменным.
Однако, таких функций в программе ТРИО три. Они функционально совершенно одинаковы, и делают одно и то же, только принадлежат они разным МУЗам. Оказывается очень удобным и переменные в этих функциях называть одинаково. Как быть?
Представьте, что вы живёте в доме, в котором, кроме вашей, есть ещё две квартиры. В каждой квартире, и в вашей тоже, есть помещения, называемые одинаково. И во всех помещениях что-то лежит. Вам говорят - пойдите на кухню и возьмите там то, что найдёте. Разумеется, если вы находитесь в своей квартире, то вы пойдёте на свою кухню, а не на кухню соседа.
Но для программы это не разумеется. Чтобы указать, что у вас есть своя кухня, вам нужно объявить её статической или локальной переменной, вот так -
STATIC Kuhnja или LOCAL Kuhnja
В чём разница? Если вы объявили Кухню статической переменной, то вы можете что-нибудь в ней оставить, выйти из квартиры, вернуться, и найти то, что оставили, в полной сохранности.
Если же вы объявили Кухню локальной, то вы можете полноценно использовать её, пока находитесь в своей квартире - принести на кухню из коридора чемодан, сделать на кухне дубликат чемодана и отнести его в спальню, принести из спальни цветок и прибавить его к чемодану. Но, если вы выйдете из квартиры и вернётесь обратно, то ни чемодана, ни цветка вы там не обнаружите. Скорее всего, на кухне будет пусто.
А что, если вы совсем ничего не объявляли относительно названия Кухня, а вам говорят - иди туда! Что вы делаете? Вы идёте в город, и ищете помещение с названием Кухня. Для вашей квартиры Кухня является глобальной переменной, она доступна для вас, также как и для всех. Её можно использовать для пересылки всяких вещей.
В нашем случае - параметров, от партитуры к звуковой функции.
КАКИЕ УКАЗАНИЯ МОЖНО ДАВАТЬ В ПАРТИТУРЕ
Итак, глобальные переменные, это переменные, на значение которых ориентируются некоторые сценарии с тем, чтобы скорректировать свои статические параметры, или соответствующим образом выполнять свои действия по развитию звука.
Названия этих переменных состоят из букв, и одной или двух цифр. Первая цифра в имени переменной вносится МУЗом и соответствует его номеру, а сама переменная используется звуковой функцией, принадлежащей данному МУЗу. За последним следует следить при составлении новых сценариев, или при перенесении сценария от одного МУЗа к другому. Глобальные переменные в разных звуковых функциях должны быть разными. Статические или локальные переменные имеют одинаковые наименования, но глобальные по названиям различаются.
Вид мнемоники назначения глобальных переменных в партитуре отличается от самого названия переменной. Например, если в партитуре, читаемой 3-им МУЗом, встречается указание Ar=2, то переменная ARE3 принимает значение 2, то есть, появление такого указания эквивалентно выполнению оператора ARE3=2.
Указания в партитуре записываются только латинскими буквами, и с соблюдением разного написания заглавных и строчных букв.
Мнемонические задания могут быть общего плана, их можно записывать в одной строке, даже совмещая эти указания с указанием на паузу:
H=.8 M=.5 TE=50 - громкость, частотный множитель, длительность спада звука
и R=8 - назначение сценария (назначение музыкального инструмента).
Задание S=1.2 замедляет темп на 20%, а S=.8 устанавливает более быстрый темп.
Эти назначения руководят действиями МУЗа и запоминаются в его статических переменных.
Такими же являются и назначения эхо - exo=1, exo=2 или exo=3.
Эти назначения вы можете видеть на рисунке, они находятся в самом начале партитур для левой и правой руки. Ну, тут уж музыкантов придётся разделить - один играет правую партию из файла TF.TXT, а другой играет партию левой руки, причём и тот, и другой могут играть и аккордами.
Партитурные назначения являются бессрочными - они действуют до конца озвучивания, или до тех пор, пока они не будут отменены или новым партитурным назначением, или изнутри какого-нибудь сценария.
Если назначения не было, это не значит, что назначение отсутствует. По умолчанию, то есть если прежде не было никаких распоряжений, считается, что
H=1 M=1 TE=20 R=0 - звук простой синусоиды, и exo=0 - эха нет.
Также, как и задания общего плана, в одной строке можно совмещать и другие указания.
Эти указания делятся на три группы -
строковые (задания строк рельефа), численные (пользовательские) и табличные (аккордные). Рассмотрим их в этой очерёдности.
СТРОКОВЫЕ УКАЗАНИЯ В ПАРТИТУРЕ. A_указания
Строковое указание открывается заглавной латинской A. Например, оно может быть такого вида
A1r$="некая строка из символов"
что будет эквивалентно присвоению A#1r$-"эта самая строка из символов"
где на месте # стоит цифра 1, 2 или 3, соответственно тому, какой МУЗ прочёл это указание в своей партитуре.
То же касается указаний A2r$="строка" и A3r$="строка".
Но не только это - одновременно устанавливается флаг ARE#=0. Флаг может использоваться звуковой функцией для выбора своих действий.
Флаг может быть установлен и отдельно, вот так - Ar=0 или Ar=1, 2...9,
но если указать Ar=11 или Ar=12 ...15, то флаг будет установлен в положение 10, а в глобальной переменной A#rr$ появится обертонный рельеф одного из первых пяти флажолет,
а если указать Ar=16, Ar=17 или Ar=18, то - один из рельефов, характерных для звука альта.
Рельеф в переменной A#rr$ можно задать и непосредственно, вот так -
Ar="строка изображающая рельеф" флаг ARE# при этом устанавливается в положение 10.
Итак, давайте посмотрим, какие глобальные переменные мы можем задать в партитуре, используя А_указания.
Это 9 строк - A11r$ A12r$ A13r$ A21r$ A22r$ A23r$ A31r$ A32r$ A33r$
три строки - A1rr$ A2rr$ A3rr$
и три флага - ARE1 ARE2 ARE3
Тройку из девяти первых строк можно заполнить нулевым рельефом - придать им значения "50", если дать указание Ar=-1
ЧИСЛЕННЫЕ УКАЗАНИЯ В ПАРТИТУРЕ. U_указания
Численное, или пользовательское указание, не столь сложно, как строковое. Оно открывается заглавной буквой U. Вот те пользовательские указания, которые предусмотрены в программе ТРИО на данный момент:
КОЭФФИЦИЕНТ EA, используемый в сценариях со звуком фортепьяно или трубы, может быть скорректирован по указанию UEA=1, -2 или любое другое число.
Это указание задаёт глобальные переменные UEA1 UEA2 UEA3 (по номеру МУЗа), имеющие приоритет в тех сценариях, в которых эти переменные учитываются.
ДИССИПАТИВНЫЕ DU1 DU2 DU3 корректируются по указаниям UDa= UDb= UDc=
Эти указания задают глобальные переменные UD1a UD2a UD3a UD1b UD2b UD3b UD1c UD2c UD3c,
имеющие приоритет в тех сценариях, которые их используют.
Назначения ПРИДЫХАНИЯ - UX=.3 задают диссипативный фактор сведения амплитуды к нулю. Этот параметр используется в сценарии CASE 5 'du du, то есть труба.
Снятие придыхания - UX=0
Глобальные переменные - UX1, UX2 и UX3 по умолчанию равны 0.
Назначение параметров для Виолы аналогично, например - UV=.35 и ключ UW=1 этим назначениям соответствуют глобальные переменные UV# и UW#
Для создания частотного вибрато Виолы только для первого МУЗа используется назначение w... , где ... это число, целая часть которого указывает частоту вибрато, а дробная - амплитуду вибрато в процентах. При этом назначении указанное число заносится в глобальную переменную W1W. Переменная эта затем используется в сценарии для Виолы. Назначение w0 устанавливает W1W в ноль, вибрато в этом случае отсутствует.
Установка всех U переменных в ноль по умолчанию - U=0 или U=
УСТАНОВКА АККОРДОВ В ПАРТИТУРЕ. G_назначения
Использование аккордов в программе ТРИО подробно обсуждается тут -
http://www.proza.ru/2016/03/28/350
Самое распространённое аккордное назначение выглядит так - G=/43 здесь указывается, что нижний аккордный звук, с частотой, указанной в партитуре, сопровождается вторым звуком на 4 полутона выше, и третьим звуком, который на 3 полутона выше второго.
Этот же аккорд можно назначить и так - G=/+043 или G=/7-03
то есть, если в записи присутствует знак плюс или минус, то в качестве числа полутонов берётся двухзначное число, а если знака нет, то только одна цифра.
Между = и / может стоять целое число №, оно укажет на задержку появления звука в последовательности нот аккорда. Таким образом можно создать арпеджиато.
Для аккордного назначения не обязательно использовать отдельную строку. Если аккорды идут часто, то назначать аккорды удобнее в конце строк, указывающих на частоты. Разумеется, перед аккордным назначением в этом случае нужно сделать пробел, отделив его от предыдущих цифр.
Чтобы снять только назначение арпеджиато, сохранив прежний аккорд, нужно записать G=/, назначить арпеджиато к прежнему аккорду - G=№/, а чтобы перейти к одиночному звуку - G= безо всяких указаний после знака равенства, но проще это можно сделать локальным указанием g.
Все аккордные назначения находятся в общем глобальном двухмерном массиве Ac(10,3), индексированном в первом индексе по звукам аккорда, а во втором - по МУЗам. Таким образом, каждый аккорд может содержать до 10-ти звуков.
ЛОКАЛЬНЫЕ УКАЗАНИЯ, ШТРИХИ И НЮАНСЫ
Для тонкой регулировки звучания используются нюансы - мелкие локальные указания. Они характерны своей локализацией в партитуре - значки нюансов принимаются во внимание только в нотах, то есть только в тех строках, которые начинаются указанием частоты F= и длительности звучания ноты. Кроме того некоторые нюансы доступны только избранным МУЗам.
Общие для всех трёх МУЗов нюансы задаются значками < << > >> g
< увеличить громкость этой и последующих нот на 20%
<< увеличить громкость на 20% дважды, то есть 40 %
> уменьшить громкость этой и последующих нот на 20 %
>> уменьшить громкость на 20% дважды
g снять аккордное назначение
r (без знака равенства) - указание на номер сценария. Равносильно общему R=
Особый для третьего МУЗа нюанс t прибавляет указанное число семплов к длительности звучания отмеченной этим знаком ноты. Отрицательное число после значка t сокращает время звучания ноты.
Например, в строке F= 292 T1= 9800 T2= 199 t800 время звучания ноты будет взято равным 9800+800=10600 семплов.
Поскольку предполагается, что ритмика третьего МУЗа является определяющей для второго МУЗа (они могут исполнять партии правой и левой руки для игры на фортепьяно), то вслед за моментом добавления времени звучания третьему исполнителю добавляется время (звучания или паузы) и исполнителю второму. Поэтому несмотря на замедления у 3-го МУЗа, второй МУЗ скорректирует своё время, и будет продолжать звучать синхронно с третьим.
Но если время звучания не увеличивается, а сокращается (при отрицательных значениях t), то вначале второй МУЗ проверяет - а может ли он сократить своё время, не получится ли отрицательный результат? В этом случае он своё укорочение времени откладывает до следующего звука или паузы.
Разумеется, изменения ритмики можно делать и вручную - изменив в партитурах времена T1 и T2 подходящим образом, но для этого нужны некие вычисления по части соотнесения времён, и делать замедления или ускорения с помощью значка t в третьей партитуре оказывается удобнее.
Особый нюанс задаёт значок l - супер легато. Нота с таким значком, и все последующие за ней ноты, оказываются лишёнными после нотной паузы - время T2 добавляется ко времени T1. Значок n нормализует звучание, возвращая его к заданному временами T1 и T2.
Эти значки Вы можете видеть на фрагментах партитур, показанных в окнах на рисунке.
Особые нюансы, связанные со звуком Виолы, реализованы для первого МУЗа. О них можно прочесть здесь - http://www.proza.ru/2016/11/10/1515 и здесь - http://www.proza.ru/2016/12/12/989
Отдельно следовало бы сказать о метке #, которую мы видим в самом начале партитур. При работе по входу f (подробности тут http://www.proza.ru/2016/08/11/1466 ) озвучивание начинается с этой метки.
Партитурные значки и назначения позволяют удобно вводить нюансы звучания способом корректировки партитуры. Пример звучания фортепьянной пьесы в две руки, сделанной синтезированным звуком по сценарию 8 можно прослушать тут -
https://yadi.sk/d/pFtwyxkY33sVv6
==================================
Свидетельство о публикации №216061900581
Я пользуюсь старым, проверенным редактором Кейкволк, ну и ещё есть простенькие.
Хочу вот научиться делать аранжировки мелодий.
С уважением,
Отецанатолий 02.09.2016 21:13 Заявить о нарушении
А эта программа экспериментальная, она использует оригинальный подход и даёт звук принципиально другой, основанный на других принципах синтеза.
На мой взгляд, по этому пути синтетический звук может быть заметно приближен к благородному звуку классических инструментов, к тому, за что мы собственно классику и любим. А кое в чём и превзойти звук реальный.
Например, будь ты хоть трижды Башмет, но на альте ты не сможешь сыграть флажолет ярко и красиво, а синтезированный звук это сделать позволяет.
В звучании классики могут появиться интересные нюансы.
Словом, у метода есть своя ниша.
Дмитрий
Дмитрий Маштаков 02.09.2016 21:39 Заявить о нарушении
Что касается программы ТРИО, то она способна создавать качественный звук, обходясь без реальных инструментов. Но ТРИО не редактор, проводить аранжировку она не может.
Я нашёл в интернете ноты либертанго Пьяццоллы в переложении для аккордеона с фортепьяно. Вот это задача для ТРИО посильная - она может создать эту музыку в хорошем качестве, используя исключительно синтезированный звук. Без реальных аккордеона и фортепьяно, и не используя записи звука этих инструментов.
Дмитрий
Дмитрий Маштаков 03.09.2016 10:07 Заявить о нарушении
Отецанатолий 03.09.2016 13:19 Заявить о нарушении
Я сейчас попробовал сделать запись от ТРИО с разделением звучания фортепьяно от левой и правой руки на левую и правую колонки, соответственно. Результат впечатляет в сравнении с моно. Даже не через колонки, а через динамики ноутбука. Ни в какой реальной записи подобного разделения звуков не добиться. Запись в mp3 формате вот здесь -
http://yadi.sk/d/SZChHNVAujEpa
Дм.
Дмитрий Маштаков 03.09.2016 15:14 Заявить о нарушении
Дмитрий Маштаков 04.09.2016 05:05 Заявить о нарушении