FlMML - GB波形メモリ音源
FlMML更新しました。
前回はゲームボーイノイズを実装したので、今回はGB波形メモリ音源です。
最近まで知らなかったんですが、GBには1チャンネルだけ波形メモリ音源がついてたそうなので、なんとなくの知識で実装してみました。
もし何か間違ってたら、しれっと修正するかもしれないのでお気をつけください。
【動作サンプルはこちら】
サンプルでは数種類の音色でドレミを鳴らしたあと、応用例として高速トレモロを鳴らしています。
LFOにも使えるのは案外便利じゃないかなーと思ったりしています。
FlMMLのダウンロードはこちら。
前回のエントリのとき(Rev.27840)より全体的に高速化もされてます。
今回のリビジョンは29203です。
機能の説明は続きをどうぞ。
前回はゲームボーイノイズを実装したので、今回はGB波形メモリ音源です。
最近まで知らなかったんですが、GBには1チャンネルだけ波形メモリ音源がついてたそうなので、なんとなくの知識で実装してみました。
もし何か間違ってたら、しれっと修正するかもしれないのでお気をつけください。
【動作サンプルはこちら】
サンプルでは数種類の音色でドレミを鳴らしたあと、応用例として高速トレモロを鳴らしています。
LFOにも使えるのは案外便利じゃないかなーと思ったりしています。
FlMMLのダウンロードはこちら。
前回のエントリのとき(Rev.27840)より全体的に高速化もされてます。
今回のリビジョンは29203です。
機能の説明は続きをどうぞ。
波形メモリ音源を簡単に説明するなら、「波形の一周期分だけを定義できる音源」ということになるでしょうか。
GBの場合、1周期をの波形32個、16段階の数で定義することが出来ます。
たとえばこんな波形を鳴らしたいとすると──
0123456789ABCDEFFEDCBA9876543210
というのが、この波形を16進数であらわしたものになります。
16進数が何か分からないひとは、10~15までをA~Fであらわしたものだと思っておいてください。
これを、@10の0番として割り当てるには
#WAV10 0,0123456789ABCDEFFEDCBA9876543210
と書きます。
いまのところ0番から15番まで使えるようになってますが、リクエストがあれば増やしますよ。
これを使うときは
@10-0 CDEFG
のように書きます。
なんで@10,0じゃないんだと思ったかたもいると思うんですが、LFOにも使いたかったのでこんな風にしちゃいました。
LFOとして使う場合、波形の中央が7.5になってしまっているのでちょっと使いづらいんですが、サンプルのように@dを使って上手く調整してもらうといいかと思います。
ここは相当悩んだんですが、結局こうしちゃいました。不満のあるかたにはゴメンナサイ。
FM音源やフィルタと比べると軽いので、いろいろ使ってもらえたら嬉しいなぁ。
GBの場合、1周期をの波形32個、16段階の数で定義することが出来ます。
たとえばこんな波形を鳴らしたいとすると──

