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

Pixilang по русски
Post Reply
fairplay
Posts: 10
Joined: Thu Jul 30, 2015 8:12 pm

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

Post by fairplay »

Привет,
я пишу библиотечку на Pixilang, такой небольшой DSL, чисто для работы со звуком.
И вот я сделал генератор пилы произвольной частоты, очень простой, без antialiasing'а.
Сделал его путём заполнения буфера в цикле.

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

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

P.S. Про переменные $0, $1 нашёл в форуме, но может ещё что-то есть?
Last edited by fairplay on Sun Feb 17, 2019 11:24 am, edited 1 time in total.
User avatar
NightRadio
Site Admin
Posts: 3941
Joined: Fri Jan 23, 2004 12:28 am
Location: Ekaterinburg. Russia
Contact:

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

Post by NightRadio »

Привет!
В связи с этим вопрос: это хороший вариант, или я что-то упустил и есть лучше, без использования итераций?
Есть еще два способа генерации любых форм колебаний:
  • sampler;
  • wavetable_generator.
Второй - самый быстрый.
Оба не позволяют генерировать пилу с достаточно высоким качеством. Но вполне годятся для многих приложений.
Какие ещё есть подобные синтаксические конструкции?
По умолчанию нулевой контейнер - это экран. Значит, обращаться к пикселям экрана можно, например, так: 0[ x, y ] = color
Но это не то чтобы скрытая возможность. Тут как раз все логично.
Я надеюсь, что каких-то секретных конструкций в языке по минимуму :)
fairplay
Posts: 10
Joined: Thu Jul 30, 2015 8:12 pm

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

Post by fairplay »

Ага, спасибо.

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

P.S. Хотя, я кажется разобрался через исходники, попробую сделать.
fairplay
Posts: 10
Joined: Thu Jul 30, 2015 8:12 pm

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

Post by fairplay »

Через 3.5 года я всё таки взываю о помощи по функции wavetable_generator. Для чего нужен контейнер с амплитудой? Для огибающей? А с дельтами амплитуды? А с позицией -- он автоматически заполняется для вычисления фазы? Может быть есть хоть где-то пример использования?
User avatar
NightRadio
Site Admin
Posts: 3941
Joined: Fri Jan 23, 2004 12:28 am
Location: Ekaterinburg. Russia
Contact:

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

Post by NightRadio »

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