GlitchMachine解析班 その2「初歩のRPN」 [chiptune]
今回はいよいよ音出ししながら、GlitchMachineの
シーケンス記述方法、"RPN"について記載していきます。
RPN(逆ポーランド記法)とは、スタックという記憶領域を使った
計算の記し方で、コンピュータにとっては非常に効率よいのですが
いかんせん普通使ってる手順とは異なり、読み書きづらいのですが
使いこなすと
「うわー俺、コンピュータをコンピューティングしてるわー
生身なのに電子の海を漂ってるわー」(ミサワ風)
と悦に入ることが可能です。
■■【① tと音が出るまで】■■
さて実行すると関数電卓のような画面が出てきます。
機能は順をおって説明するとしてまず"t"ボタンを押してみましょう。
画面上部には0から255にアップしていくノコギリ波の波形が表示されました。
"t"は実行の度に自動でインクリメントされるタイマカウンタです。
GlitchMachineは1秒間に8000サイクル、計算式を実行しますので
tは1秒間に8000回のカウントアップをします。
この式の場合、スタックには"t"しかないので、毎回tの下位8bitが
出力されます。"t"自体は32bitのデッカイサイズを持っているようですが
その下位8bitだけを抜き出すと0から255が循環しているので
連続したノコギリ波になる訳ですね。
1秒間に8000サイクルで256段階を繰り返すという事は
8000 / 256 = 31.25回
すなわち周波数31.25Hzのノコギリ波が出ています。
音はこちら。
再生できない場合、ダウンロードは🎵こちら
ちなみにglitchMachineは31.25分の1秒にあわせて波形を表示してますので
ちょうどノコギリ波が1個だけ表示されます。
■■【② 周波数を高くする】■■
さてそれでは次に足し算いってみましょう。
入力はこちら。
t t +
やっとスタックらしい事の第一歩です。
はい、これで一番浅いスタックにはt+tの結果が残りますね、
t+tは通常のtだと1サイクルに1加算の所を2倍増で増えていきます。
■値の進み方■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■
数値が256を超えるという事は桁上げによって2進数の9ビット以上が
点灯するという事なので、出力される波形には現れません。
波形にすると、ノコギリが2個出てきます。
おめでとう。
君は倍の周波数をもつノコギリ波を手に入れたよ。
おめでとう。
音はこちら。
再生できない場合、ダウンロードは🎵こちら
ちなみに皆さんの想像どおり計算はt 2* (= t * 2)でも置き換わります。
またちょっと不思議だけど t 1 << (左に1bitシフト)でも同じ。
分からない場合は前回を観てね。
■■【③ 周波数を低くする】■■
さて次は割り算です。
入力はこちら
t 2 /
これで、②とは逆方向でtが毎サイクル1づつ増えていくのに対して
t 2 /は半分のスピードで増えていきます。
■値の進み方■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■
おめでとう。
君は半分の周波数をもつノコギリ波を手に入れたよ。
1オクターブ音が低いね。
おめでとう。
音はこちら。
再生できない場合、ダウンロードは🎵こちら
これまたちょっと不思議だけど t 1 >> (右に1bitシフト)でも同じ。
分からない場合は前回を略)
■■【④ 矩形波にしてみる】■■
さてノコギリ波に飽きたので、馴染みの矩形波を召還します。
入力は
t 128 &
です。
■値の進み方■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■
128というのは2進数でかくと「1000000」と8bitの一番上のbitです。
129=1000001,130=1000010,131=1000011,132=1000100...と進んで行きますので
0〜255のステップの内、後半の半分は8bitの一番上のbitが付いているので
128が出力されます。
おめでとう。
君は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する]
おめでとう。
これで君は断続ノコギリ波を手に入れたよ。
おめでとう。
音はこちら。
再生できない場合、ダウンロードは🎵こちら
さて、今回はこのあたりで終りです。
しかし、ここまででGlitchMachineの基本的となるスタックの使い方はお分かりに
なったのではないでしょうか?
次回は応用として、GlitchMachineでの波形の作り方をもう少し深くいきます。
→こちら。
シーケンス記述方法、"RPN"について記載していきます。
RPN(逆ポーランド記法)とは、スタックという記憶領域を使った
計算の記し方で、コンピュータにとっては非常に効率よいのですが
いかんせん普通使ってる手順とは異なり、読み書きづらいのですが
使いこなすと
「うわー俺、コンピュータをコンピューティングしてるわー
生身なのに電子の海を漂ってるわー」(ミサワ風)
と悦に入ることが可能です。
■■【① tと音が出るまで】■■
さて実行すると関数電卓のような画面が出てきます。
機能は順をおって説明するとしてまず"t"ボタンを押してみましょう。
画面上部には0から255にアップしていくノコギリ波の波形が表示されました。
"t"は実行の度に自動でインクリメントされるタイマカウンタです。
GlitchMachineは1秒間に8000サイクル、計算式を実行しますので
tは1秒間に8000回のカウントアップをします。
この式の場合、スタックには"t"しかないので、毎回tの下位8bitが
出力されます。"t"自体は32bitのデッカイサイズを持っているようですが
その下位8bitだけを抜き出すと0から255が循環しているので
連続したノコギリ波になる訳ですね。
1秒間に8000サイクルで256段階を繰り返すという事は
8000 / 256 = 31.25回
すなわち周波数31.25Hzのノコギリ波が出ています。
音はこちら。
再生できない場合、ダウンロードは🎵こちら
ちなみにglitchMachineは31.25分の1秒にあわせて波形を表示してますので
ちょうどノコギリ波が1個だけ表示されます。
■■【② 周波数を高くする】■■
さてそれでは次に足し算いってみましょう。
入力はこちら。
t t +
やっとスタックらしい事の第一歩です。
はい、これで一番浅いスタックには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ビット以上が
点灯するという事なので、出力される波形には現れません。
波形にすると、ノコギリが2個出てきます。
おめでとう。
君は倍の周波数をもつノコギリ波を手に入れたよ。
おめでとう。
音はこちら。
再生できない場合、ダウンロードは🎵こちら
ちなみに皆さんの想像どおり計算はt 2* (= t * 2)でも置き換わります。
またちょっと不思議だけど t 1 << (左に1bitシフト)でも同じ。
分からない場合は前回を観てね。
■■【③ 周波数を低くする】■■
さて次は割り算です。
入力はこちら
t 2 /
これで、②とは逆方向で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 |
おめでとう。
君は半分の周波数をもつノコギリ波を手に入れたよ。
1オクターブ音が低いね。
おめでとう。
音はこちら。
再生できない場合、ダウンロードは🎵こちら
これまたちょっと不思議だけど t 1 >> (右に1bitシフト)でも同じ。
分からない場合は前回を略)
■■【④ 矩形波にしてみる】■■
さてノコギリ波に飽きたので、馴染みの矩形波を召還します。
入力は
t 128 &
です。
■値の進み方■■■■■■■■■■■■■■■■■
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が出力されます。
おめでとう。
君は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する]
おめでとう。
これで君は断続ノコギリ波を手に入れたよ。
おめでとう。
音はこちら。
再生できない場合、ダウンロードは🎵こちら
さて、今回はこのあたりで終りです。
しかし、ここまででGlitchMachineの基本的となるスタックの使い方はお分かりに
なったのではないでしょうか?
次回は応用として、GlitchMachineでの波形の作り方をもう少し深くいきます。
→こちら。
コメント 0