И это не про хранение сэмплов, а про:
Четверть преобразованного в логарифм синусоидального сигнала сохраняется в виде дискретизированного приближения в таблице памяти (ROM), доступной только для чтения, состоящей из 256 слов
...
так что единственное что я могу сказать про связь SAMPLED с OPL, это форумилировка "хранения", а не "медиа лупа волны", требующего воспроизведения
Да, Вы правы, что в ROM сохранена не конечная часть волны, которая готова без обработки уйти на ЦАП, а некая трансформация этой волны. Потом происходит последующее восстановление формы к первоначальному виду в процессе обработки. Как мы знаем, в данном случае это было сделано для упрощения вычислений. Алгоритмам DX7 с логарифически-преобразованным сэмплом "легче" управляться. Но подобный принцип в том или ином виде используется и в других сэмплерах и ромплерах. Это не мешает синтам на основе ROM генерации оставаться ромплерми.
1)
Например здесь в разделе: "DPCM or a companding compression and Roland" можно почитать о том, что в ромплерах от Roland сэмплы тоже в памяти сохранены в видоизменённом виде, грубо говоря не такие как должны поступать на ЦАП. Потом в процессе происходит их дополнительня обработка, чтоб привести их в "читаемый вид" для ЦАП. Но значит ли это, что Ромплер теперь не Ромплер, раз в ROM не "медиа лупа волны", а только формулировка "хранения"? - Нет, всё так же такие девайсы называют ромплерами. В данном случае трансформации записанного сигнала были сделаны для экономии памяти, с последующим восстановлением.
2) Если ещё коснуться темы Роландовских сэмплеров и ромплеров, то известно, что сэмплы для их сэмплеров S серии и по-моему в некоторых ромплерах хранятся в видоизменённом виде, а именно с изменённой амплитудно-частотной характеристикой, и в последствии после проигрывания действует восстановление спектра зеркальной кривой эквалайзера. Делается это для того, чтоб понизить шумы на высоких частотах. Это у них называется Emphasis. То есть по факту опять же сэмплы хранятся не в чистом виде, а с некой трансформацией, и в процессе генерации сигнал восстанавливается к первоначальному. Это конечно банальный эквалайзинг. Но... в случае с логарифмическими синусами в DX7 - тоже ничего страшного не происходит, звуковая волна поддалась шейпингу логарифмической кривой, тоже обычный себе процесс. В процессе проигрывания экспонентой шейпинг восстанавливает кривую в обратную сторону. Только если в DX7 трансформируется кривая в плоскости координат Время/Амплитуда, то в Роландах в плоскости Амплитуда/Частота. И потом обратно зеркальной кривой сигнал восстанавливается в процессе проигрывания. Но по факту в РОМ или на sample-CD у Роландов сигнал видоизменён, то есть под трансформацией! Тоже не то, что на прямую без обработки можно проиграть через ЦАП с оригинальным звуком, как с сэмплами в классическом понимании.
3) Некоторые специфические трансформации с сохранёнными сэмплами для их восстановления происходят и в Kawai K1. Суть описана на этой странице.
Грубо говоря сэмплы в ром тоже хранятся не в таком виде, в котором их следовало бы отправлять на ЦАП.
4) Ну и стоит ли упоминать о системе компандирования Dolby в аналоговом мире для понижения шума при записи на плёнку. Это конечно никаким боком не касается ромплеров, но Экспандер и Компандер сжимают и в последствии восстанавливают сигнал точно так же, как это происходит с ром DX7. Видоизменённая трансформированная запись на кассете продолжала называться записью, которая потом в процессе воспроизведения дополнительно восстанавливалась по форме сигнала. Процесс проигрывания такой кассеты называли "проигрывание", но никак не генерацию сигнала по функциям, хотя по факту там происходят именно "функция" Компадирования и Экспандирования, только в аналоговом мире ). То есть на плёнке записан не оригинальный сигнал, а трансформированный под "шейпером", который потом нужно восстановить к оригинальному виду зеркальной кривой. Это так, для аналогии.... нет ничего необычного в том, что синус с DX7 видоизменён логарифмической кривой и потом в процессе проигрывания восстанавливается. Тем не мене мы получаем именно тот сигнал, который изначально был подготовлен как готовый кусок сэмпла для ромплера, хоть и хранится в памяти в трансформированном виде.
Уже молчу про разные форматы сжатия музыки как mp3, где сигнал хранится в очень закодированном видоизменённом состоянии, но в процессе восстанавливается, хоть и не всегда точно. Но и при таком проигрывании mp3 файлов мы не говорим, что у нас сигнал не проигрывается, а генерируется но основе функций... Хотя по факту в процессе восстановления mp3 в сэмплоподобный вид для ЦАП, проходит много разных функций и преобразований.
Это так... всё аналогии, которые говорят о том, что факт видоизменения волны , хранимой в ромплере не свидетельствует о том, что ромплер перестаёт таковым быть.
Поскольку осциллирующий кристалл при скальпировании не обнаружен, ролью генератора выступает тупо мат функция параболы. И вот дальше она используется для построения волн.
Давайте подумаем, что такое мат функция параболы или синуса, и как она может быть реализована в рамках FM чипа?
Функцию можно вычислить ИЛИ по формуле, ИЛИ можно взять значение из готовой таблицы, которая когда-то была просчитана по этой формуле. (Как к примеру Таблица Брадиса). Раз вы говорите "МАТ ФУНКЦИЯ", то, вероятно, подразумеваете генерацию по формулам, без использования таблицы. Хотя мы знаем, что в чипе FM эта таблица зачем-то есть... Это противоречие! Это означает, что "тупо мат функция параболы" по формулам не просчитывается.
Если бы функция просчитывалась по формуле, то:
- Во-первых, было бы слишком ресурсоёмко для каждого отсчёта вычислять значение по этой формуле, тем более для каждого из 96 осцилляторов одновременно, вместо того, чтоб взять готовый просчитанный результат из таблицы.
- Во-вторых, такой формуле не нужна таблица засемплированных синусов, такая формула способна сама создать любую таблицу с любой точностью. (Именно так ведь таблица Брадиса и создавалась, по формулам.) Спрашивается, зачем тогда в ROM зашиты таблица сэмплов?
- В-третьих нигде не заявлено, что сам синус высчитывается по какой-то формуле. Выше вы давали формулу FM синтеза, из которой видно принцип работы FM синтеза в целом, но не видно, как именно вычисляется сам синус. Просто упоминается функция и известно, что её значения засэмплированны в ром. Поэтому ещё раз делаю акцент на том, что никакой формулы для мат функции параболы или для вычисления непосредственно синуса в описании FM движка не было. Была уже готовая таблица с вычисленными значениями. (По факту не чистый синус, а видоизменённый log sin(X) и exp, но не суть ...). Поэтому вся работа этой функции заключается в том, чтоб пойти по нужному адресу X в таблице сэмплов, и взять нужное значение амплитуды. Это как в таблице Брадиса. Вы не вычисляете значение по формуле, а идёте по нужному адресу (X), и находите значение, которое соответствует этому адресу. Это ли значит рассчитать? Нет, это не вычисление по формулам. Это именно то, что происходит при воспроизведении сэмплов. В этом смысле можно сказать, что любой сэмпл - это тоже табличная функция. То есть таблица отсчётов. Вместо Sin(X) у нас есть ROM с функцией SAMPLE(X) ... если за X брать время (то есть номер отсчёта), то ROM выдаст нам амплитуду сигнала по этому 'адресу', то есть в определённый момент времени. Так что, так называемое, в кавычках "вычисление" синуса на основе табличной функции, абсолютно по принципу работы не отличается от осцилляторов в ромплере, который генерирует сигнал на основе таблицы сэмплов. В качестве аргумента передаётся адрес, а именно какой отсчёт нужно проиграт, и РОМ выдаёт амплитуду этого отсчёта. Но при этом никто не называет сэмпл плеер вычислениями по функциям или табличными вычислениями, хотя пинцип тот же. Это называют проигрывание сэмплов. ИМЕННО по такому принципу работает сэмпл плеер, когда каждому отсчёту в таблице сэмплов сответствует значение амплитуды.
Поэтому наличие "функция" SIN (X) в формуле FM синтеза в данном случае нам говорит о том, что принцип работы этой функции эквивалентен сэмпл плееру SAMPLE (X) ... То есть вычисление по формулам, заменяется проигрыванием сэмпла с уже просчитанным значением этой формулы. Думаю, я максимально приближённо аргументировал РОМ-плеерный принцип действия генерации синуса в данном движке.
Более того, выше уже упоминалось, что вместо синусов в NCO осцилляторах может содержаться произвольная форма сигнала. То есть если я туда вместо синуса помещу сэмпл акустического инструмента, например гитары, ну и добавлю больше памяти, одним периодом не обойтись))), вряд ли это будет означать, что "ролью такого генератора будет выступает мат функция гитары" ... хотя по сути будут происходить все те же процессы. Если "проиграть" такой сэмпл без модуляций, мы услышим гитару вместо синуса. Вот такая вот загадочная "мат функция" гитары в NCO, в привычном мире именуемая сэмпл плеером, ромплером итп.
----
Выше ещё упоминали векторный принцип, когда сигнал строится по опорным точкам. Но здесь этим и в помине не пахнет, и даже приближённо не упоминается в мануалах, тем более для тех слабых процессоров из 80-ых. Да я и среди современных синтов на многоядерных процессорах таких рилтаймовых осцилляторов не припомню. Это что-то из разряда теории? Или на практике существует?
----------------------------------------
РЕЗЮМИРУЮ:
1) То, что там в мануалах пишут не сэмпл плееры, а генераторы - это не аргумент!
2) То, что там синусы считаются по формулам/функциям, опорным точкам, а не читаются из памяти - это не аргумент!
3) То, что в памяти не чистый сигнал, а модифицированный и потом в результате восстановленный, тоже не аргумент, во многих ромплерах встречал.
4) То, что там Кварц и ЦАП з пределами чипа, тоже не аргумент, ведь сразу было указано, что это не чистый DDS осциллятор, а вид DDS синтеза, или если хотите форма DDS, из которой, вероятно, взяли только суть NCO осцилляторов, апнули её, добавили частотную модуляцию итд... поэтому придираться, что там ЦАП вынесен за пределы чипа... ну то такое.