0123456789ABCDEFFEDCBA9876543210
というのが、この波形を16進数であらわしたものになります。
16進数が何か分からないひとは、10~15までをA~Fであらわしたものだと思っておいてください。
これを、@10の0番として割り当てるには
#WAV10 0,0123456789ABCDEFFEDCBA9876543210
と書きます。
いまのところ0番から15番まで使えるようになってますが、リクエストがあれば増やしますよ。
これを使うときは
@10-0 CDEFG
のように書きます。
なんで@10,0じゃないんだと思ったかたもいると思うんですが、LFOにも使いたかったのでこんな風にしちゃいました。
LFOとして使う場合、波形の中央が7.5になってしまっているのでちょっと使いづらいんですが、サンプルのように@dを使って上手く調整してもらうといいかと思います。
ここは相当悩んだんですが、結局こうしちゃいました。不満のあるかたにはゴメンナサイ。
FM音源やフィルタと比べると軽いので、いろいろ使ってもらえたら嬉しいなぁ。
« I Hate This Place | トップページ | FlMML - 再生時間表示 »
「ActionScript 3.0」カテゴリの記事
- FlMML - リングモジュレーターとSync(2009.07.26)
- FlMML - ファミコンDPCM(2009.05.16)
- キー入力のレベル、トリガ、リピートを取得(2009.05.06)
- FlMML - エクスプレッション(2009.05.03)
- FlMML - 引数つきマクロ(2009.04.12)
「FlMML」カテゴリの記事
- FlMMLリポジトリの引越し(2011.02.05)
- FlMML - リングモジュレーターとSync(2009.07.26)
- MML対応Twitterクライアント(2009.07.24)
- FlMML - DPCM変換ツール(2009.05.17)
- FlMML - ファミコンDPCM(2009.05.16)
コメント
この記事へのコメントは終了しました。
トラックバック
この記事へのトラックバック一覧です: FlMML - GB波形メモリ音源:
» Web素材/JSMML [Epilogue/LogueWiki (PukiWiki/TrackBack 0.4)]
PrevWeb素材/io.js NextWeb素材/PSGConverter.php HomeUp JSMML 最新版のFLMMLとマージ。このソフトを作るに当たっては、犬大将さんの修正版JSMML.asをベースにしました。 ▲▼オリジナル版JSMMLとの違い ▲▼FLMML側の追加機能 2009/02 GB波形...... [続きを読む]
hi~
i found that the up/down octave command in FLMML is different from other MML as I know.
(such as the MML used in Mabinogi:
> -- to step up one octave
< -- to step down one octave)
which standard i should follow?
its just a slight matter...but
I should alway keep in mind when coding.
Any good ideas?
投稿: civet | 2009.02.02 22:09
Hi.
The problem is it's kind of discussion for a long time.
The way of FlMML is the same as X68000, X1 (they are old models PC made by SHARP).
The way of Mabinogi is the same as PC-8801, PC-9801 (they are old models PC made by NEC).
I think that it is difficult to decide that either is standard.
For this reason, I made the command that reverse it.
Write at the head of MML like this.
#OCTAVE REVERSE
Does that answer you?
投稿: おー | 2009.02.03 01:05
お、ついに念願の波形メモリが来た!
GB波形メモリの仕様は、それで大丈夫です。
しかし、セミコロンや$定義を入れると波形が反映されなかったり音が出なかったりするところを見ると、まだ未完成かな…?
--------
あと、LFO波形にFCノイズ(@l100,50,7c @l100,50,8c)でフリーズです。
投稿: OffGao | 2009.02.05 00:11
わ。いつもありがとうございます。
FCノイズのLFOは試してませんでしたm(_ _)m
セミコロンや$定義というと
$A=05AF;
#WAV10,0 $A$A$A$A$A$A$A$A;
みたいなことをしたいってことでしょうか???
全然考えてなかった・・・。
投稿: おー | 2009.02.05 01:19
すみません、とりあえずフリーズしないようにしました!
いまはLFOの周波数を設定できないんですが、どういう実装になってるのがいいですかね?
widthの周期ごとにレジスタの状態が変わる感じ?
あまり使い道が無いような気もしますが・・・・。
投稿: おー | 2009.02.05 01:40
>#WAV10,0 $A$A$A$A$A$A$A$A;
むしろ、その発想はなかった。
例えば、下のMMLで、末端にセミコロンを入れるだけで、#WAV10の定義を無視したり、間に「$a=c;」と入れるだけでエラーになったりする現象のことです。
#WAV10 0,FF112347 9BCDEEFF FFEEDCB9 75321100
@10-0 CDE
LFOの周波数… 何のことだべ?
投稿: OffGao | 2009.02.05 02:08
これは…!
以下に自分で試してないかがよくわかるバグ…orz
とりあえずセミコロンの件は直したけど今日中にどこまで直せるかなー。
投稿: おー | 2009.02.06 01:23
#WAVのあとにマクロを定義できなかったのも修正。
投稿: おー | 2009.02.06 01:29
@l100,50,7cってやったら50tickごとに音程が変わるようにしたかったんだけど話してたら寝る時間に・・・。
投稿: おー | 2009.02.06 02:06
ありがとうございます。 これでまともに波形メモリ音源が、まともに使えるようになりました。
投稿: OffGao | 2009.02.07 20:39
こちらこそどうもです。
使わないかもしれないけどLFOに@7,@8を使ったとき、widthの値が反映されるようにもなりました。
本当は@4も対応したほうがいいのかなぁ。サンプル&ホールドってやつですよね。あんまり使いどころないけど。
投稿: おー | 2009.02.08 01:49
@L1200,20,4 @E1,0,0,127, 0 O5 @2 C1&C1
@4も対応させてコンピュータ音(?)を作れるようになりました。
投稿: おー | 2009.02.08 22:46
おーさん、はじめまして。ニコニコ大百科のピコカキコでお世話になっているtKというものです。
不具合と言うほどのものではないのですが、ひとつ前のエントリと挙動が変わって困っていることがあるので報告させていただきます。
@4 @E1,0,0,127,0 Q16 @E2,0,16,0,0 @F1,127,0,125 O2 L8 /:16 cr :/
ひとつ前のエントリまでは打音がそろっていたのですが、最新のものでは音量がばらつきます。
お時間のあるときに直していただけるとありがたいです。
投稿: tK | 2009.02.17 00:57
すみません。リビジョンの間違いです><お恥ずかしい・・・
rev.29660から29726にかけて挙動が変化しています。
ご迷惑をおかけしました。これからもご迷惑をおかけしますorz
投稿: tK | 2009.02.17 05:23
はじめまして!
ピコカキコ楽しんでいただいてるようでありがとうございます。
不具合把握しました!
だいたい原因の予想はついてますが、ちょっといまPCを新調して環境を移行中ですので、少々お待ちを・・・m(_ _)m
投稿: おー | 2009.02.19 00:54
のんびりまっていますので、どうか無理はなさらないでくださいね。
・・・と、ここまで行っておいて何ですが、1つだけお願いがあるんです。
TSSでいうところの音量の相対的なアップダウン"("と")"を実装していただきたいのですがいかがでしょう?
投稿: tK | 2009.02.19 19:33
@4ノイズのほうは修正しましたー。
相対音量指定もOK!と言いたいところなんですが、もうひとつ別のやり方も考えてまして。
@v<2 とやったら相対ボリュームアップ
@p<4 とやったら相対パン
みたいのはどうでしょうね?
応用が利いていいかと思ったんですが、冗長ですかね。
両方対応しちゃえばいいのかなぁ。
投稿: おー | 2009.02.21 01:05
相対ボリュームは"~[n]"と"_[n]"で、相対パンは"([n]"と")[n]"でどうでしょう?
ボリュームの変化量については直前にvと@vのどちらを使ったかによって変わるとか。(TSSまんまですが)
投稿: tK | 2009.02.21 16:15
うーん。一緒な部分と違う部分が混在してるとわかりづらいかな、と思いますので、TSSで使われてるコマンドは同じ意味で残しておいたほうがいい気がします。
(既にごっちゃごちゃになってるって話もありますが・・・)
というわけで、”(”と”)”だけとりあえず実装してみましょっかね。
投稿: おー | 2009.02.22 00:38
”(”と”)”だけとりあえず実装してみました。
投稿: おー | 2009.02.22 21:57
相対ボリューム確認しました。今のところOKです。
@4の件もありがとうございました。あの音は割と重要なので助かります。
今回はいろいろとご迷惑をおかけしました。これからもよろしくお願いします。m(_ _)m
投稿: tK | 2009.02.23 00:21
いえいえ。こちらこそ(特に@4の件)ご迷惑おかけしました。
ピコカキコに反映される時期はこちらではどうにもならないので、大百科のピコカキコ要望スレあたりに書き込んでいただければ、と思います。
(書かなくてもグニャラくんはチェックしてくださってるようですが・・・)
投稿: おー | 2009.02.23 00:32
あ、また不具合報告や要望などありましたらよろしくです。
投稿: おー | 2009.02.23 00:33
http://dic.nicovideo.jp/a/fc%E9%9F%B3%E6%BA%90
この記事すごいなー!!
投稿: おー | 2009.02.24 02:09
その記事、もともとそっけない内容だったところにOffGaoさんがかなり手を加えて、現在のものになりました。
でも一部の人にしか理解されてないっぽいです...
投稿: tK | 2009.02.24 18:12
すごいなー。
なんで若いのにあんなにファミコンに詳しいんだろう・・・。
投稿: おー | 2009.02.24 23:52
おーさんはじめまして。
ピコカキコにはいつも楽しませて頂いてます。
FlMMLのソースを拝見したのですが、
定数値の打ち間違い(?)と思われる箇所がありましたのでご報告。
リビジョンは02/28現在最新のものです。
MChannel.as - 48行目(archeさんより)
m_envelope1 = new MEnvelope(0.0, 60.0/127.0, 30.0/127.0, 1.0/100.0);
→ 4番目の引数は「1.0/127.0」?
MTrack.as - 115行目
m_ch.setLFODPWD(e.getLFODepth(), 44010.0 / m_lfoWidth);
→ 44100.0?
上記について、ご確認を宜しくお願いいたします。
投稿: crypt | 2009.03.01 00:09
はじめまして。
ありがとうございますー。
修正しておきました。
ピコ師は丁寧な人が多いなぁ。
投稿: おー | 2009.03.03 00:25
はじめまして、hkrnです。FlMMLをObjective-Cに
移植してみました。まだソースのみでかつ不完全ですが、
ピコカキコにあるMMLはだいたい再現出来ます。
http://svn.sourceforge.jp/svnroot/ocmml/trunk/framework/
(ソースコード)
http://sourceforge.jp/projects/ocmml/
(プロジェクトページ)
本当はiPhone対応もしたいのですが、このコードでは
そのままコンパイルすることが出来ないので、まだです...
使うとしたらOpenAL?
投稿: hkrn | 2009.03.03 23:50
はじめまして。
おおーー。すごいですね!!
こちらの手元では再現できないのが残念ですが、FlMMLのWikiからリンク張らせていただきました。
投稿: おー | 2009.03.04 00:13
予告。再生時間表示するようにします。
投稿: おー | 2009.03.16 01:55
最終音のキーオフから3秒ほど足した時間をトータルの再生時間として表示しますよ。(余韻だったりリリースのことを考えて、余裕をもって再生したいだけです)
困る人がいたらいまのうちに。
投稿: おー | 2009.03.16 02:01
おーさん、こんにちは。
再生時間表示の件ですが、このようなケースはどうなるのでしょう?
@E1,0,0,127,1016 Q1 a16 r1r1r1
あと、この件とは関係ないのですが直していただきたい事が一点。
$LOOP=4;
$A=cdef;
/: $LOOP /**/ $A :/
私としては "cdef cdef cdef cdef" と鳴ってほしいのですが、エラーが出て思った通りに鳴りません。
また、コメント部分を他のコマンドに置き換えると上手くいくようです。
よろしくお願いします。
投稿: tK | 2009.03.16 18:52
すみません、嘘の書き方をしてました。
最終イベント+3秒ですので、この場合は10秒と出ます。
バグの件も調べておきます。ちょっとすぐには時間取れないんですが、報告ありがとうございます!
投稿: おー | 2009.03.18 01:50
で、遅くなりましたが修正したものをコミットしました!
投稿: おー | 2009.03.20 16:20