11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

FlashAdvent Calendar 2015

Day 8

AS3 のサウンドマネージャのライブラリを作ってみました

Last updated at Posted at 2015-12-09

前置き

自分は相変わらず仕事で AS3 を使っているのですが、その中でサウンド管理機能が必要になったため、ライブラリを作ってオープンソースとして、初めて GitHub に上げてみました。AS3 でサウンドマネージャライブラリって幾つかあるにはありますが、ちょっと自分の想定していた感じではなかったので、勉強がてら作ってみました。

まぁもしよろしければご使用頂ければ有り難いかなと思いますので、紹介など軽く。

SoundConductor

このライブラリは、主にゲーム関連での実装を想定されています。特に目玉となるのは「イントロ付き無限ループ機能」です。

ゲームでよくありますよね。最初はイントロから始まり、後は A メロ、B メロ、C メロとかだけで構築したいっていうの。たとえば、FinalFantasy の初期のバトル曲とか、最初のベースがソロでイントロを奏で、それ以降はイントロ以外のところをループします。そんなことが可能になるわけですね。

こちら、SoundGenerator 機能を使用しているため、バイト単位でループを構築できるので、サウンドのつなぎ目が(ちゃんと時間設定すれば)綺麗につながるというものです。まぁ案外 Flash のサウンド系ライブラリには無かった機能だと思うんで、気になる方は使って頂ければと思います。

デモ

それ以外の機能とか使い方とかは、Github の方に書いちゃっているので、簡単なデモを。(作りこむ時間がないので簡素ですみません
Demo

音楽素材は「Wingless Seraph」さんより、「Battle for Honor」という曲を拝借しました。
http://wingless-seraph.net/

1 ループ 50 秒ほどの BGM を延々とループさせるだけのものです。一番上はマスタボリューム系のパネル、次の通常のサウンド機構を使用したループ、最後に SoundConductor の「イントロ付き無限ループ機能」のデモとなります。

普通の Sound クラスを使用したループは、最後まで再生した上でループさせるだけですので、綺麗に繋がるわけではなく、更にはループの際に瞬無音状態が入ってリズムがつっかかってしまいます。
ですが、SoundConductor の「イントロ付き無限ループ機能」を使用すると、アラ不思議、綺麗に繋がりますねー。ちゃんと、2回目以降のループはイントロが付いてないですね。スライダを見ていただくと、半分あたりから最初らへんに戻るのが確認できるかと。
(あ、ちなみにスライダにシーク機能はつけていません。御了承ください。)

その他の機能

その他、以下の機能がありますので、詳細は Github を参照してください。多分ゲームに良くある機能は最低限網羅しているかと思います。

  • サウンドのグルーピング機能
  • ボリュームのフェードイン・アウト
  • 「マスターボリューム」「グループボリューム」、そして「音そのもののボリューム」を使用した多段性のボリューム調整機能
  • ポーズ・リジューム機能

フィードバックとかあれば頂ければと思いますので、宜しくお願いします。

追記

デモ作ってたら、バグがありましたので、調査予定です(バグ修正完了しました
・個別のミュート機能
・「SoundPlayType.SINGLE_SOUND_GENERATOR」での初期ボリュームが最大

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?