ピコカキコ:FMで遊ぶ 単語

ピコカキコエフエムデアソブ

4.6千文字の記事
  • twitter
  • facebook
  • はてな
  • LINE

(以下の記事は、ピコカキコ@14(→ピコカキコ:波形で遊ぶ参照)が実装される前の機を使用したものです。)

ピコカキコ:FMで遊ぶとは、ピコカキコで音色を作る際に使われるFM@o、@i)を使って遊ぶ記事、すなわちこのページのことである。

なお、この記事はピコカキコについてある程度知っている事を前提に書かれている。これからピコカキコを始めてみようとお考えの方はまずは「ニコニコ大百科:ピコカキコヘルプ」辺りの記事を見ることをお薦めする。

概要

ピコカキコではFMFrequency Modulation:周波数変調)を使う事によって音色を作成する事が出来る。これにより通常では出せないような複雑な音色を作成する事が可である。簡単に言うとピコカキコFM音源になると言う事である。

ただし、1音出すのに最低2トラック使用する事になるので、チャンネル数が多くなると再生が重くなるという諸刃の剣でもある。

FMとは――合成とFMの違い

FMとはFrequency Modulationの略である。日本語に訳せば周波数変調。
余談だが、FM変調と言う言葉をたまに見かけたりするが、周波数変調変調になるので実は誤用。まぁ、細かい事は気にしなくて好きに呼べば良いと思うよ?

さて、周波数変調とはどういったものか詳しい解説wikipediaexitなんかを見ていただくとしてここでは簡単にイメージ解説する。
2つの周波数があるとき、同時に鳴らすとそれは単純に波形の合成(振幅量を単純に足し算したもの)となる(MMLの例:cdef;cdef)。片方の波形でもう片方に変調を掛けるのが周波数変調(FM)である。
2つの波形が全く同一の正弦波として、図で示すと以下の通りとなる。

