SSブログ

GlitchMachine解析班 その2「初歩のRPN」 [chiptune]

今回はいよいよ音出ししながら、GlitchMachineの
シーケンス記述方法、"RPN"について記載していきます。

RPN(逆ポーランド記法)とは、スタックという記憶領域を使った
計算の記し方で、コンピュータにとっては非常に効率よいのですが
いかんせん普通使ってる手順とは異なり、読み書きづらいのですが
使いこなすと

「うわー俺、コンピュータをコンピューティングしてるわー
 生身なのに電子の海を漂ってるわー」(ミサワ風)


と悦に入ることが可能です。



■■【① tと音が出るまで】■■

 さて実行すると関数電卓のような画面が出てきます。

 GM1-nonsound.jpg


 機能は順をおって説明するとしてまず"t"ボタンを押してみましょう。

 GM2-SAW1.jpg


 画面上部には0から255にアップしていくノコギリ波の波形が表示されました。
 
 "t"は実行の度に自動でインクリメントされるタイマカウンタです。
 GlitchMachineは1秒間に8000サイクル、計算式を実行しますので
 tは1秒間に8000回のカウントアップをします。


 図tのみ.jpg
 

 この式の場合、スタックには"t"しかないので、毎回tの下位8bitが
 出力されます。"t"自体は32bitのデッカイサイズを持っているようですが
 その下位8bitだけを抜き出すと0から255が循環しているので
 連続したノコギリ波になる訳ですね。

 1秒間に8000サイクルで256段階を繰り返すという事は
 8000 / 256 = 31.25回
 すなわち周波数31.25Hzのノコギリ波が出ています。


 音はこちら。

 

 ちなみにglitchMachineは31.25分の1秒にあわせて波形を表示してますので
 ちょうどノコギリ波が1個だけ表示されます。


■■【② 周波数を高くする】■■

 さてそれでは次に足し算いってみましょう。 
 入力はこちら。

 t t +


 やっとスタックらしい事の第一歩です。

 図tt+.jpg


 はい、これで一番浅いスタックにはt+tの結果が残りますね、
 t+tは通常のtだと1サイクルに1加算の所を2倍増で増えていきます。

■値の進み方■■■■■■■■■■■■■■■■■
  t  t+t  tの8bit  t+tの8bit 
  0   0   0   0
  1   2   1   2
  2   4   2   4
  3   6   3   6
  :   :   :   :
 127  254  127  254
 128  256  128   0
 129  258  129   2
 130  260  130   4
  :   :   :   :
 254  508  254  252
 255  510  255  254
 256  512   0   0
  :   :   :   :
■■■■■■■■■■■■■■■■■■■■■■■■

 数値が256を超えるという事は桁上げによって2進数の9ビット以上が
 点灯するという事なので、出力される波形には現れません。


 GM3-SAW2.jpg 

 波形にすると、ノコギリが2個出てきます。
 

 おめでとう。
 君は倍の周波数をもつノコギリ波を手に入れたよ。
 おめでとう。


 音はこちら。

 


 ちなみに皆さんの想像どおり計算はt 2* (= t * 2)でも置き換わります。
 またちょっと不思議だけど t 1 << (左に1bitシフト)でも同じ。
 分からない場合は前回を観てね。


■■【③ 周波数を低くする】■■

 さて次は割り算です。

 入力はこちら
 t 2 /


 図t2割り.jpg

 これで、②とは逆方向でtが毎サイクル1づつ増えていくのに対して
 t 2 /は半分のスピードで増えていきます。


■値の進み方■■■■■■■■■■■■■■■■■
  t  t 2 /  tの8bit  t2/の8bit 
  0   0   0   0
  1   0   1   0
  2   1   2   1
  3   1   3   1
  4   2   4   2
  5   2   5   2
  :   :   :   :
 254  126  254  126
 255  126  255  126
 256  127   0  127
  :   :   :   :
 510  255  254  255
 511  255  255  255
 512  256   0   0
■■■■■■■■■■■■■■■■■■■■■■■■

 GM4-SAW3.jpg

 おめでとう。
 君は半分の周波数をもつノコギリ波を手に入れたよ。
 1オクターブ音が低いね。
 おめでとう。


 音はこちら。

 


 これまたちょっと不思議だけど t 1 >> (右に1bitシフト)でも同じ。
 分からない場合は前回を略)


■■【④ 矩形波にしてみる】■■

 さてノコギリ波に飽きたので、馴染みの矩形波を召還します。

 入力は
 t 128 &
 です。


 図t128AND.jpg

■値の進み方■■■■■■■■■■■■■■■■■
  t  t 128 &  tの8bit  t128&の8bit 
  0   0   0   0
  1   0   1   0
  2   0   2   0
  3   0   3   0
  :   :   :   :
 127   0  127   0
 128  128  128  128
 129  128  129  128
  :   :   :   :
 254  128  254  128
 255  128  255  128
 256   0   0   0
■■■■■■■■■■■■■■■■■■■■■■■


 128というのは2進数でかくと「1000000」と8bitの一番上のbitです。
 129=1000001,130=1000010,131=1000011,132=1000100...と進んで行きますので
 0〜255のステップの内、後半の半分は8bitの一番上のbitが付いているので
 128が出力されます。

 GM5-Squ1.jpg

 おめでとう。
 君は50%比の矩形波を手に入れたよ。
 周波数は最初のtと同じだね。
 おめでとう。

 音はこちら。

 


■■【⑤ 矩形波をON/OFF制御に使ってみる】■■

 さあ、今回のシメにココまでの組み合わせをしてみるよ。
 
 入力はこれだ!

 t 8 / 128 & 128 / t 2 * *

 演算子区切りでイッコイッコ観ていくよ。

 Step1「t 8 /」 
  ③でやった計算だけど割る8なので3.90Hzの更に遅いSAW波
  なぜ遅くしているかというと、あんまり周波数早いとON/OFFしてるのが
  解り難いからです。

  スタック0[3.90Hzの三角波]

 Step2「128 &」
  ④でやった。出力0:128の比が1対1の矩形波に。

  スタック0[3.90Hzで出力0から128の矩形波]                  

 Step3「128 /」
  出力を128で割るので、0:1の矩形波に変わります。
  これは後述の掛け算STEP5の時に、ノコギリ波に128を掛けると周波数が
  変化してしまいますが、1を掛けるとそのままの周波数でオン状態に
  0の時はオフ状態にできるようにという意図です。

  スタック0[3.90Hzで出力0から1の矩形波]                  

 Step4「t 2 *」
  ②でやった「t t +」と同じ、62.5Hzのノコギリ波
  音色部分になります。

  スタック0[3.90Hzで出力0から1の矩形波] 
  スタック1[62.5Hzのノコギリ波]                 


 Step5「*」
  スタック0とスタック1をかけます。
  当然のようにスタック0が0のときは音が出ず、
  1の時にスタック1のノコギリがそのまま出まするね。

  スタック0[62.5Hzのノコギリ波が1秒間に3.90回ON/OFFする]

 GM6-SteppingSAW.jpg


 おめでとう。
 これで君は断続ノコギリ波を手に入れたよ。
 おめでとう。

 音はこちら。
 
 


さて、今回はこのあたりで終りです。
しかし、ここまででGlitchMachineの基本的となるスタックの使い方はお分かりに
なったのではないでしょうか?

次回は応用として、GlitchMachineでの波形の作り方をもう少し深くいきます。
こちら。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

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

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

トラックバック 0

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