设置

关灯

创作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的音乐,主要关心的是单声道乐谱、和声和声音效果三个部分,下面分别进行讲解。

    第一步:乐
    (本章未完,请翻页)