是否可以在Processing.JS中生成正弦音?

时间:2018-10-15 09:38:42

标签: javascript processing processing.js

我是一名业余音乐家,我向几乎没有甚至没有音乐教育的小学生讲授音乐基础知识。

我已将a small app in Processing.JS编码成一个圆圈,显示了西洋音阶的12种音符(A,A#,B,C,C#,D,D#,E,F,F#,G,G#) ,并突出显示它们之间的关系,从而构成音阶/音程。

我希望能够触摸特定的音符名称并生成与该音符相关的正弦音(最明显的音调是A = ...,220Hz,440Hz,880Hz等)

因此,要在Processing.JS中对其进行分解,是否有可能在检测到鼠标事件时生成所需频率的正弦音?如果有人可以帮助我解决这个问题,我可以解决其余的问题。

明确一点:最好的情况是,我不太擅长Javascript,并且对中等处理也很适中。我知道Javascript可以做这样的事情,但我不知道如何在此Web应用程序中集成这两种语言。

1 个答案:

答案 0 :(得分:1)

就像您暗示的那样,您将必须使用JavaScript进行此操作。乔治(George)的评论颇受关注:您应该首先阅读this page

但是基本上要记住的是,Processing.js会转换为JavaScript,因此您可以直接从Processing.js调用JavaScript代码。

我将首先搜索类似“ JavaScript正弦音”之类的内容以获得大量结果。 Tone.js似乎可以满足您的需求,但是我敢肯定还有很多其他图书馆。

要使用Tone.js库,您需要首先将其导入HTML中,确切地说就是您已经导入了Processing.js库的方式:

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

然后,您可以在Processing.js代码中使用Tone.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。

无耻的自我宣传:here是有关Processing.js的教程,here是有关P5.js的一些教程。