Audacity - как установить скорость управления подсказкой Найквиста в соответствии со скоростью звука?

Я хочу использовать плагин Nyquist Prompt в Audacity для построения кусочно-линейной формы волны длиной 2048 отсчетов. Например, я могу сгенерировать прямоугольную пульсовую волну, начав с 2048 тихих (нулевых) выборок, выбрав все, а затем вызвав подсказку Найквиста с помощью:

(sum s (pwl
  0 1
  0.5 1
  0.5))

При этом используется кусочно-линейная функция (pwl) для создания сигнала, который начинается в момент времени 0, уровень 1,0, затем линейно интерполируется до момента времени 0,5 (на полпути через выделение), уровень 1,0, затем сразу же перескакивает на уровень 0,0, и продолжайте с 0,0 до времени 1,0.

Это работает, однако результирующий сигнал не имеет резкого перехода (шага) с одной выборкой в ​​момент времени 0,5, вместо этого он имеет линейное изменение между 1,0 и 0,0 на протяжении ~ 40 выборок. Это неприемлемо в данной ситуации.

Преобразование здесь предполагает, что в Audacity плагин Nyquist фактически работает с скорость намного меньше, чем скорость звука, следовательно, результирующая рампа.

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

Мои вопросы:

  • можно ли настроить скорость управления в соответствии с частотой дискретизации звука, чтобы я мог точно контролировать функцию pwl и
  • как это можно было бы включить в выражение Найквиста Лиспа, которое также вызывает «pwl» - я вообще не очень хорошо знаком с Лиспом и не понимаю, как последовательно выполнять два оператора. Я предполагаю, что есть функция, чтобы сделать это...

Я был бы рад использовать Nyquist за пределами Audacity, если это имеет смысл.


person davidA    schedule 17.04.2013    source источник


Ответы (1)


Тема, на которую я ссылался, содержала нужный мне ответ. Я опубликую это здесь, если это поможет кому-то в будущем:

(progv '(*control-srate*) (list *sound-srate*)
  (sum s (pwl
  0 1
  0.5 1
  0.5))
)

Это устанавливает скорость управления, равную частоте дискретизации звука, тем самым позволяя функции pwl напрямую отрисовывать целевой уровень в одном сэмпле.

Кроме того, кажется, что операторы в Лиспе делаются последовательными, просто помещая следующий оператор в качестве последнего параметра для предыдущего оператора. Например, здесь оператор для вызова 'sum' находится внутри блока, который является третьим параметром для progv. Это правильно и вообще?

person davidA    schedule 17.04.2013
comment
Нет, только в некоторых формах. Это (обычно) те, которые начинаются с prog (например, progv, prog1, prog2, progn и prog), и те, которые, как говорят, имеют неявную программу (let, when, unless и подобные). - person Vatine; 17.04.2013
comment
В общем, как построить последовательность отдельных операторов в lisp? Это просто список? - person davidA; 23.04.2013
comment
Наша последовательность с учетом побочных эффектов: (progn (do-thing-1) (do-thing-2) (do-thing-3) ... (do-thing-n)) Последовательность с использованием возвращаемых значений: (use-value-n (... (use-value-3 (use-value-2 (produce-value))) ...) - person Vatine; 23.04.2013