音楽班紹介Ⅳ~回路と音楽「PWM」~


こんにちは(´・ω・`)

なんか久しぶりの投稿でかつ音楽班としての投稿となり、へんな気分です。

実は僕は中高の部活でずっと電子回路を相手に遊んでました。

じゃ、なんでKCSって感じですが、その流れでどうしても回路がらみな考えが好きなんですよ。

で、今回は『回路と音楽』というお題ですこし書かせていただきたいと思います。

想像なんですが、みなさんが音楽について考えるときって、きっとまず回路とかのことについては考えないですよね。でも、実際にはオーケストラとかレコードで音楽を聞くときでもない限りは回路がそこに静々とそこに存在して、もぉ必死に頑張ってくれてるんですね。(´ω`)

この音楽班紹介Ⅱでもあったアンプとかあそこら辺の話はもろに回路ですね。スピーカとかも回路っちゃ回路ですがここらへんは機会的な要素が強いかも・・・。

音楽と回路の関係を話す上で一番重要なことは何なのか。さっき風呂入って5分くらい考えて見たんですが。とりあえずこれですかね。

D/A変換(ディジタルアナログ変換)

音楽機器でアンプあたりにお金かけようとし始めた人なんかはDACという字とか見覚えないですか。コレ、Digital to Analog Converter(ディジタルアナログ変換器)の略なんですねぇ、やった。

じゃ、これなんだと。

要はですね。普通、音楽データって結局はの集まりディジタルデータなんですね。けど、実際の音楽は空気の音圧の変化の波形、アナログなんですね。

例を見てみましょう。

もしD/A変換がなかったらどうなっていたでしょうか。

パソコンのピンで出力することのできる電圧は通常そのCPUの電源電圧マイコンだと5Vとか3.3Vとか)くらいとGNDつまりは0V。その2種しかありません。この電圧だけで表せる波形は、そう矩形波しかありません。

ディジタルだけで音楽

や~、いいですよ矩形波。もう最近言われなくなったピコピコっていうのはコイツが原因の一端ですね。パソコン的に超扱いやすい。だって自前でなんの回路の力も借りずに表現できますから。僕なんかが音作るときは主に矩形波くんに大活躍して頂きます。

まぁ、それはさておき。でも、自分の聞ける音楽が矩形波だけじゃもの足りないっていうか多様性もクソもありませんよね。じゃ、何がしたいのかって言うと例えば「あ」って言ってみた

こんな波形ですかね。さっきの矩形波に比べるとだいぶ複雑。ちなみに僕が「あ」って言っただけです。

こんな波形を表現するにはもうお分かりでしょうが、パソコンのCPUちゃんのピン、通称お御足では無理な訳ですね。

じゃ、どうすんのよと。

ここでD/A変換です。

ここでは主な方法として1つ紹介しますね。

PWM(Pulse Width Modulation)

なんか難しそ~うな単語ですが、多分D/A変換って言ったらコレってレベルの代物。特徴としてCPUのピン一個でアナログを表現できます。

要はこのPWMさっき説明した矩形波の一種にあたると思います。ただ、矩形波の形を少し工夫したんですね。

PWMは日本語でパルス幅変調というもので、表したいアナログの値0.2とか0.7とか1と0ともつかないものを「幅」というもので表そうとしているということ。

パッととりあえず図を示すと以下のような感じになります。pwm

上が表したい波だとして、下のような矩形波を出力します。少し見づらいかもなので拡大したものが次。pwm2

拡大してみるとちゃんと矩形波だってわかるでしょ。ただ形がちょっと変です。どう変かというと実はこの矩形波電源電圧)とGND)の時間が等しくありません。

なんとな~くでいいので、上のグラフで値が大きいと下で1にいる割合が多くて、小さいと0にいる割合が多いのがわかります?

普通、矩形波というと例えば周期10Hzとしましょう。すると波長は100msとなっての時間が50ms、の時間が50msと同じだけの時間出力されます。しかし、PWMで使うそれは異なります。PWMでは次のように1を出力する時間T1を決めます。

\begin{aligned}
T_1 = value * T_{pwm}
\end{aligned}
\begin{aligned}
ただし、T_{pwm}はpwm波形一個分の時間、valueは0~1までの表したい値
\end{aligned}

ここで、また例を考えてみたいと思います。

電源電圧を1V、Tpwmを10msとして考えましょう。一つのピンから0.2Vの電圧を出力したいとします。このときこれをPWMで表すとどうなるか上の式を使って考えるとT1は0.2*10msで2msとわかりますね。つまり、1Vを2ms、0Vを8ms流すような波形を出力し続ければいいわけです。pwm0,2

こんな感じ。これで0.2Vを出力していることと等価になります。

これ、どゆことかと言うとPWMをコンデンサなどの素子で平滑化、有り体に言えば平均みたいなもんを取れば0.2になってますよね。そうなるように定義してるので当たり前なんですが・・・。

今回の例では0.2Vと一つのアナログの値でしたがコレを次は0.22、その次は0.25・・・みたいに次々とやって行けばpwmこれが出来上がるわけです。ただお察しの通りPWM波形一個分の時間がそのまま分解能となってしまうのが注意です。

これまた例を上げると。Tpwmを10msとしたらもちろん上のSIN波も10msごとに区切った飛び飛びの値しか表現されません。

さらに言うと、もし0~1の値を0.01単位で表したいとするとTpwmが10msなら0.1ms単位での操作が要求されます。0.1msくらいならパソコン的には超余裕ですが、これがTpwmがもっと短くなり、0.01より細かい単位で値を表したいとするとその細かさに比例して要求される操作の単位時間が短くなります。まぁ、最近のパソコンならこういう話も滅多なことがない限り気にかける必要はないですけどね。ただし、マイコンなどのより低級な処理媒体の場合ココらへんは要チェックとなります。

で、どうでしょう。みなさんのD/A変換の理解への一助になっていれば幸いです。結局、信号処理的な話で「あれ、音楽関係あんのかなぁ」なんて感じですけど、今度音楽を聞くときにこのD/A変換のことを思い出してください。興奮できます。

 

Posted on