Glitch Machine解析班 その4「曲を作る」 [chiptune]
遂に4回目に到達しました、GlitchMachine解析班。
私事ですが、ここの所、チュートリアル芸ばかり繰り出しておりましたら
最強のFM使いにしてglitchMachineを僕に教えたutabiさんから
下の画面を作られる始末。
うん、なんか、ありがとうございます。
今回は総仕上げとして、曲を作っていきたいと思いますー、っといても
そもそもアルゴリズムによって生み出される「周期」を基に
音色を変化させ、ビートを刻み、曲を紡いでいくglitchMachineにとって
楽譜的にデータを使うのはイレギュラーな使用法だと思いますが…..
標的は
GRADIUS ボス戦闘のテーマ
短いからねwwwwwww!!
さて、今日もいってみましょうか。せーの、
「君のハートにピコピコドキュンや!!」
【① トラック1矩形波メインフレーズ】
さて、フレーズを打ち込むには、前回のWAVETABLE音源の時に
おまけでやった、音程変化の手法とテーブル操作を利用します。
最初に音階についてざっくりと説明しておきましょうか、
ご存知と思いますが僕らが打ち込みにつかっているドレミ音階は
1オクターブを「C, C#, D, D#, E, F, F#, G, G#, A, A#, B」の
12段で割っていて、12段登ると1オクターブ上の音(周波数が倍)になります。
基準となる音が A3 = 440Hzですんで、その周辺の表を作っておきます。
波形1周期の長さはGlitchMachineの1秒の長さ
8000ステップ / 周波数の値です。
最終的に、この周波数を切り替える事でメロディーが
出来上がります。
「aircraft carrier」の正式な楽譜は知りませんので、
脳内に残ってる曲を元に適当に打ち込みました。
C3 F3 C3 D3 (×8回繰り返し)
A3 A3 G3 A3 (×4回繰り返し)
C4 C4 A#3 C4 (×4回繰り返し)
のはずなので、これを再生します。
入力はこちら。
0行目:27 30 23 30 18 20 18 18 15 17 15 15
1行目:0 0 0 0 4 4 4 4 8 8 8 8 8 8 8 8
2行目:t 12 >> 16 % PICK
3行目:t 10 >> 4 % + 16 + PICK t SWAP % 5 * 32 &
0行目には、上の表に書かれている1周期の長さが
4音符×3パターン入っています。スタックなので、
それぞれのパターン内は右から左に再生されます。
1行目には各パターンへのオフセットテーブルが入っています。
C3 F3 C3 D3 はスタック的には8音符先に放り込んでいるので、
A3 A3 G3 A3 は4音符先、C4 C4 A#3 C4は0音符先
例によってスタックですので再生は右から左になっており
8音符先を8回、4音符先を4回、0音符先を4回を入力しています。
2行目は1行目のオフセットを「t 12 >>」周期で
右から0→15まで「PICK」します。これで 8x8 → 4×4 → 0×4を繰り返します。
3行目では0行目に入っている1周期長を取り出すとり出す訳ですが
「t 10 >> 4 % 」でまず 2行目より4倍早い周期で0→3を変化させています。
その後の「+」で、2行目でとりだした オフセットを足し、続く「16 +」で
オフセットテーブル分を飛び越し、「PICK」で周期長を取り出します。
少々複雑ですので、スタックの関係を図示しておきます。
こういうアルゴリズムを書く場合は、鉛筆と紙が必須ですねー。
次の「t SWAP % 」で、矩形波再生サイクルに取込みます。
「%」はスタック1をスタック0で割った余りが出る為、
割られる対象を後入れしたい場合、スタック0に入れておいてから「SWAP」で
ひっくり返す方法が便利です。この方法は「/」,「-」,「<<」,「>>」等で
使えますね。これで結果的「t 周期長 %」となり、ノコギリ波の周期を
変更します。
最後に「5 *」で音量をあげ、「32 &」で矩形波にします。
音量を小さめにしているのは、後でベースフレーズ、キックパート、
ノイズパートをMIXする為のオーバーフロー対策です。
音声はこちら
再生できない場合、ダウンロードは🎵こちら
【② トラック2矩形波ベースフレーズ】
トラック2の動作原理自体はトラック1と同じです。
入力はこちら。
4行:27 23 27 30 18 23 27 30 15 18 23 30
5行:0 4 8 8 t 14 >> 4 % PICK
6行:t 12 >> 4 % + PICK t 3 >> SWAP %
7行:5 * 32 & 17 PICK +
これといった違いはないのですが、
楽譜は C3 D3 F3 D3 ×2回繰り返し、 C3 D3 F3 A3、 C3 F3 A3 C4
となっており、トラック1の4分の1の速度で進む為、
右シフト数が2づつ多い事と、3オクターブを下げる為に
6行目に「t 3 >> 」が入っています。
音声はこちら。
再生できない場合、ダウンロードは🎵こちら
7行目の最後の「+」でトラック1とのMIXをしています。
【③ トラック3 三角波によるキック作成】
さて、RP2A03クラシック魂にのっとって、三角波によるキックを
再現してみます。三角波によるキックは、ざっくりいえば
ダウンスイープによって作ります。
入力はこちら。
8行目:0 16 32 48 64 80 64 48 32 16
9行目:t t 7 >> 32 % / 10 % PICK 11 PICK +
8行目には三角波の波形が入っています。
9行目の「t 7 >> 32 %」によって128分1ステップで0→31迄ループします。
その結果を「t t 7 >> 32 % /」となっていますので「t 0 /」→「t 31 /」で
「サイクルスピードの変化がループする」ことになります。
「10 % PICK」でその「サイクルスピードの変化がループ」をTABLEに当てはめ
「周波数が低く変化していく三角波(角速度が減速していく三角波)」を
作成しています。
音声はこちら。
再生できない場合、ダウンロードは🎵こちら
8行目 9行目で11スタックを使用していますので、「11 PICK」で
トラック1、2の出力結果を引っぱり出して、「+」で結果を合成します。
【④ トラック4 ノイズの追加】
この行は短いですが、8bitマシンでプログラムする上では
常套手段といえるbitフラグのスライドをやっています。
入力はこちら
10行目:165 t 10 >> 8 % >> DUP 1 & 0 > &
11行目:t t * * 63 % +
「165」がbitフラグ用の値です。2進数に直すと「1010 0101」となっており
これをノイズONフラグとして使用します。
「t 10 >> 8 %」で「t 10 >>」サイクルで0→7を繰り返し、
「165 0 >>」→「165 7 >>」をループするようになります。
さてこの結果を「1 &」すると、下1桁の値だけをとり出す事ができますので
「1 0 1 0 0 1 0 1」と8分音符でいうと「1拍、3拍、6拍、8拍」でONになる
リズムが作成されました。
これを「0 >」とすると
0の時は「0000 0000 0000 0000 0000 0000 0000 0000」
1の時は「1111 1111 1111 1111 1111 1111 1111 1111」
となります。
この値を11行目の「t t * *」に放り込めばそのまま「0」か「t t *」が
「1拍、3拍、6拍、8拍」に出力されるのですが、音色変化が欲しかったので
前もって、「DUP」でコピーしておいた自分自身と「&」をとります。
10行目は、短いコードですが、このような結構面倒なパラメータ変化を
作りだしています。
11行目で「t t * *」の値と10行目の値を掛けます、盛大に値がオーバーフローして
ノイズっぽい値となりますが、いまいち音程が残ってしまうので
「63 %」で音量を下げると共に、分解能を落として
ノイズっぽさを上げています。
音声はこちら。
再生できない場合、ダウンロードは🎵こちら
これを「+」で9行目の結果と足して、晴れて
全てのトラックのMIXが完了します。
MIX音声はこちら。
再生できない場合、ダウンロードは🎵こちら
さて、長かったGlitch Machine解析班もこれにて解散です。
やろうと思えば、まだまだ細かいテクニックは山ほどあるのですが
基本となる所はほぼカバーできていると思います。
iphoneさえあれば、¥250-で楽しめるglitch Machine。
欲をいえば、MIDI入力がパラメータとして入力できたりすれば
直にライブに使えたりするので面白いのですが、
現時点でも通勤通学中に音がどのように作られているかを、
シンセサイズ脳を鍛える事ができる
非常に有意義なツールといえるのではないでしょうか?
最後に、
本連載はアプリ作者などから金銭の授受や依頼は無く
自発的エクストリームタダ働きで作成いたしました!!
私事ですが、ここの所、チュートリアル芸ばかり繰り出しておりましたら
最強のFM使いにしてglitchMachineを僕に教えたutabiさんから
下の画面を作られる始末。
うん、なんか、ありがとうございます。
今回は総仕上げとして、曲を作っていきたいと思いますー、っといても
そもそもアルゴリズムによって生み出される「周期」を基に
音色を変化させ、ビートを刻み、曲を紡いでいくglitchMachineにとって
楽譜的にデータを使うのはイレギュラーな使用法だと思いますが…..
標的は
GRADIUS ボス戦闘のテーマ
「aircraft carrier」
短いからねwwwwwww!!
さて、今日もいってみましょうか。せーの、
「君のハートにピコピコドキュンや!!」
【① トラック1矩形波メインフレーズ】
さて、フレーズを打ち込むには、前回のWAVETABLE音源の時に
おまけでやった、音程変化の手法とテーブル操作を利用します。
最初に音階についてざっくりと説明しておきましょうか、
ご存知と思いますが僕らが打ち込みにつかっているドレミ音階は
1オクターブを「C, C#, D, D#, E, F, F#, G, G#, A, A#, B」の
12段で割っていて、12段登ると1オクターブ上の音(周波数が倍)になります。
基準となる音が A3 = 440Hzですんで、その周辺の表を作っておきます。
音名 | 周波数 | 波形1周期の長さ |
C4 | 523.25 | 15 |
B3 | 493.88 | 16 |
A#3 | 466.16 | 17 |
A3 | 440.00 | 18 |
G#3 | 415.30 | 19 |
G3 | 391.99 | 20 |
F#3 | 369.99 | 22 |
F3 | 349.22 | 23 |
E3 | 329.62 | 24 |
D#3 | 311.12 | 26 |
D3 | 293.66 | 27 |
C#3 | 277.18 | 29 |
C3 | 261.62 | 30 |
波形1周期の長さはGlitchMachineの1秒の長さ
8000ステップ / 周波数の値です。
最終的に、この周波数を切り替える事でメロディーが
出来上がります。
「aircraft carrier」の正式な楽譜は知りませんので、
脳内に残ってる曲を元に適当に打ち込みました。
C3 F3 C3 D3 (×8回繰り返し)
A3 A3 G3 A3 (×4回繰り返し)
C4 C4 A#3 C4 (×4回繰り返し)
のはずなので、これを再生します。
入力はこちら。
0行目:27 30 23 30 18 20 18 18 15 17 15 15
1行目:0 0 0 0 4 4 4 4 8 8 8 8 8 8 8 8
2行目:t 12 >> 16 % PICK
3行目:t 10 >> 4 % + 16 + PICK t SWAP % 5 * 32 &
0行目には、上の表に書かれている1周期の長さが
4音符×3パターン入っています。スタックなので、
それぞれのパターン内は右から左に再生されます。
1行目には各パターンへのオフセットテーブルが入っています。
C3 F3 C3 D3 はスタック的には8音符先に放り込んでいるので、
A3 A3 G3 A3 は4音符先、C4 C4 A#3 C4は0音符先
例によってスタックですので再生は右から左になっており
8音符先を8回、4音符先を4回、0音符先を4回を入力しています。
2行目は1行目のオフセットを「t 12 >>」周期で
右から0→15まで「PICK」します。これで 8x8 → 4×4 → 0×4を繰り返します。
3行目では0行目に入っている1周期長を取り出すとり出す訳ですが
「t 10 >> 4 % 」でまず 2行目より4倍早い周期で0→3を変化させています。
その後の「+」で、2行目でとりだした オフセットを足し、続く「16 +」で
オフセットテーブル分を飛び越し、「PICK」で周期長を取り出します。
少々複雑ですので、スタックの関係を図示しておきます。
こういうアルゴリズムを書く場合は、鉛筆と紙が必須ですねー。
次の「t SWAP % 」で、矩形波再生サイクルに取込みます。
「%」はスタック1をスタック0で割った余りが出る為、
割られる対象を後入れしたい場合、スタック0に入れておいてから「SWAP」で
ひっくり返す方法が便利です。この方法は「/」,「-」,「<<」,「>>」等で
使えますね。これで結果的「t 周期長 %」となり、ノコギリ波の周期を
変更します。
最後に「5 *」で音量をあげ、「32 &」で矩形波にします。
音量を小さめにしているのは、後でベースフレーズ、キックパート、
ノイズパートをMIXする為のオーバーフロー対策です。
音声はこちら
再生できない場合、ダウンロードは🎵こちら
【② トラック2矩形波ベースフレーズ】
トラック2の動作原理自体はトラック1と同じです。
入力はこちら。
4行:27 23 27 30 18 23 27 30 15 18 23 30
5行:0 4 8 8 t 14 >> 4 % PICK
6行:t 12 >> 4 % + PICK t 3 >> SWAP %
7行:5 * 32 & 17 PICK +
これといった違いはないのですが、
楽譜は C3 D3 F3 D3 ×2回繰り返し、 C3 D3 F3 A3、 C3 F3 A3 C4
となっており、トラック1の4分の1の速度で進む為、
右シフト数が2づつ多い事と、3オクターブを下げる為に
6行目に「t 3 >> 」が入っています。
音声はこちら。
再生できない場合、ダウンロードは🎵こちら
7行目の最後の「+」でトラック1とのMIXをしています。
【③ トラック3 三角波によるキック作成】
さて、RP2A03クラシック魂にのっとって、三角波によるキックを
再現してみます。三角波によるキックは、ざっくりいえば
ダウンスイープによって作ります。
入力はこちら。
8行目:0 16 32 48 64 80 64 48 32 16
9行目:t t 7 >> 32 % / 10 % PICK 11 PICK +
8行目には三角波の波形が入っています。
9行目の「t 7 >> 32 %」によって128分1ステップで0→31迄ループします。
その結果を「t t 7 >> 32 % /」となっていますので「t 0 /」→「t 31 /」で
「サイクルスピードの変化がループする」ことになります。
「10 % PICK」でその「サイクルスピードの変化がループ」をTABLEに当てはめ
「周波数が低く変化していく三角波(角速度が減速していく三角波)」を
作成しています。
音声はこちら。
再生できない場合、ダウンロードは🎵こちら
8行目 9行目で11スタックを使用していますので、「11 PICK」で
トラック1、2の出力結果を引っぱり出して、「+」で結果を合成します。
【④ トラック4 ノイズの追加】
この行は短いですが、8bitマシンでプログラムする上では
常套手段といえるbitフラグのスライドをやっています。
入力はこちら
10行目:165 t 10 >> 8 % >> DUP 1 & 0 > &
11行目:t t * * 63 % +
「165」がbitフラグ用の値です。2進数に直すと「1010 0101」となっており
これをノイズONフラグとして使用します。
「t 10 >> 8 %」で「t 10 >>」サイクルで0→7を繰り返し、
「165 0 >>」→「165 7 >>」をループするようになります。
計算式 | 結果 |
165 0 >> | 1010 0101 |
165 1 >> | 0101 0010 |
165 2 >> | 0010 1001 |
165 3 >> | 0001 0100 |
165 4 >> | 0000 1010 |
165 5 >> | 0000 0101 |
165 6 >> | 0000 0010 |
165 7 >> | 0000 0001 |
さてこの結果を「1 &」すると、下1桁の値だけをとり出す事ができますので
「1 0 1 0 0 1 0 1」と8分音符でいうと「1拍、3拍、6拍、8拍」でONになる
リズムが作成されました。
これを「0 >」とすると
0の時は「0000 0000 0000 0000 0000 0000 0000 0000」
1の時は「1111 1111 1111 1111 1111 1111 1111 1111」
となります。
この値を11行目の「t t * *」に放り込めばそのまま「0」か「t t *」が
「1拍、3拍、6拍、8拍」に出力されるのですが、音色変化が欲しかったので
前もって、「DUP」でコピーしておいた自分自身と「&」をとります。
計算式 | 結果 |
165 0 >> DUP 1 & 0 > & | 1010 0101 |
165 1 >> DUP 1 & 0 > & | 0000 0000 |
165 2 >> DUP 1 & 0 > & | 0010 1001 |
165 3 >> DUP 1 & 0 > & | 0000 0000 |
165 4 >> DUP 1 & 0 > & | 0000 0000 |
165 5 >> DUP 1 & 0 > & | 0000 0101 |
165 6 >> DUP 1 & 0 > & | 0000 0000 |
165 7 >> DUP 1 & 0 > & | 0000 0001 |
10行目は、短いコードですが、このような結構面倒なパラメータ変化を
作りだしています。
11行目で「t t * *」の値と10行目の値を掛けます、盛大に値がオーバーフローして
ノイズっぽい値となりますが、いまいち音程が残ってしまうので
「63 %」で音量を下げると共に、分解能を落として
ノイズっぽさを上げています。
音声はこちら。
再生できない場合、ダウンロードは🎵こちら
これを「+」で9行目の結果と足して、晴れて
全てのトラックのMIXが完了します。
MIX音声はこちら。
再生できない場合、ダウンロードは🎵こちら
さて、長かったGlitch Machine解析班もこれにて解散です。
やろうと思えば、まだまだ細かいテクニックは山ほどあるのですが
基本となる所はほぼカバーできていると思います。
iphoneさえあれば、¥250-で楽しめるglitch Machine。
欲をいえば、MIDI入力がパラメータとして入力できたりすれば
直にライブに使えたりするので面白いのですが、
現時点でも通勤通学中に音がどのように作られているかを、
シンセサイズ脳を鍛える事ができる
非常に有意義なツールといえるのではないでしょうか?
最後に、
本連載はアプリ作者などから金銭の授受や依頼は無く
自発的エクストリームタダ働きで作成いたしました!!
コメント 0