创作8bit音乐的简易教程 转(第1/3页)
为什么写这篇文章
忙碌了一整年,大家都在补充各种工作上需要用到的知识,却有些忽略了技术的娱乐性。
最近在听机核网的一期电台:我们用8bit音乐原理告诉你,FC的游戏音乐是如何制作的,原理的部分感觉和WebAudio有很多相似之处,遂撰写这篇文章,希望让没有任何音乐基础的同学,看完之后也能写一段自己的8bit音乐。
因为是实践篇,这篇文章可能涉及很多音乐知识,我会尽可能把需要用到的知识用最简单的方法让大家快速理解,也会附上相关的学习资料。
文章中涉及的代码不多,如果只对技术感兴趣的小伙伴可以就此止步了。具体技术的原理部分,年后我会另开篇写,这里先挖个坑,以下是正文。
8bit音乐介绍
什么是8bit音乐
8bit音乐也叫芯片音乐。
当时的游戏主机(例如FC)内存很小,无法存储高分辨率的PCM录音。所以游戏音乐需要实时合成,必须将基本的声音合成引擎植入硬件当中,在游戏芯片中存储音乐编码(相当于乐谱),芯片音乐由此产生,并逐渐成为一种风格。
8bit音乐如何创作
我们主要用FC的声音系统来讲解。在FC的声音系统中,不存在乐器的概念,只是提供不同的波形供编曲者使用,作曲的时候分别调用不同的波形,形成不同的声音效果。
FC提供了以下5个声道:
脉冲方波(2声道)
脉冲方波占两个声道,因为有不同的比例的波形,可以产生不同音调的声音,一般用来模拟钢琴、吉他等乐器。
三角波(1声道)
三角波,顾名思义,就是波峰波谷全为三角形,一般用来模拟贝司等乐器。
噪音(1声道)
噪音占一声道,在FC游戏的音乐和音效中是最常见的,爆炸声、脚步声、碰撞声以及音乐的节奏点等等都是用噪音制作的。
比起制造音效,更重要的作用的打节奏。因为噪音比起方波三角波更有辨识度,能够营造比较好的节奏感,可以用来模拟架子鼓。
采样(1声道)
最后还有一个声道是采样声道,由于采样花样比较多,相对比较复杂,所以在这篇文章先不讲。
对一个音的修饰
最后,FC支持对一个音符的修饰,开发者可以通过音量、波封(ADSR)、颤音等等,来修饰一个音符。
WebAudio简介
WebAudio支持正弦、方波、三角波和锯齿波。你可以听到不同的波形产生不同的声音。
然而,你可能已经注意到,FC提供的声道中是没有正弦波的。因为正弦波是在游戏主机发布后推出的,它的音调要温和得多,在这次实践中我们也不会应用。
参考了这个demo,决定使用Tone.js库来进行开发,主要是两个原因:
Tone.js接受的是音高,而不是要求它播放440Hz频率的声音,我们可以简单地演奏A4音,而不是440Hz音。
对ADSR中的Attack和Release做了封装,方便开发。关于ADSR有兴趣的可以参考波封,简单来说就是调节声音的效果。
正式实战
先放demo:
Landvetter/audio-test
我们编辑一首8bit的音乐,主要关心的是单声道乐谱、和声和声音效果三个部分,下面分别进行讲解。
第一步:乐
(本章未完,请翻页)