Page 1 of 1

Генерация пилы / нужна помощь с wavetable_generator

Posted: Thu Jul 30, 2015 8:23 pm
by fairplay
Привет,
я пишу библиотечку на Pixilang, такой небольшой DSL, чисто для работы со звуком.
И вот я сделал генератор пилы произвольной частоты, очень простой, без antialiasing'а.
Сделал его путём заполнения буфера в цикле.

В связи с этим вопрос: это хороший вариант, или я что-то упустил и есть лучше, без использования итераций?

И вопрос по синтаксису:
обнаружил, что в функциях (а главное в анонимных функциях) работают переменные $0, $1, $2, ...
Какие ещё есть подобные синтаксические конструкции?
В документации (https://code.google.com/p/pixilang/wiki ... 3Manual_RU) я этого не нашёл, может есть более актуальная документация?

P.S. Про переменные $0, $1 нашёл в форуме, но может ещё что-то есть?

Re: Генерация пилы

Posted: Tue Aug 04, 2015 12:38 am
by NightRadio
Привет!
В связи с этим вопрос: это хороший вариант, или я что-то упустил и есть лучше, без использования итераций?
Есть еще два способа генерации любых форм колебаний:
  • sampler;
  • wavetable_generator.
Второй - самый быстрый.
Оба не позволяют генерировать пилу с достаточно высоким качеством. Но вполне годятся для многих приложений.
Какие ещё есть подобные синтаксические конструкции?
По умолчанию нулевой контейнер - это экран. Значит, обращаться к пикселям экрана можно, например, так: 0[ x, y ] = color
Но это не то чтобы скрытая возможность. Тут как раз все логично.
Я надеюсь, что каких-то секретных конструкций в языке по минимуму :)

Re: Генерация пилы

Posted: Tue Aug 04, 2015 10:28 pm
by fairplay
Ага, спасибо.

Я смотрел на wavetable_generator, но мне не хватает интуиции понять значение всех параметров, был бы благодарен за пример использования.

P.S. Хотя, я кажется разобрался через исходники, попробую сделать.

Re: Генерация пилы

Posted: Sat Feb 16, 2019 9:30 am
by fairplay
Через 3.5 года я всё таки взываю о помощи по функции wavetable_generator. Для чего нужен контейнер с амплитудой? Для огибающей? А с дельтами амплитуды? А с позицией -- он автоматически заполняется для вычисления фазы? Может быть есть хоть где-то пример использования?

Re: Генерация пилы / нужна помощь с wavetable_generator

Posted: Mon Feb 18, 2019 9:19 am
by NightRadio
До примеров руки так и не дошли, к сожалению.
Контейнер с амплитудами описывает текущую громкость каждого из генераторов.
Амплитуды будут после каждого отсчета увеличиваться на значение из amp_delta.
amp_delta показывает, насколько быстро увеличивать или уменьшать громкость генератора. Это нужно для огибающих. Если огибающих нет, то amp_delta будет нулевой.
Такая же ситуация и с pos / pos_delta: pos постоянно увеличивается на значение из pos_delta.
pos_delta для каждого из генераторов задает скорость воспроизведения. Вычислить ее можно, например, по такой формуле:
pos_delta = 32768 / частота_дискретизации * частота_ноты * 65536