Флажолеты в рельефе звука альта
Поговорим об этом более подробно, уделив внимание и технической стороне - рассмотрим удобный способ создания рельефа из обертонов. Разумеется, звуковой рельеф составляется из обертонов путём их сложения, каждого - с определённым весом и с учётом некого затухания. Но, не будете же Вы, складывать обертоны вручную.
ФОРМА ПРЕДСТАВЛЕНИЯ РЕЛЬЕФА
Напомню о форме, в которой в программе ТРИО представляется рельеф звука.
Рельефом звука называется распределение амплитуды звукового колебания внутри периода - от его начала (обозначенного как 0) и до его конца (обозначенного как 2). Распределение это фигурирует в программе в виде строки из двухцифровых чисел от 01 до 99 каждое. Выраженное, например, так -
"5050505050505050" что означает, что никакого рельефа нет, амплитуда везде равна нулю.
или так - "604060406040" третий обертон, за время периода амплитуда рельефа совершила три колебания с размахом плюс минус 10 единиц. Плюс минус - от значения 50.
Мы видим, что строки, описывающие рельеф, могут быть произвольной длины.
Амплитуда звукового колебания извлекается из строки рельефа с помощью функции FNSPL(A$,X), осуществляющую сплайн интерполяцию.
Первым параметром функции является строка, содержащая рельеф. А фактически - ссылка на эту строку. Физически строка никуда не пересылается, и потому время счёта совершенно не зависит от того, насколько длинной окажется строка.
Вторым параметром при обращении к функции интерполяции является X - фаза колебания, число от 0 до 2-х.
Функция возвращает значение амплитуды колебания. Вы можете видеть, например, такую запись -
C=FNSPL(A$,X)+MB*FNSPL(B$,X) к амплитуде первой строки прибавляется часть амплитуды второй, и результат записывается в переменную C. Строки A$ и B$ могут при этом иметь разную длину.
СОСТАВ ФЛАЖОЛЕТА И ОТОБРАЖЕНИЕ ОБЕРТОНА НА РЕЛЬЕФЕ
Каждый флажолет представляет собой одновременно звучащую группу обертонов. Будем обозначать обертоны цифрами в соответствии с числом пучностей на колеблющейся струне. Наиболее громко звучат более низкие обертоны флажолета, а среди флажолет наиболее явственно звучат те, в составе которых эти низкие обертоны имеются.
В статье "Флажолеты в звуке альта" таких, наиболее сильных флажолет, по положению точки их извлечения на струне, было выделено 5. Два флажолета из этих пяти имеют одинаковый обертонный состав, хотя флажолет, находящийся ближе к центру струны, должен звучать на низких обертонах более полным звуком, это тонкости, они есть, и их можно учитывать или нет. Вот эти 5 флажолет, они представлены цифрами в скобках, в порядке следования от центра струны -
'(,5,10,15,20) (,3,6,9,12,18) (,4,8,12,16) (,5,10,15,20) (,6,12,18)
Чтобы отобразить на рельефе 3-й обертон с максимально возможной его амплитудой, мы запишем строку - "990199019901", в ней мы обозначили три максимума числами 99 и три минимума числом 01.
Для четвёртого обертона строка будет выглядеть так - "9901990199019901", и далее, чем обертон выше, тем строка длиннее.
Но, вызванные срывом смычка, обертонные колебания затухают, как бы нам это изобразить? Пусть они не будут затухать совершенно к концу периода, но пусть их амплитуда уменьшается по линейному закону, так как это показано на рисунке для обертона номер 6.
Там же на рисунке красным показан пичок, шириной Vi=.35 и, разумеется, мы погрешили против истины, начав обертон чуть-чуть прежде, чем струна оборвалась с максимума пичка. Однако в отношении тембра воспринимаемого звука, это небольшое различие оказывается совершенно несущественным, поскольку в звуке реального альта находится много эха обертонной частоты, но не всегда понятной природы, так что примем пока то, что получилось.
Далее, нам следовало бы сложить несколько обертонов вместе, и установить закон - как громкость обертона будет зависеть от его номера. Предположим, что она будет обратно пропорциональна корню квадратному из номера. Считаем -
.557 для 3 .5 для 4 .447 для 5 .41 для 6 ... .22 для 20 - может быть излишне пищаще получится, но зато все обертоны слышны будут, из этих соображений.
Всё это я проделал, используя вспомогательную программу, текст которой привожу в конце статьи. И будем пробовать, какой звук получился.
ЗВУЧАНИЕ ПИЧКОВОЙ СТРУКТУРЫ СОВМЕЩЁННОЙ С ФЛАЖОЛЕТНЫМ РЕЛЬЕФОМ
Сравнивать звук на рельефе флажолета будем со звуком, полученным на рельефе реального альта, представленным строкой 'red в следующем сценарии -
CASE 41 'viola
MU2=20.2 : AU2=2 : DU2=150.99 : mod2=33
MU3=67.06 : AU3=3 : DU3=10.999
'red
CASE -41 : Vi=.35+.15*FNTIM(4/(1+.6*T),T) : IF NT=100 THEN MU2=40.05
'Vo=.2*FNTIM(6,T)
в сценарии нет ротации строк рельефа, и звук "живёт" за счёт движения пичка по неподвижному рельефу. Или, как показано в сценарии, за счёт апериодического изменения ширины пичка, или, если снять апостроф на нижней строке, также и за счёт дополнительного периодического смещения пичка с частотой 6 Гц. В последнем случае синтезированный звук альта звучит более торжественно.
Я употребил выражение "звук живёт", чтобы подчеркнуть ту проблему, которая всегда имеется при создании искусственного, синтезированного звука - звук не получается естественным, если форма колебания будет точно повторяться от периода к периоду. На картинке с надписью "звук альта с флажолетом" можно видеть, небольшое и постепенное, но различимое изменение формы колебания при переходе от одного периода к другому. Такая вариация синтезированного звука достигается тем, что каждый раз между периодами выполняется часть сценария, обозначенная как CASE -41, и каждый раз операторами Бейсика, находящимися в этой части сценария, изменяется ширина пичка и его положение на неподвижном рельефе.
Чтобы перейти от реального рельефа 'red к составленному из обертонов рельефу флажолета, нужно снять апостроф у длинной строки сценария - в ней записан рельеф флажолета номер 1.
Для других флажолет ставим на место этой строки другие строки.
Запись звуков альта с флажолетами можно прослушать тут -
https://yadi.sk/d/6yQVP_8jrGsvq
вначале идут звуки с рельефом 'red - обычные и торжественные, а затем, последовательно, такие же звуки на рельефе 5-ти флажолет.
Звуки, на мой взгляд, перспективные для использования. Поскольку, во-первых они не являются некой выдумкой или украшательством, призвук флажолет естественен для всех смычковых инструментов поскольку смычок с одной стороны разгоняет струну, а с другой стороны, прижимаясь к ней, он же её тормозит. Ну как в этом звуке не услышать призвук флажолета?
Призвук, он может быть, небольшой, рельеф не обязательно целиком строить на флажолете, а примешать в него значительную долю реального рельефа, например, 'red или 'blue или'green, но зато ( и это во-вторых) какие возможности модуляции тембра и какие красоты открываются перед синтезированным звуком!
Так что оптимизм в этом направлении имеется. Тем более, что и вся музыкальная культура идёт в настоящее время по пути поиска нового или уже забытого старого звучания музыкальных инструментов, по пути поиска нового тембра.
Потому и вся эта работа представляется мне нужной, даже если не в практическом, то в исследовательском плане.
РОТАЦИЯ СТРОК
Обертонный состав рельефа может изменяться в процессе развития звука путём ротации строк.
Дело в том, что рельеф может содержатся не только в единственной строке A3r$, но и в предназначенных для того же 3-го МУЗа строках A31r$, A32r$ и A33r$. Строки эти могут, составляя некую комбинацию, или сами по себе, подменять содержимое Arr$.
Ротация строк с подменой рельефа осуществляется обращением к подпрограмме функции "3_to_one" FNRE$(AM,K). Функция "3_to_one" условно располагает строки A31r$, A32r$ и A33r$ по уровням -1, 0 и 1 и возвращает строку промежуточную - взвешенную между этими уровнями в соответствии со значением параметра-амплитуды AM. Возвращённое значение присваивается строке Arr$.
Иллюстрацию этого процесса см. на рисунке сверху справа.
Параметр AM можно изменять по времени периодически, так, как это показано на рисунке красным, или экспоненциально, если связать его с амплитудой того же рельефа - показано синим.
Если в процессе изменения окажется, что AM=1 - функция вернёт верхнюю строку, AM=0 - среднюю, AM=-1 - нижнюю. Если AM займёт промежуточное значение, то строка будет составлена таким образом, что все значения рельефа в ней будут иметь промежуточные значения.
Второй параметр K указывает на номер МУЗа, на строках которого делается ротация.
Ротацией строк рельефа можно оживлять звук во время его развития, или изменять его обертонный состав в процессе его затухания. Такие возможности, в совокупности с тем, о чём было сказано выше, будут конкурировать с возможностями обертонной группы, которая через некоторое время будет всё же добавлена в программу ТРИО.
ВСПОМОГАТЕЛЬНАЯ ПРОГРАММА ДЛЯ СОСТАВЛЕНИЯ РЕЛЬЕФА ИЗ ОБЕРТОНОВ
Привожу текст программы для создания рельефа с обертонными наложениями. Обращаю внимание на начальную строку с нулевым рельефом C$. Какой длины Вы её зададите, такой длины строку получите в результате, и таково, соответственно, будет и тонкое разрешение обертонной структуры.
А каким должно быть разрешение? Для частоты 640 Гц при скорости раздачи 32000 семпла в секунду на 1 период приходится 50 семплов, и нет смысла делать строку длиннее. У нас она, видите, разрешит 42 семпла на период, и вполне годится не только для 640 Гц, но и для более низких частот.
Вы указываете обертонный состав - SS$="(,3,6,9,12,18)" и запускаете программу. На знак ? нажимаете Enter. Результат находите в файле RR.TXT
================
'Z_FL.bas
'sum C$=A$+MB*B$+...
M=1 : MA=1 : MB=.1
10 INPUT A$
IF A$="9" THEN : STOP
OPEN "RR.TXT" FOR OUTPUT AS #2
SS$="(,3,6,9,12,18)"
'(,5,10,15,20) (,3,6,9,12,18) (,4,8,12,16) (,5,10,15,20) (,6,12,18)
E$=SS$ : MM=0
15 I=INSTR(E$,CHR$(44)) : IF I=0 THEN M=M/MM : GOTO 20
E$=MID$(E$,I+1) : V=VAL(E$) : MM=MM+SQR(1/V) : GOTO 15
20 A$=C$ : I=INSTR(SS$,CHR$(44)) : IF I=0 THEN CLOSE #2 : GOTO 10
SS$=MID$(SS$,I+1) : V=VAL(SS$) : MB=M*SQR(1/V) : B$=""
FOR I=1 TO V : B$=B$+"9505" : NEXT I
C$="" : L=LEN(A$)/2 : DX=2/L : X=DX/2
30 S=(FNSPL(A$,X)+MB*FNSPL(B$,X)*(3-X)/3+1)*50
S$=STR$(CEIL(S)) : L=LEN(S$)
IF L=3 THEN S$=MID$(S$,2)
IF L=1 THEN S$="00"
C$=C$+S$ : X=X+DX : IF X<2 THEN 30
PRINT #2,"B$="+CHR$(34);B$;CHR$(34)
PRINT #2,"C$="+CHR$(34);C$;CHR$(34) : GOTO 20
'================
DEF FNSPL(E$,X) 'spline interpolation
LOCAL L,Nr,B,B1,B2,ZZ,A$
A$=E$
L=LEN(A$)/2 : IF L<1 THEN FNSPL=0 : EXIT DEF
L=X*L/2 : Nr=INT(L) : L=(L-Nr)*2-1 : Nr=Nr*2+1
B=VAL(MID$(A$,Nr,2))
IF Nr=1 THEN B1=50 ELSE B1=(VAL(MID$(A$,Nr-2,2))+B)/2
IF Nr=LEN(A$)-1 THEN B2=50 ELSE B2=(VAL(MID$(A$,Nr+2,2))+B)/2
B2=(B2-B1)/2 : B1=B2+B1 'B2=(-)/2 B1=(+)/2
ZZ=B1+B2*L : ZZ=ZZ+(B-B1)*(1-L*L)
FNSPL=(ZZ/50-1)
END DEF
'=================================================
Свидетельство о публикации №216042501646
С уважением,
Людмила
Людмила Корчагина 3 10.05.2016 20:58 Заявить о нарушении
Но можно изучать самые основы получения и восприятия звука. Многое из того, что никто никогда не делал. Просто потому, что никто не использует для этих целей Бейсик - простейшую среду, считающуюся даже примитивной, годной разве что для учёбы.
Но именно она оказывается более эффективной в некоторых вещах.
Я развиваю по-периодный метод синтеза звука - некими средствами создаётся период звукового колебания, с достаточно сложным рельефом, затем некоторые параметры изменяются и следующий период создаётся уже в несколько изменённом виде. И так шаг за шагом. К звуку могут быть добавлены обертоны и эхо, некоторые звуки объединяются, И создаётся полноценное звучание, которое, если правильно разобраться в его сути, может быть даже чище и выразительнее натурального звучания реальных инструментов.
Дм.
Дмитрий Маштаков 10.05.2016 22:23 Заявить о нарушении