Синтез музыкального звука в Визуал Бейсике

  Итак, Вы запускаете программу, и видите то окно, которое показано на рисунке, только на месте надписи P----P на клавише будет написано "Начало".
  Кликайте мышкой, и надпись P----P появляется.
  Что же показывает эта надпись?
  Надпись показывает, что звук считанный из файла-партитуры для правой руки TFP.txt будет равномерно распределяться в левый и правый динамики компьютера.
  Естественно, этот файл должен присутствовать в той же папке, что и сама программа, и Вы можете сделать этот файл в программе Блокнотик. Это обыкновенный текстовый файл, и его содержание может быть таким, каким оно показано на рисунке.
  Или даже более простым -
                что означает:
 ==================      начнём дружно вместе
  R=8 H=3                на инструменте №8 (на рояле) с громкостью 3
F= 440      T1= 16000    играть ноту частотой 440Гц (Ля первой октавы)
F= 392      T1= 26000    затем ноту Соль
F= 523.2    T1= 32000    затем ноту До второй октавы
 L= 16000                и сделаем паузу с длительностью 16000 семпла
 ==================    закончим эту страничку и подождём других музыкантов
,,,                а тут кончим играть, и закроем файл партитуры

  Вы понимаете, почему партитура разделена на странички линиями "==========" ?
  Это для того, чтобы музыканты, если вдруг собьются, ждали бы друг друга, чтобы начать новую страничку дружно. Кроме того, мы с вами можем эти странички пронумеровать, чтобы отличать их друг от друга.  *см.Примечание №1

  Текст, который я привёл, вполне рабочий - скопируйте его (прямо вместе с комментариями на русском языке) в файл TFP.txt и запустите программу.
Выберете конфигурацию P----P, отметьте галочкой опцию SaveToFile и кликните клавишу "Счёт".
  Через пару секунд появится файл PROBA.WAV, который можно прослушать и услышать звучание нот Ля, Соль, До.
  Конечно, звуки эти совсем простые, но давайте, усложним наш файл партитуры и немного поработаем с ним.


    КАК МОЖНО РАБОТАТЬ С ФАЙЛОМ ПАРТИТУРЫ

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

 1 ================= TFP.TXT
 L= 16000
  R=8 H=3 
F= 440      T1= 16000 T2=0
F= 392      T1= 16000 T2=10000
F= 523.2    T1= 32000 T2=0 << b
 L= 16000
 G=/43 H=6
F= 261.6     T1= 32000 T2=0
 L= 16000 H=3 S=.7
F= 659.26 T1= 15680  T2= 320 g
F= 784     T1= 15680  T2= 320
F= 880     T1= 15680  T2= 320 t2000
F= 784     T1= 15680  T2= 320 t2000
F= 659.26 T1= 31360  T2= 640
 L= 16000
 2 =================
,,,

  Кроме длительностей звучания нот T1 в партитуре указаны значения T2=, это - длительности посленотных пауз.
  Эти длительности проставляются автоматически, если мы делаем партитуру с помощью программы "Пианола". Тогда и о частотах не нужно задумываться - просто нажимаем клавиши компьютера, раскрашенные под клавиатуру ф-но - http://www.proza.ru/2016/10/11/46 и записываем ноты в мнемонической форме. И уже потом, когда правильность звучания нот будет проверена и отлажена, указываем подходящую скорость раздачи и делаем партитуру.

  Но простенькую партитуру можно сделать и вручную. С её помощью можно опробовать программу Трио и прочувствовать, как всё работает. 
  Вы можете видеть, что я сделал посленотную паузу для ноты Соль T2=10000, перенеся на неё часть звучания самой ноты. Кстати, при скорости раздачи VEL=32000 семпл/сек указание T1=16000 означает, что нота Соль будет звучать 1/2 секунды.
  И если выбрать VEL, равную не 32000, а 44100 семпл/сек (для этого нужно кликнуть по правой клавише), то партитуру, рассчитанную на скорость раздачи 32000, менять не надо, коррекция длительностей звучания нот и пауз будет сделана автоматически.

  Коррекцию длительностей можно сделать и внутри партитуры - указание S=.7 укоротит и звучание паузы, на которой оно сделано, и ускорит темп всех последующих нот.
  Хотите локально замедлить звучание отдельных нот? Указываем на них t2000, и эти ноты будут звучать дольше (посленотная пауза сохранится). *см.Примечание №2
  Прослушали. Поняли, что ошиблись с этим указанием? Уберите его.
  Хотите укоротить длительность звучания? Укажите t-2000.

  В тексте партитуры имеются и другие локальные указания - < (единожды) или << (дважды) несколько увеличит громкость звучания (изменит величину громкости H).
  Значок "b" усилит обертоны и создаст эффект удара по клавише.
  Указание "g" снимет предыдущее аккордное назначение.
  В тексте партитуры мы видим и само аккордное назначение -  G=/43. Цифры здесь означают подняться на 4 полутона, и подняться на 3 полутона. От ноты До получается аккорд До-Ми-Соль, мажорное трезвучие.
 
  Заходите сюда - http://yadi.sk/d/FBHosWpK3MLC6T
