Можно ли генерировать синусоидальные сигналы в Processing.JS?

1

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

Я закодировал небольшое приложение в Processing.JS, которое показывает 12 музыкальных нот западного масштаба (A, A #, B, C, С#, D, D #, E, F, F #, G, G #) в круге, и подчеркивает отношения между ними, из которых строятся музыкальные шкалы/интервалы.

Я хочу иметь возможность касаться определенного имени заметки и генерировать синус-тон, связанный с этой записью (очень очевидный из них: A =..., 220 Гц, 440 Гц, 880 Гц,...)

Итак, чтобы разбить его, в Processing.JS, можно ли генерировать синус-тон нужной частоты при обнаружении события мыши? Если кто-то может помочь мне разобраться в этом, я смогу выяснить остальное.

Чтобы быть ясным: я не слишком хорошо разбираюсь в Javascript, и в лучшем случае я умер в обработке. Я знаю, что Javascript может делать такие вещи, но я не знаю, как интегрировать два языка в этом webapp.

  • 0
    Я думаю, вы могли бы использовать Web Audio API ... Или что-то вроде Tone.js
  • 0
    @EJTH не могли бы вы сказать мне, как? Я не знаю, как интегрировать Javascript и Processing.JS, так как у меня не было большого опыта работы с Javascript.
Показать ещё 2 комментария
Теги:
processing
processing.js

1 ответ

1
Лучший ответ

Как вы намекали, вам придется сделать это в JavaScript. Джордж замечает: вы должны начать с чтения этой страницы.

Но в основном, нужно иметь в виду, что Processing.js преобразуется в JavaScript, поэтому вы можете вызвать код JavaScript непосредственно из Processing.js.

Я бы начал с googling что-то вроде "синус-тона JavaScript" за тонну результатов. Tone.js, похоже, является библиотекой, которая делает то, что вы хотите, но я уверен, что есть много других.

Чтобы использовать библиотеку Tone.js, вам нужно сначала импортировать ее в свой HTML, как именно вы уже импортируете библиотеку Processing.js:

<script src="https://cdnjs.cloudflare.com/ajax/libs/tone/13.3.10/Tone.js"></script>

Затем вы можете использовать Tone.js в коде Processing.js:

var synth ;

void setup(){
  //create a synth and connect it to the master output (your speakers)
  synth = new Tone.Synth().toMaster();
}

void mousePressed(){
  //play a middle 'C' for the duration of an 8th note
  synth.triggerAttackRelease('C4', '8n')
}

void draw(){}

Обратите внимание, что Processing.js оставляет код JavaScript только при его преобразовании, поэтому ваш окончательный результат - всего лишь куча кода JavaScript. Вот почему вы можете смешать код JavaScript и код Processing.js следующим образом.

Но, как сказал Джордж, вам, вероятно, стоит подумать о переходе на P5.js, потому что Processing.js больше не поддерживается.

Бесстыдная самореклама: вот учебник по Processing.js, и вот несколько уроков на P5.js.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню