読者です 読者をやめる 読者になる 読者になる

AcrionScript でからくりショパン

ActionScript3 SiON wonderfl


GIMMICK – FANTAISIE IMPROMPTU | Si+ (wonderfl.net)

SiON v0.652 で MIDI データ読込に対応しました

MIDIデータは、「音楽データとしては圧倒的に容量が小さい」という大きな特徴があります。このため、まだフロッピーがメインの外部記憶媒体だった時代から、ストレージ容量が限られていた時代、ネット回線が細かった時代、携帯電話のインフラが十分でなかった時代、それぞれの時代/場所で少しずつ形を変えながら、しぶとく長く広く普及してきました(今でもカラオケなどの領域では現役です)。
これら MIDI 普及の大きな要因は「圧倒的に容量が小さい」という特徴によるものでしたが、近年では扱える情報量が大きくなったため、このメリットはほとんど得られなくなりました。結果、所詮「楽譜」でしかない MIDI データが録音した音そのものに勝てるわけも無く(これに関しては後述)音楽データとしての役割を終え現在に至ります。
このような背景から「動画配信が主流の時代に、今更 MIDI データ対応とかナイワーwww」と思われがちですが、自分はそうは思っていません。
MIDI データは、上述の経緯から「音楽データ」として扱われていますが、本来は「楽譜データ」です。楽譜データにしか出来ないことはいっぱいあるはずです。今回はこの点について書いてみようと思います。

続きを読む

SiON v0.652 リリース

ActionScript3 SiON


SiON - the AS3 SoftSynth
SiON v0.652 をリリースしました。
主なアップデート内容は、

  • version 0.64 で PCM 音源の拡張
  • version 0.65 で MIDI に対応

です。
これまでの「MML + 音源Chipエミュレータ」という懐古路線はそのままに、「MIDI + PCM音源」というモダン路線を導入して、一気に近代化?を図りました。そもそも v0.64 のリリースをアナウンスしなかったので、v0.64-0.65 で大きく変わった点について、概説したいと思います。

続きを読む

ActionScript で波形メモリ音源向け波形編集ツール

ActionScript3 SiON wonderfl


Wave Shape Editor | Si+ (wonderfl.net)
7ヶ月ぶりに wonderfl りました。ついでに日記は9ヶ月ぶりの更新。今回は、波形メモリ音源向け波形編集ツール、という著しくニッチなモノを作ってみました。
ちなみにSiON ネタは実に1年2ヶ月ぶり。
ほぇー。最近、歳月が過ぎるのが早すぎて困る。
かなりマニアックなネタですが、いざ作って触ってみると波形と音の実験ツールとして中々面白いポテンシャルを持ってそうだと感じました。そこで今回は少し趣向を変えて、いつもの技術ネタではなく、簡単な音実験をしながら操作方法のチュートリアルを書いてみようと思います。

イントロダクション:波形メモリ音源って?

wikipedia:波形メモリ音源
平たく言えば、1周期分の波形データだけ持っておいて音階をつけて鳴らす音源方式です。
演算がシンプル かつ 省メモリで 多様な音が作れたため、1980年代前半のいくつかのアーケードゲーム基板に搭載され、それまで矩形波一辺倒だったゲーム音楽の世界に新たな風を起こしました。またファミコンMSX では、わざわざカードリッジに波形メモリ音源チップを搭載して音楽を鳴らすゲームが登場し、ゲーム音楽の一時代を築きました。以降のハード、ファミコンディスクシステムゲームボーイPCエンジンなどでは波形メモリ音源が標準搭載されており、この時代のゲーム音楽においていかに重要な存在だったかを垣間見ることが出来ます。
MMLTalks にこの時代の波形メモリ音源を使用した力作データが沢山ありますので聴いてみると良いかも知れません。
[BUBBLESYSTEM] | MMLTalks
[wsg] | MMLTalks
[scc] | MMLTalks
1980年代終盤以降における FM 音源チップの台頭によりお役御免となりますが、ゲーム黎明期の名作に数多く使用されたため、懐古的な音楽シーンでは今でもよく使われているようです。

続きを読む

ActionScript で 地形生成 を 4k Byte で

ActionScript3 Stage3D wonderfl


4k fly-through | Si+ (wonderfl.net)


本題の前にちょっと後日談。
前回、擬似屈折率について書きますと書いたのですが、あれから色々検証してみて、投稿したコードに大きな間違えが見つかりまいまして。で、修正して無事まともな Cubemap 擬似屈折ができたんですが、正直、投稿したものよりもリアリティが出ない。何でかなと色々考えてく内に、"擬似"の部分が原因であるという結論にいたりました。
ここまでは良いんですが、問題は間違ってたコードがわりと屈折っぽかったという点。明らかに間違ってるんですが、できればこっちに何とか物理的な意味合いを見出して、新しい擬似屈折アルゴリズムにしたいなー、とかグルグル考えているうちに記事が書けなくなりました。
ここら辺、オチが見えてきたら、また別の投稿で書きたいと思います。


さて、今回はちょっと変化球ということでStage3Dで4kプログラムにチャレンジしてみました。普通4kといえばコンパイル後のバイナリファイルのサイズを指すのですが、最近ではバイナリファイルを介さないLL言語が流行っているため、スクリプト文字数の制限を指す事も多いようです。wonderflではバイナリファイルは実質隠蔽されスクリプトが読めますし、何よりバイナリ最適化はめんどくさいので、今回は4096文字しばりでやってみました。
圧縮表記のテクニックはいっぱいあるのですが、そこを解説しても誰得なので、ここでは地形(テクスチャ)生成、参照、描画に絞って概説を書きたいと思います。
残念ながら、一つ解説するだけで1記事になるような様々な技術を組み合わせて使ってるので、それぞれをあまり深くは書けません。興味のある技術はキーワードを拾っていろいろ自分なりに調べていただければ、と思っています。

続きを読む