So-net無料ブログ作成
検索選択

GlitchMachine解析班 その1「初歩の2進数」 [chiptune]

さて突発的に編成しましたGlitchMachine解析班。

Glitch-Machine-Icon-150x150.jpg

GlitchMachineとは、発音において、ビット単位〜シーケンスまで
計算式によってコントロールする事のできるiphone用シーケンサーアプリです。
¥250です。


【はじめに】

まず、どんな音が出るかは、こちらをご覧ください。


はい、見られて方の殆どみなさんが何じゃこりゃという感想を
お持ちだと思います。

逆ポーランド記法のスタック動作(RPN)、ビット演算等の
CPUの累算器の操作と、シンセサイズの知識が無いと
望みの操作がまったくできません。ドキュメントも全て英語です。

折角なのでこの連載ではCPUの中で使用する数値の表現方法
「2進数」の説明から開始します!

......我ながらなんかすごく音に関係ない所から始まりますね。

【① 2進数読み書き】
 例えば、僕ら日本人がデフォルトで使っている10進数のばあい
 "1 0 9" と並べて書かれると、1桁が0〜9の値を持ち
 左から百が1個、十が0個、一が9の合計値が
 109だというのは、無意識に使いこなせていると思います。

 そう、十進数は0〜9まで1づつカウントアップしていくと、
 「十になった時に一桁進む数値の表記方法」です。

 それでは10進数109は2進数ではどのような書き方になるか

桁の重み 128 _64 _32 _16 __8 __4 __2 __1
 109= 0 1 1 0 1 1 0 1

 となります。

二進数は一桁が0と1の状態を持ち、
「二になった時に一桁進む数値の表記方法」です。
ちなみに二進数の一桁を"bit"と言います。

【② インクリメント】
数値を1つ加算する事をインクリメント(Inc)といいます。
109をIncしていくと110→111→112→113.....119→120と
増えていくのは当たり前過ぎて、御ヘドが出ると思います。

では2進数ではどうなるか!
 十進数 128 _64 _32 _16 __8 __4 __2 __1
 109 0 1 1 0 1 1 0 1
 110 0 1 1 0 1 1 1 0
 111 0 1 1 0 1 1 1 1
 112 0 1 1 1 0 0 0 0
 113 0 1 1 1 0 0 0 1
 114 0 1 1 1 0 0 1 0
 115 0 1 1 1 0 0 1 1
 116 0 1 1 1 0 1 0 0
 117 0 1 1 1 0 1 0 1
 118 0 1 1 1 0 1 1 0
 119 0 1 1 1 0 1 1 1
 120 0 1 1 1 1 0 0 0


こういう感じですね。

ちょっと気に留めて置きたいのは各桁の変化の周期です。
1の桁はInc毎にペロペロ変わっていますが
2の桁は2回ごと、4の桁は4回ごと、8の桁は8回ごととなっています。

後ほど解説しますが、
「1桁上がれば上がる程半分の遅い周期
 1桁下がれば倍の早い周期」
で変化しとる訳です。

音的に考えると、
周期が倍早い=1オクターブ上の音
周期が半分で遅い1オクターブ下の音
ですんで、見るからに何かに使えそうな性質があると
思っていただければ。

ちなみにデクリメント(Dec)1づつ減算というものもありますが
進行方向逆で考えてください。

【③ 加算】
さくっと行きます。
十進数 128 _64 _32 _16 __8 __4 __2 __1
 10  0 0 0 0 1 0 1 0
 6  0 0 0 0 0 1 1 0
 +  0 0 0SET繰上繰上繰上 0
 結果16  0 0 0 1 0 0 0 0


となります。減算もこの逆でご理解頂けるかと。

もうひとつ、例えば、十進数196を加算するとしましょう。
十進数 128 _64 _32 _16 __8 __4 __2 __1
 100  0 1 1 0 0 1 0 0
 196  1 1 0 0 0 0 0 0
 + 天国←繰上繰上 0 0 0 1 0 0
 結果36  0 0 1 0 0 1 0 0


一般的なCPUでは桁あふれした数値はあの世に行き、
OverFlowステータスを点灯させますが
glichMachineではそのまま残ったbitで結果でると考えた方が
分かりやすいかもしれませんね。

上記の「196+」は上位2bitがONになってるという値で、
63以下の値に加算すると普通に加算した結果が出ますが
64以上の値に加算すると上位2ビットが溢れて
63(bit 32 16 8 4 2 1で取れる値)までの値しか
残りません。

減算は逆に考えて貰えれば。

【④ OR】
 ここまではぶっちゃけ10進数のまま計算した結果を2進数に戻しても
 同じ値が得られるので、2進数で考えなくてもいい処理です。
 (かけ算、割り算も同様。)
 が、ここからのbit演算は違います。

 ORは論理和という処理です。
 AというbitとBというbitの結果がCとすると

 A OR B = C
 0 0 | 0
 1 0 | 1
 0 1 | 1
 1 1 | 1


 となります。

 音的に考えると1とORしてる領域では、ビットの変化が隠されてしまうという
 特性があり、かくされた所以外の変化だけがORしてる波形の上にチロッとなる
 感じの操作ができます。まぁ、次回に実践でやるます。

【⑤ AND】
 ANDは論理積という処理です。

 A AND B = C
 0 0 & 0
 1 0 & 0
 0 1 & 0
 1 1 & 1


 となります。

 音的に考えると0とANDしてる領域では、波形が現れず、1の置いてあるbitに
 到達すると出てくるということで、矩形波等階段上の波形作成や、
 ANDしてる領域のみのSAWを作るなどができます。
 まぁ、次回に実践でやるます。(こればっか)

【⑥ XOR】
 XORは排他的論理和という処理です。

 A XOR B = C
 0 0 & 0
 1 0 & 1
 0 1 & 1
 1 1 & 0


 となります。

【⑦ シフト】
 シフトも2進数ならではの動作!

十進数 128 _64 _32 _16 __8 __4 __2 __1
 100  0 1 1 0 0 1 0 0
 1  0 0 0 0 0 0 0 1
 >>  0  → → 1 0 → 1 →
 結果50  0 0 1 1 0 0 1 0


 となります。
 大まかには、右に1bitシフトすると値が、半分に左にシフトすると倍と
 考えてもいいでしょう。
 まぁ略)

・余談
 今回説明したような値をいれる、ある値との加算・減算ができるような
 回路を"アキュムレータ"と言い、CPUの中にいて計算業務をせっせか
 こなしています。そのCPUが何bit?というのは実はこのアキュムレータが
 一度に計算できる桁数の事でして、8bitミュージックうんたら言ってるのは
 厳密にいうと、

 「一度に8bitの二進数しか計算できない、ちっぽけなコンピュータに
  ついているちゃちい音源で作ったミュージック」となります。

 さて、次回はスタック講座と音つくってくぜ!→こちら。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。