波形の合成
波形A 波形B 合成後波形
周波数変調(FM
波形A
※モジュレータ
波形B
※キャリア
変調後波形

※モジュレータ=変調を掛ける側、キャリア=変調を掛けられる側

ご覧の通り、波形の合成は全く同じ波形同士の場合はただ振幅量が倍に増えた(=音が大きくなった)だけであるが、変調の方はかなり違った波形になっている(どのように変化させるかは後述する)。また変調は変調を掛けられる側の振幅量と同じになるので音量はキャリアのものと同じになる。

これが周波数変調(FM)で、出される波形はかなり複雑になっている。これを上手く使う事によって様々な音色を作成する事が出来るのである。

使用方法

ピコカキコFMを使う方法は次の通りである。

記述方法

  1. トラック(モジュレータ)に @o[モード],[パイプNo] を記述し、譜面データを記述
  2. トラック(キャリア)に @i[感度],[パイプNo] を記述し、譜面データを記述

これだけでFMを使用することが出来る。
実際のピコカキコサンプルは次の通りになる。

3699
@o1,0 @0 cdefg;
@i4,0 @0 cdefg;

波形は出も入も正弦波を使用しているが、正弦波とは違う音色で演奏されていることがわかると思う。これがFM音源である。
@o を記述したトラックの波形で @i を記述したトラックに周波数変調を掛けているのである。

コマンド解説

@o[モード],[パイプNo]
@o コマンドは変調を掛ける側に記述するコマンドである。

モード
0 OFFにする。
1 上書きモードパイプへ出する際にパイプの中身を上書きする場合に定する。
2 加算モードパイプへ出する際にパイプの中の波形に加算する場合に定する。
パイプNo
0~3 使用するパイプNoを定する。

パイプとは簡単に言うと波形を一時置いておく仮想の出装置と考えていただければわかりやすいかも。ここに出された波形で @i コマンド定したトラックに変調を掛ける。
モードを 0 以外を設定した場合は定したパイプに波形が出されるのでスピーカーから音は出なくなる。

@i[感度],[パイプNo]
@i コマンドは変調を掛けられる側に記述するコマンドである。

感度
0~9 変調のかかり具合を調整する。0でOFF。1が感度が弱く、9が感度が強い。感度を強くするとノイジーと言うか金属っぽい音って言うかそんな感じになります。
パイプNo
0~3 使用するパイプNoを定する。

 

感度とは?

コマンド説明の所にも記載しているが、変調のかかり具合を調整するものである。
以下の正弦波同士の変調の計算式において、変調数(β)を示すものである。

計算式:
FM(t) = A sin(2πCt + β sin(2πMt))
A=キャリア振幅、C=キャリア周波数、β=変調数、M=モジュレータ周波数

どのような波形が出されるか図で示す。

感度が3の場合 感度が4の場合
感度=3の場合 感度=4の場合

モジュレータ・キャリアともに振幅量・周波数は同一のものである。
余談であるが「FMとは」で使用している画像は感度が2のものである。

変調数はモジュレータの振幅量とも捉えられるので、モジュレータの音量を変更することにより感度より更に細かい変化をつけることが可である。

 

パイプとは?

パイプとはトラックトラックを繋ぐ為のもので、その名の通り本当にパイプみたいなものである。
@o コマンドが書かれたトラックの波形データは一度このパイプに出される。そして、@i コマンドが書かれたトラックはこのパイプからの波形で変調を掛け出する。
ここで @o コマンドの第1引数モードが出てくるのである。

上述の通り、@o コマンドが書かれたトラックパイプに波形データを出するわけだが、モードが 1(上書き)の場合はパイプの中に何があろうとも全に上書きするのである。
そして、モードが 2(加算)の場合はすでにパイプの中に存在する波形データに加算する形で出するのである。
どう言う時にこのような事を行いかと言うと、ある波形Aとある波形Bを合成した波形を用いて変調を掛けたい場合に使用するのである。

YM2203(OPN)での例をあげてみよう。
アルゴリズム0や5、6の場合は全て直列に繋げばいいので問題はいが、アルゴリズム1,2,3は複数のオペレータの出合成してキャリアに対して変調を掛けてるのである。
このようなものを再現するにモードの加算は欠かせないものとなっている。

 

簡単な例として モジュレータ1

モジュレータ2



キャリア
と言った繋がりで説明する。

 

MML記述例
@o1,0 q16 @q0 @0 o4 @v50 e1;  /* モジュレータ1 */
@o2,0 q16 @q0 @0 o5 @v50 e1;  /* モジュレータ2 */
@i2,0 q16 @q0 @0 o4 @v100 e1;  /* キャリア */

各波形は次の通りとなる。

 

モジュレータ1 モジュレータ2 キャリア
モジュレータ1 モジュレータ2 キャリア

 

処理説明 パイプ内波形 スピーカー波形
1.まずモジュレータ1の波形がパイプに出される。
モード上書きモードなのでパイプにはモジュレータ1と同じ波形が出される。
パイプ内波形
2.次にモジュレータ2の波形がパイプに出される。
モード加算モードなのですでにパイプ内にある波形にモジュレータ2の波形が加算(合成)される。
パイプ内波形
3.キャリアの波形にパイプ内の波形で変調をかけてスピーカーに出される。 スピーカー出力波形

 

パイプとそのモードはこのように動作するのである。

上級テクニック

これまで出てきたサンプルはいわゆる2オペレータFM音源と同じあるが、3オペレータ、4オペレータも可である。

3オペレータ例
3700
$A = o4 cdefg;
@o1,0 @0 @e1,0,0,127,0 NS19 v4 $A;
@i4,0 @o1,1 @0 @e1,0,0,127,0 NS-12 v10 $A;
@i4,1 @0 @e1,0,0,127,0 NS0 v15 $A;
3701
$A = o4 cdefg;
@o1,0 @0 @e1,0,0,127,0 NS19 v4 $A;
@o2,0 @0 @e1,0,0,127,0 NS-12 v10 $A;
@i4,0 @0 @e1,0,0,127,0 NS0 v15 $A;
4オペレータ例
3702
$A = o4 cdefg;
@o1,0 @0 @e1,0,0,127,0 NS19 v4 $A;
@i4,0 @o1,1 @0 @e1,0,0,127,0 NS-12 v10 $A;
@i4,1 @o1,2 @0 @e1,0,0,127,0 NS12 v2 $A;
@i4,2 @0 @e1,0,0,127,0 NS0 v15 $A;
3703
$A = o4 cdefg;
@o1,0 @0 @e1,0,0,127,0 NS19 v2 $A;
@i4,0 @o1,1 @0 @e1,0,0,127,0 NS-12 v6 $A;
@o2,1 @0 @e1,0,0,127,0 NS12 v10 $A;
@i4,1 @0 @e1,0,0,127,0 NS0 v15 $A;

当然、波形も正弦波以外のものを使用することが可です。

波と三角
3704
$A = o4 cdefg;
@o1,0 @1 @e1,0,0,127,0 v10 $A;
@i4,0 @2 @e1,0,0,127,0 v15 $A;
波形メモリ波形メモリ
3705
$A = o4 cdefg;
@o1,0 @10-0 @e1,0,0,127,0 v10 $A;
@i4,0 @10-1 @e1,0,0,127,0 v15 $A;
#WAV10 0,8765432100000000000000000FEDCBA9
#WAV10 1,00123456789ABCDE79BCDEFFFFFEDCB9

 

音色作成方法

PC-8801PC-9801X68000ゲーム音楽を作成してみようって思い音色を作ろうとすると大変だと思います。
一番の理由はYM2203YM2151で設定出来るパラメータとは全く違うからです。
特にFB(フィードバック)やKSR(キースケールレイト)なんかがいからです。

では、どうやって音色を作ればいいのでしょう?
それは簡単です。

試行錯誤すれば良いと思うよ?

と、さすがにこれでは不切なので著者が普段気を使っている事を挙げてみる。

 

使用例

3690
こずえテーマ YM2203再現させたピコ。(同級生2 #2より)
3709
音色サンプル ギターっぽい音色のサンプル(ピコカキコ:FMで遊ぶ #10より)
3710
音色サンプル ベースっぽい音色のサンプル(ピコカキコ:FMで遊ぶ #11より)
3711
音色サンプル 鐘っぽい音色のサンプル(ピコカキコ:FMで遊ぶ #12より)
3716
消えた王様ヒドラ YM2203再現させたピコ。(SORCERIAN #5より)
3723
SUBTERRANEAN CANAL YM2203再現させたピコ。(イース2 #1より)
3906
Over The Sea YM3526を再現させたピコ。(東亜プラン #17より)
4262
Sea Of Flame YM2612再現させたピコ。(サンダーフォース #53より)
4395
音色サンプル 鐘っぽい音色のサンプル2(ピコカキコ:FMで遊ぶ #23より)
4845
オープニング YM2203再現させたピコ。(ピコカキコ:FMで遊ぶ #34より)
5013
エンディング YM2203再現させたピコ。(SORCERIAN #13より)
以下募集!

 

関連コミュニティ

関連項目

この記事はピコカキコに関連した書きかけ項です。この記事を加筆して下さる協者をめています。
この記事を編集する

掲示板

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
もっと見る

急上昇ワード改

最終更新:2024/05/03(金) 14:00

ほめられた記事

最終更新:2024/05/03(金) 14:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP