音楽とコンピュータ。なぜパソコンにイラつくのか。

 何らかのコンピュータが無くては、昨今の音楽制作は成り立ちません。しかし、本格的にコンピュータを使うとなると、様々な障害にぶつかります。それを乗り越えるには、コンピュータの根本的な仕組みを理解しなければならないのではないかと考えています。

 といっても、現代のコンピュータの全体を把握するのは、かなり困難です。例えばハード機材を駆使して、パソコン等をなるべく使わないようにして音楽をつくろう!という動きは一部で強まっていますが、それはなぜなのか?と言えば単純に、コンピュータを使いたくないからです。分かりたくもない!ですよね?

コンピュータのことが分からなくても、パソコン、スマフォは使えるように出来てる。しかし、理解してないからこそイライラする。

 本記事では、出来る限り平易な言葉を用いて、コンピュータとは一体どんな存在なのか?ということをコンピュータと音楽を巡る状況を踏まえた上で解説していきます。

単なる道具か支配者か?

 現代の音楽制作においてはコンピュータというものは、避けることができないものになっています。よっぽどアナログ機材への強いこだわりを持つ人達を除けば、現在のほとんどの音楽はコンピュータを中心とした制作環境において作られている、と言って過言ではないです。

 そういう状況においては、パソコンそのものの仕組みをある程度は理解しておかなければいけないんじゃないかと個人的には考えています。それはなぜか?理解しなければ、コンピュータは私たちにとって、ブラックボックスだからです。つまりよくわからないけど、使うことはできるというモノです。しかし、よくわからないからこそ、イライラするし、何かトラブルが起きたら行き場のない怒りが爆発します。

ブラックボックスな存在

 なぜブラックボックスなのか?といえば、それはもちろん企業秘密である部分もありますが、ユーザーが手軽にコンピュータを使えるために情報隠蔽(いい意味で)がなされているからです。もしブラックボックス化がなされていないと、コンピュータを使うのに専門的な知識、プログラミング能力が必要になってしまいます。それはそれで問題ですし、コンピュータの知識がない普通の人でも使えるように改良されてきたのが、コンピュータの歴史そのものになります。

 しかし、その反面なにか本格的に作業していこうとすると、その見えない部分に振り回されてしまうことになるわけです。それなりの知識が要求されてきます。しかし、音楽とは別問題なわけで、面倒ですよね?

 確かに、それなりのPC ,MACを持ってさえいれば今や、それだけでいろいろな音楽が造れるし、いろいろなことが出来ます。しかし、ブラックボックスなわけですので、どこかその動作に釈然としない、モヤモヤが付きまといます。使えてるなら、それでいいじゃん!という考え方も、ひとつの正解ではあります。ただ何か疑問に思っても『それはそういうもんだから』というおなじみのフレーズに、私たちは振り回されてしまうわけです。

コンピュータ使わないのも一つの手

 これに対抗する手段として、この記事で書いているように、全ての人がプログラミング等を学ぶわけにはいかないでしょう。というわけで、より直感的な操作の出来る、機能が限定あるいは厳選された、専用のハード機材、ビートマシンやハードシンセですね、を使っていこう!というミュージシャンが出てくるわけです。

(音楽ソフトは、大別すれば録音やオーディオ編集、MIDIなどを取り扱うDAWや、シンセサイザやドラム音源、生楽器音源などの音源ソフトがあります。なんでもありますし、なんでもできます。出来すぎるくらいです。なので何を使えばいいのか、と多くの人は混乱するわけです。どのソフトを使うべきか?という問題は今回の問題とは別の大きな問題ですが、ここでは省略します。)

プログラミングをやってみて

 自分としては、そのコンピュータの仕組みだとかデジタルオーディオやらに、具体的な興味があったので調べていたのですが、その中でプログラミングを独学で学ぶ機会に恵まれました。

