PWM
PWMはPulse Width Modulation パルス幅変調の略で、パルスの幅で情報を送る手段です。下図で、VHとx+yを一定にしパルスの幅xを変化させます。
例えば、LEDを高速にスイッチングさせてこのようにパルス幅を変化させるとLEDの印加電圧を変えずに明るさを変化させることができます。その強さは積分された平均値VAVとなります。VL=0とすると、x+y、VHは定数なので、VAVはxに比例することが分かります。
このような考え方で、正弦波の一周期を12分割してPWMを構成したのが下図になります。

波形の振幅を変える
正弦波はPWMで作ることができました。しかし、振幅は一定なので物足りません。ここで、正弦波を二つ用い、片方の位相をずらして加算することを考えます。これを計算したグラフが以下のようになります。

φ=90° |

φ=120° |

φ=150° |

φ=160° |

φ=170° |

φ=180° |
120度の時に同じ大きさで、だんだんと小さくなり、180度でゼロになることが分かります。
このようにすると、振幅のコントロールも可能になります。
楽器らしい音にする
一般的に音は、波形だけではなくそのエンベロープが重要です。太鼓などはバチが当たってから音は長続きしません。また、オルガンは鍵盤を押していれば鳴りっぱなしです。このように楽器によって、音の時間的変化が重要です。通常以下のように分類されています。

- Attack time: 音が始まってから最大振幅になるまでの時間
- Decay time: 最大振幅からSustain levelまでになるまでの時間
- Sustain time: 同じ振幅が続く時間
- Release time: Sustainが終了し音が消えるまでの時間
ここでは、主に打楽器に関係するdecay timeのみを考えることにします。基本的には単純に減衰するようにします。