Как работать с программой ТРИО

Работа с программой озвучивания ТРИО
=== ВНИМАНИЕ в настоящее время программы Пианола и Трио переведены на современную платформу. Ознакомиться с их работой можно тут - 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
   

 ==================================


Рецензии
Какая интересная программа. Вот бы сравнить её возможности с иными Музредакторами.
Я пользуюсь старым, проверенным редактором Кейкволк, ну и ещё есть простенькие.
Хочу вот научиться делать аранжировки мелодий.

С уважением,

Отецанатолий   02.09.2016 21:13     Заявить о нарушении
Старые и проверенные программы для практики несомненно лучше, хотя бы потому, что они профессионально сделаны, и возможностей у них к аранжировкам больше.

А эта программа экспериментальная, она использует оригинальный подход и даёт звук принципиально другой, основанный на других принципах синтеза.
На мой взгляд, по этому пути синтетический звук может быть заметно приближен к благородному звуку классических инструментов, к тому, за что мы собственно классику и любим. А кое в чём и превзойти звук реальный.
Например, будь ты хоть трижды Башмет, но на альте ты не сможешь сыграть флажолет ярко и красиво, а синтезированный звук это сделать позволяет.
В звучании классики могут появиться интересные нюансы.
Словом, у метода есть своя ниша.

Дмитрий

Дмитрий Маштаков   02.09.2016 21:39   Заявить о нарушении
Я посмотрел и послушал, что собой представляет Кейкволк. Это редактор, сам он звук не создаёт, а если и создаёт, то весьма посредственный. Редакторы могут хорошо смешивать и преобразовывать уже записанные звуковые треки, добавлять к ним некую ритмику, но создавать нормальный звук они не в состоянии. Для нормального звука нужны нормальные (обычные, существующие в реальности) музыкальные инструменты.

Что касается программы ТРИО, то она способна создавать качественный звук, обходясь без реальных инструментов. Но ТРИО не редактор, проводить аранжировку она не может.
Я нашёл в интернете ноты либертанго Пьяццоллы в переложении для аккордеона с фортепьяно. Вот это задача для ТРИО посильная - она может создать эту музыку в хорошем качестве, используя исключительно синтезированный звук. Без реальных аккордеона и фортепьяно, и не используя записи звука этих инструментов.

Дмитрий

Дмитрий Маштаков   03.09.2016 10:07   Заявить о нарушении
А вот совместить результаты полученные в 3 О и применить их в кейкволк, наверное возможно такое?

Отецанатолий   03.09.2016 13:19   Заявить о нарушении
Я думаю, кейкволк воспринимает обычные звуковые дорожки WAV и mp3 формата, которые получаются от ТРИО, и следовательно их можно использовать.
Я сейчас попробовал сделать запись от ТРИО с разделением звучания фортепьяно от левой и правой руки на левую и правую колонки, соответственно. Результат впечатляет в сравнении с моно. Даже не через колонки, а через динамики ноутбука. Ни в какой реальной записи подобного разделения звуков не добиться. Запись в mp3 формате вот здесь -
http://yadi.sk/d/SZChHNVAujEpa

Дм.

Дмитрий Маштаков   03.09.2016 15:14   Заявить о нарушении
ошибся, вот правильная ссылка - http://yadi.sk/d/-4H_zFlouk9HM

Дмитрий Маштаков   04.09.2016 05:05   Заявить о нарушении