Продукт · браузер
Tone Setter
Держит гармонию, пока вы играете поверх неё. Набираете аккорд — до семи тонов сразу, — задаёте темп и длину, и он звучит сам, столько, сколько нужно.
Что это
Задача, из которой прибор вырос, простая: чтобы подобрать рифф, под ним должно что-то звучать. Обычно это либо записанный луп, который на ходу не поменять, либо второй человек. Tone Setter занимает это место: он держит выбранную гармонию сколько угодно долго и меняет её по команде, а не по записи.
Это не библиотека сэмплов и не аранжировщик. Он не пишет за вас партию и ничего не предлагает — он звучит ровно тем, что набрано, и не останавливается. Всё остальное играете сами.
Считается всё в браузере, на Web Audio через Tone.js. Сервера нет, звук никуда не уходит, записать он тоже ничего не может. Интерфейс собран на React и TypeScript.
Прибор живёт страницей внутри набора AudioViz — прикладных браузерных инструментов, которые делаются как пульты, а не как веб-страницы. Ставить нечего, сборок под настольную систему и телефон нет.
Как набирается гармония
Единица работы — секция: набор одновременно звучащих тонов, от одного до семи, у каждого своя громкость. Гармония набирается двумя способами, и выбор между ними решает, что произойдёт, когда понадобится сдвинуть всё целиком.
- Абсолютныйкаждый тон — самостоятельная нота с номером октавы. Полный контроль, но переезд в другую тональность приходится набирать заново
- Относительныйпервый тон — основание, остальные заданы интервалом от него и сдвигом на октавы. Двигаете основание — гармония едет за ним, сохраняя устройство
Интервалов тринадцать, от унисона до октавы. Десять заготовок аккордов — Power, Major, Minor, Sus2, Sus4, Dim, Aug, Dom7, Maj7, Min7 — расставляют интервалы одним нажатием и сами переводят секцию в относительный режим. Транспонирование сдвигает всё звучащее до четырёх октав в любую сторону, не трогая набранное.
Тембры и секвенсор
Тембров шесть. Четыре осциллятора — синус, треугольник, квадрат, пила — считаются на месте и меняют высоту мгновенно. Два сэмплерных, струнные и медь, собраны из записей скрипки и трубы и подгружаются из открытого набора tonejs-instruments в фоне; пока сэмплы не пришли, тон звучит синусом. Сэмплерный голос заводится свой на каждый тон: один общий сэмплер не умеет держать разные высоты одновременно и стягивает весь аккорд в одну ноту.
Секций до четырёх. У каждой свои тоны, своя гармония, свой тембр и своя длина в щелчках — от одного до тридцати двух, по умолчанию восемь. На воспроизведении секции идут по кругу, так что заготовка из двух-трёх аккордов крутится сама и под неё можно играть, не трогая экран. Темп от 40 до 240 ударов в минуту, по умолчанию 120.
Метроном отдельный: акцент на первой доле — 1760 герц, остальные доли — 1100 герц на шесть децибел тише, размер 4/4, громкость своя. По умолчанию выключен.
Почему это не щёлкает
Половина работы в таком приборе — не выдать звук, а не испортить его на стыке.
Смена тембра или секции идёт кроссфейдом в пятнадцать миллисекунд: старый источник гаснет на своём отдельном узле громкости, новый сразу стартует на общем. Без этого каждое переключение давало бы щелчок, а через паузу — провал громкости.
Активный тон не перезапускается, если высота не изменилась. Перезапуск звучащего осциллятора слышен как щелчок, поэтому перед каждым действием проверяется, изменилось ли вообще что-нибудь.
Громкость с линейной шкалы от нуля до ста переводится в децибелы. Web Audio работает по логарифмической шкале, и линейное значение, поданное напрямую, делает ползунок неравномерным на слух: половина хода уходит впустую.
На выходе стоит лимитер на минус три децибела — семь тонов, сложенных в унисон, уходят в перегруз быстрее, чем кажется. С того же выхода снимается волна на 2048 отсчётов и рисуется на холсте: видно, что звучит и как складываются фазы.
Как открыть
Нужен любой современный браузер — прибор опирается на Web Audio, отдельных требований к видеокарте у него нет.
Звук поднимается только по нажатию: браузеры не дают запустить аудио без действия человека, и звуковой контекст открывается на первом нажатии кнопки воспроизведения. Тишина до него — не поломка.
Осцилляторы работают без сети. Струнные и медь тянут сэмплы из внешнего набора, поэтому без сети они молчат и подменяются синусом.