正直、とにかく最初は苦痛でした。

 けれども、実際にプログラミングの勉強を通して、パソコンの仕組みやコンピュータの動かし方に触れてますと、 ソフトを作ることの大変さがよくわかりますし、得られる事はたくさんあったわけです。

 10代の頃から、パソコンに触り始め、今ではスマフォというかたちで、小型コンピュータを持ち歩いているわけで、もうこれ無しには自分を含めた多くの人間が現代生活を送れないという状況です。しかし、その中でもコンピュータの動作(あるいはエラーなど)に対して、これはどういうことなんだろう?という気持ちはありました。それでも便利なものとして使えてきたのは、面倒な部分が隠されていたからですが。

 しかし、そういうことだったのか!という清清しい気持ちになれました。そういう意味で、プログラミング学習を通して、その仕組みを学んだ意味はかなりありました。しかし、それがわかったからといって、作る曲が良くなるとか、サウンドが良くなるとかっていうことでは無いんですけどね。興味があるなら、ぜひともプログラミングを学ぶというのも、面白いと思います。

コンピュータの実態

 では、コンピュータは一体どんなものか?という本質的な部分について、書いていきます。まず、言っておきたいことは、パソコンというものは一般の人が思っている以上に、案外適当に動いているものだということです。適当というか、愚直というべきでしょうか。昔はエラーが起きたりするのが当たり前で、かなり繊細なものでしたね。(アラサー意見)今でも、おかしくなるときはなりますが。

 それが、ここ20数年で急速に性能が上がりました。現在ではスマートフォンと言う形で、個人が日常的に肌身離さず持ち歩き、秒単位で常時ネットに接続していると言う、よく考えれば、近未来的な状況になっています。

 そうした状況では、コンピュータに詳しくない人からすれば、コンピュータは万能なものであり、絶対的なものだと考えてしまうのが、普通だと思います。実際、なんでもできますからね。しかし、コンピュータというのは、二進法という0と1だけで動くものであり、人間が思っている以上に、その実態は単純なもので、しかし恐ろしい量の計算を一瞬でやってしまうものなのです。

 近年AIの進歩は目覚しいものがあり、話題になることも多いです。 しかし現段階では、コンピュータは自分で考える力という意味での知性を持つには、まだ至っていません。 なので1から100いや1から1000位まで人間が指示しなければなりません。(この苦労を減らすことが機械学習の目的だそうです。)

 つまり、それがまさしくプログラミングということになるのですが、 そう考えると、プログラマの思考というものが、そこにかなり反映されるのです。どういう動作をどのように指示するのか?ということですね。同じことをやるにしても、プロセスが違えば、結果が変わるということもあるでしょう。

 所詮0と1といっても、いうほど白黒はっきりしたものでは無いようなのです。 特に音楽なんて個人によって何が良いかなんてかなり違いますし。 音の処理の仕方に対して、どういう方法をとるか?によって、結果としてのサウンドに違いが出るのは、ある意味当然のことです。

 これが様々なソフトごとの音の違いになります。また音楽の場合は、アナログ機材をモデリングしたソフトが多用されています。これはより複雑な計算、処理が内部で行われていることになりますが、アナログ機材における各々の反応をどういう計算処理で、またどこまで再現するかによって、音は変わってきます。モデルにする実機の状態による影響もあります。

 だから、デジタルの世界は0と1の世界ですが、 かといってその動作、結果が単純明確なものとは限らないということは、頭の片隅においておくべきです。

コンピュータも間違える?

 やや専門的な話になるのですが、 コンピュータは0と1によって数字を表現する二進法で動いてます。ここについては、必要以上に怖がる必要はなくて、私たちが使っている数字が、コンピュータの中では単に0と1の生み合わせに置き換わる、見た目が変わるというだけです。

 1,2,3,4…などの整数についての単純な計算においては、コンピュータが間違える余地はないんのですが、小数点以下を含めた“実数” (小数点以下を含めたより細かい数字)については、その構造上、正確に表すことができなかったり、計算できなかったりします。(12.45や32.7844といったより細かい数字、滑らかなグラフィック、オーディオ処理には不可欠なデータ・タイプ。)

 言ってしまえば二進法においては、 実は正確に『0.1』という数字を正確に表現することができません。 二進法で動くコンピュータが、実数を表現するための代替的な手段として『浮動小数点数方式』というものを使いますが、構造上誤差があります。あくまで擬似的な実数になります。そして、結局パソコンの処理能力は有限なものなので、かつリアルタイムで処理するとあらば、その演算能力の都合上、どこかで端数を切り捨てなければいけないのです。(例えば1.33333333…といった割り切れない数字などを1.33とするように)

 つまり、コンピュータ上の“実数”の計算結果は、あくまで近似値であり、必ず誤差というものが発生するのです。信じがたい話ではありますが・・・。

 コンピュータの計算能力は、限界があるのでどこかで区切らないといけません。そして細かい計算によって、発生した端数は切り捨てないといけません。というわけで、それによって生まれる誤差をいかに小さくするのか?という問題が常にあるわけです。そこまで細かい計算して、人間がその違いを聞き取れることができるのか?という問題もまた別にありますが、とりあえず、それは置いておいておきます。(個人的には聞き取れると思います。)

 この問題を克服できるプログラムを組む、誤差を出来る限り小さくする、ということは至難の業と思われます。だからこそ、リアルタイムで音を処理するようなDAWを作るのは大変なわけです。