скачивайте программу и экспериментируйте. По этому же адресу находятся два файла партитуры для левой и правой руки с надписью "Шопен". Уберите из названия эту надпись, переименовав файлы в TFP.txt и TFL.txt, и запустите программу на счёт с конфигурацией записи L----P. Прослушайте результат. Посмотрите, как выглядят партитуры.
  Там же находится папка с программой "Пианола" и со всеми пояснениями для работы с ней. Используя эту программу Вы сможете создавать свои партитуры.


   ДЛЯ ЧЕГО ПОНАДОБИЛСЯ ВИЗУАЛ БЕЙСИК

  Всё, о чём выше шла речь, было уже реализовано в среде Турбо Бейсик. И о самом проекте, и о его реализации написано тут - http://www.proza.ru/2016/06/10/1302
  Результаты вполне приличные. Записи классической музыки, сделанные с использованием программ "Пианола" и "Трио", можно прослушать - http://yadi.sk/d/poMxlrBuxendv

  У проекта имеется один недостаток - среда его реализации древняя, и на современном компьютере программы, написанные на Турбо Бейсике, не очень хорошо идут. Чтобы в программе "Пианола" был слышен звук, приходится запускать её, используя ДОС-ящик - специальную добавку, эмулирующую старую операционную среду.
  Программе "Трио" в реализации на Турбо Бейсике, звук не нужен, иногда не нужен и ДОС-ящик, но внутренний эмулятор системы Виндос, по-видимому, используется, поскольку программа работает медленно - время создания музыкальной записи превышает время звучания самой записи в 3 - 4 раза. Запись, правда, делается в фоновом режиме, и пока она делается, можно другими делами на компьютере заняться. Но тем не менее...
  Эта же программа, сделанная в Визуал Бейсике, работает в 8 - 12 раз быстрее. Кроме того, и работать с нею оказалось проще.
  Вот почему я об этом рассказываю.

  О структурных особенностях программы и о выгодах работы в Визуал Бейсике поговорим отдельно. Вот тут - http://www.proza.ru/2017/08/27/2000
  Тому, кто программирует в Визуал Бейсике и кому интересны исходники, вот ссылка на них -
http://yadi.sk/d/wmi511zH3MEmEv
Там же имеются примеры - фрагменты партитур для работы в составах A---LP и L----P.

  Современный вариант программы называется Тrio_Wav_Звук_Т
В правом нижнем углу окна имеется отогнутый кусочек. Если кликнуть по нему, то Вы получите обширные инструкции по работе с программой.
См. также это - http://www.proza.ru/2017/11/20/2328
_________________

Примечание №1. 
  Линии, разделяющие странички партитуры, могут быть длинными или короткими, требуется только присутствие символов "===" в позициях строки с 6-й по 8-ю, что и проверяется. Допускаются и пустые страницы, то есть две линии подряд. Такие страницы воспринимаются как сплошные паузы. Пауза в партии музыканта возникнет и по окончании партитуры (три запятые в начале строки), в этом случае музыкант просто перестаёт играть, но другие-то могут и продолжать, если у них партитуры не закончены.
 

Примечание №2.  ОСОБЕННОСТИ РАБОТЫ ПРОГРАММЫ С АНСАМБЛЕМ

  Такие указания очень удобны при работе в ансамбле. Если мы просто запишем в партитуре правой руки T1=17680 вместо 15680, то во-первых, мы тут же забудем о том, что там было записано прежде, а во-вторых, значения длительностей нот и пауз для левой руки останутся прежними, и в звучании нот возникнет разнобой.
  Коррекция же t2000 действует в момент её получения не только на заданную величину T1 правой руки, увеличивая её значение, но и корректирует T1 левой руки, если там звучит нота, или корректирует T2 левой руки, если там отрабатывается пауза. Если ноты в обоих руках возникают одновременно, то коррекция тоже работает, поскольку правая рука обрабатывается последней, когда указания для левой руки уже прочитаны.
  Если сбой при такой передаче всё же возникает, то рекомендуется в начале странички для правой руки записать небольшую паузу в несколько семплов. Звук эта пауза никак не изменит, но сбой будет устранён.
  Подобная же коррекция "от правой руки" может быть распространена и на канал "Альт". Канал "Альт" это канал, с которым работает музыкант №1 (MUZ_1 см.рисунок) - название условное, это может быть и фортепьянный канал - для некоторых пьес со сложным голосоведением двумя каналами не обойдёшься, даже используя аккорды. Поэтому, чтобы не портить музыку переложением, приходится иногда усложнять себе работу.
  Возможность коррекции "от правой руки" может распространяться и на канал MUZ_1. Чтобы указать на это, в начале партитуры TFA записывается общее указание FlagT=1. Указав FlagT=0 в партитуре, мы выведем этот канал из режима коррекции времени.
  То же относится к каналу TFL, однако флаг FlagT=1 установлен для этого канала по умолчанию, и специального указания на это не требуется.


 


Рецензии