Summary
- 基于例子学习 p5.sound 库的几类对象和方法
- 开始 Bass clef 低音谱号识谱练习(工具 Music Tutor App)
- Music Theory 101 的 Module 3 练习
- 开始使用 workflowy 写学习 log (工具 WorkFlowy Panel)
- 知识大融通 ch11
p5.sound 对象和方法学习
fft
FFT (Fast Fourier Transform 快速傅里叶变换) 是一种分离声音频率波形的分析算法。p5 里面的 FFP 对象可以分析声音的频率,返回两种数组:
FFT.waveform()
: 计算时间振幅。数组内每一个值代表取样时间内的波形振幅。返回值在 -1 到 1 之间。可用来绘制声音的波形。FFT.analyze()
: 计算频率振幅。数组内每一个值代表频谱(frequency spectrum, i.e. pitches)振幅。用getEnergy()
方法可以获取某个范围内的频率。
17.11: Sound Visualization: Frequency Analysis with FFT - p5.js Sound Tutorial
noise
Noise 对象是生成随机 buffer 的振荡器(oscillator)。
1 | new p5.Noise(type) //String: Type of noise can be 'white' (default), 'brown' or 'pink'. |
delay
Delay 生成回声效果. 参数包括 delay time, feedback, filter, and type.
env
Envelopes (中文术语是什么?)是预先定义时间内的振幅分布,常用于控制输出音量和 a series of fades referred to as Attack, Decay, Sustain and Release (ADSR).
SawOsc/TriOsc
创建 SawTooth Wave Oscillator / Triangle Wave Oscillator (相当于 new p5.Oscillator('sawtooth')
/ p5.Oscillator('triangle')
或者创建 p5.Oscillator
然后调用 setType('sawtooth')
/ setType('triangle')
)
distortion
生成 Waveshaper Node,是 p5.Effect 的子类。
1 | new p5.Distortion([amount=0.25],[oversample='none']) |
Ref
- p5.js | FFT
- p5.js | Noise
- p5.js | Delay
- p5.js | Env
- p5.js | Oscillator
- p5.js | SawOsc
- p5.js | TriOsc
- p5.js | Distortion
Bass clef 识谱练习
经过一周练习,Treble clef 高音谱号的识谱练习准确率可达 95% 以上。熟练掌握 Treble clef 后,Bass clef 整体下移三度,另外加上快捷位置记忆:
- 下加二线:C
- 0-3间:FACE 🙂
- 5线:A
- 上加一线:C
继续用 Music Tutor 练习,吸取 Treble clef 的经验,开始时的练习可以设置为:
- 练习时长 1 分钟(便于总结规律)
- 识别区间B1-E4 (强化记忆中间区域的 notes)
- 去掉升降号识别
- 熟悉自己的 base notes 以后,增加练习时长,并且加入升降号识别
Music Theory 101 的 Module 3 练习
Juilliard 的这门课 Music Theory 101 的练习都很走心。今天做到 Module 3 练习,主要针对音符/休止符和拍子。
为了在电脑上写作业,找了一款音乐符号的字体:MusiSync font - FontSpace
Meter 的遗留问题:如何确定以什么音符为一拍?
明日 To do
- p5.sound 的例子
- Treble + Bass clef 组合练习
- Music Theory 101 Module 4
- 知识大融通 ch12