コンピュータによる、曖昧な計算

 では、具体的なプログラムで、如何にコンピュータが適当な計算をしているか?ということを見てみたいと思います。といっても『0.01』100回足すだけのプログラムです。コードを理解する必要はないので、このことだけわかっていればOKです。ただし、二通りのやり方で行います。

 float(フロート)decimal(デシマル)という二つのデータ・タイプを使います。データタイプはとりあえずデータのフォーマットと理解すればいいです。CDの16bit44.1kHzかハイレゾ音源の24bit96kHzか、という感じです。ちなみに、DAWの解像度の設定にある、32bit floatのfloatはこれです。先ほど出た『浮動小数点数』であり、小数点以下の数字を表すのにfloatを使ってますよ、ということを意味します。

 floatとは、二進法の浮動小数点方式による擬似的な実数です。DAWはfloatによる擬似実数を使い、デジタルオーディオデータを計算、処理していることになります。decimalは、10進法によるもので小数点以下の計算に誤差が出ません。なので金利計算などで誤差があってはならない銀行などのシステムで使われます。

float calculation Program

 ではプログラムを見てみます。理解する必要はないです。floatというフォーマット上の0.01decimalというフォーマット上の0.01をそれぞれ100回足してその合計を画面に表示するというだけのものです。

答えはもちろん『1』のはずです。ではプログラムを起動させます。

float vs decimal

何ということでしょう!

 コンピュータは案外適当ということがお分かりいただけたでしょうか?コンピュータは有限のものであり、処理能力には限界があります。なので必ず誤差は生まれる、ということです。

 そもそも誤差は許容できるの?ということについては、科学技術計算的には、それでよいのだそうです。許される誤差の範囲内ならば、近似値として、それを答えとして見なす、ということです。しかし、ごく小さな誤差も積み重なれば影響が大きくなるので、そのための対策が必要になるわけです。デジタルは0と1の世界であり、そのため白黒はっきりつく世界のようで、必ずしもそういうわけではない、ということは頭に入れておくべきかもしれません。

途方もない数式の連なり

 ヨーロッパでは広く使われている、samplitudeというドイツのmagix社によるDAWがありますが、このソフトはドイツの数学科大学院を出たバリバリの数学者が、内部で適切な計算処理が行われるようにプログラミングしているそうです。 完全文系の自分からすれば途方も無い、想像も出来ないような遠い世界ではありますけども、プログラミングを多少なりとも学んだ今では、その重要性というもののがわかってきました。

 とにかく言える事は、コンピュータを信用しすぎないことが大事だと思います。バグがまったくないプログラムというものは存在しませんし、音楽制作ソフト、音源ソフトなどはリアルタイムに高度な計算、処理をしてるんですから、なおさらですね。コンピュータが便利に使えているのは、それが上手く動くように設計、プログラムしている人がいるから、ということです。現状まだまだ人間次第でコンピュータは動いています。

 プログラミングを学ぶ、ということまで必要は無いかと思いますが、やはりパソコンを使うのは、もう避けて通れない事です。なので、機械に振り回されないためにも、これらのような事を頭の片隅に置いておくとちょっとしたトラブル時とか、よくわからない動きをされた時に、振り回されることも少なくなるかなと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください