SiON

2009年8月23日 (日)

SiONを使ってみる。 その6(音にエフェクトをかける)

Q




















大絶賛SiONで遊ばせてもらってます。

今回は、エフェクトを使ってみます。

SiONには、「SiEffect○○○」みたいな名前でたくさんの音用のエフェクトが用意されています。

今回は、前回のやつに「SiEffectStereoReverb」というエフェクトをかけてみました。

とりあえず、サンプル(注:音出ます! ソースは右クリック)。

前回までかけてたフェードインアウトは外してあります。

響いたような感じでカッコよくなったと思います。





エフェクトの簡単な使い方。

// エフェクトの用意
var effect:SiEffectStereoReverb=new SiEffectStereoReverb();

// エフェクトの初期化
effect.initialize();

// ドライバのエフェクタの初期化
driver.effector.initialize();

// エフェクトを追加
driver.effector.connect(0, effect);

// 再生開始
driver.play(mainMelody, false);

これだけ。

手探りで作ってみたけど、エフェクトの使い方これであってんのかな。

| | コメント (0) | トラックバック (0)

SiONを使ってみる。 その5(カスタムフェードを使ってみる)

P_4




















絶賛SiONで遊ばせてもらってます。

前回、フェードインフェードアウトをやってみたんですが、SiONにはフェードインなどの効果を自分で作れるfaderってのが入っています。

同梱されているサンプルソースにカスタムフェードのサンプルがあったので、参考にしながらやってみました。

とりあえず、サンプル(注:音出ます! ソースは右クリック)。

前回とちょっと音も変えてあります。

基本はサンプルのをほぼ流用させてもらったわけですが・・。




今回は、ローパスフィルターを使ったフェードインアウトをやってます。

ローパスフィルターってのは要は低周波(低音)を通すフィルタです。

これを使って低音から徐々に音を通すようにすると、普通のフェードよりかっこいいのが出来ると。

カスタムフェードの使い方は、

// ローパスフィルターの用意
var lpf:SiCtrlFilterLowPass=new SiCtrlFilterLowPass();
// 初期化
lpf.initialize();

って、使いたいフィルタを初期化して(今回はサンプルと同じローパスフィルタを使ってます)、

// ドライバのエフェクタの初期化
driver.effector.initialize();
// 0番目のスロットに、フィルタを追加
driver.effector.connect(0, lpf);

ドライバにセットして、

// フェードの実行
// フェーダー中に実行する関数、フェードする範囲と、時間を設定。
// 「n * 44100 / 2048 」でn秒らしい(サンプルより)
fader.setFade(fadeLPF, 0, 1, 8 * 44100 / 2048);


// フェーダーから呼ばれる関数
private function fadeLPF(v:Number):void
{
   // フィルタの範囲を設定
   lpf.control(v, 0.5);
}

みたいにfaderを実行して終わり。

注意点としては、再生するときは「driver.play(mainMelody, false);」みたいに第2引数を設定してあげないといけない。

なんという簡単仕様。すごいなSiON。

ローパスフィルタのフェードアウトがすごくかっこよくてお気に入りです。

| | コメント (0) | トラックバック (0)

SiONを使ってみる。 その4(フェードインとフェードアウト)

P_4





















絶賛SiONで遊ばせてもらってます。

今回は、音のフェードインとフェードアウトを行います。

前回のを改造。

とりあえず、サンプル(注:音出ます! ソースは右クリック)。




方法は非常に簡単。

フェードインをしたい場合は、

// 7秒かけて、フェードイン
driver.fadeIn(7);

みたいに書くだけ。



フェードアウトは、フェードアウトしたいタイミングで、

// フェードアウトを実行する関数(7秒かけてフェードアウト)
private function onFadeOut():void
{
   if (!driver.fader.isActive) driver.fadeOut(7);
}

みたいな関数を実行すればいいだけ。

非常に簡単に出来てしまいます。

ただ、フェードアウトの時にちょっと注意。

フェードアウト終了時に音の再生を終了したい場合は、

// フェードアウトにあわせて音を止める
driver.autoStop=true;

として、autoStopプロパティを設定しておかないといけない。

これをしないとフェードアウト終了時にもとの音量に戻ってしまう。

これだけ気をつけないといけないかな。




ちなみに、今回は使ってないですが、「SiONEvent.FADE_PROGRESS」、「SiONEvent.FADE_IN_COMPLETE」、「SiONEvent.FADE_OUT_COMPLETE」のようにフェードインフェードアウトに合わせたイベントも用意されてました。

どんだけ至れり尽くせりなライブラリなんですか、SiONさん。


| | コメント (0) | トラックバック (0)

2009年8月22日 (土)

SiONを使ってみる。 その3(音色を変えてみる別バージョン)

P_2_2




















絶賛SiONで遊ばせてもらってます。

前回、音色の変更をやってみたんですが、別な方法を見つけました。

というか、多分こっちの方が正規な方法の気がする。




方法としては、

// 音色を変更
var presetVoice:SiONPresetVoice=new SiONPresetVoice();
var voice:SiONVoice=presetVoice["valsound.piano3"];
driver.setVoice(0, voice);

みたいに、setVoiceで音色をセットする。

そのあとMMLのコマンドで、

var str:String="";
str+="%t0,1,1 t100 %6@0cdefedcr %6@0efgagfer %6@0crcrcrcr l8 %6@0ccddeeff l4 %6@0edc;";

みたいに、音を変更したい部分に「%6@0」を追加する。

@0の0が、setVoiceで指定した番号。だから、番号変えて色々な音をセットできる。

%6ってのはモジュール番号らしい。この部分だけよく分かっていない。後で調べる。

あとは、普通にplay()してあげれば音色の変わった音が出る。

sequenceOnメソッド使わなくても音色変更出来た。




一応サンプル(注:音出ます! ソースは右クリック)。

前回のより何かテンポが遅くなった。

やっぱMMLをある程度理解しないといけないっぽいなぁ。



---------------------------------------------------------------------
(追記)

setVoiceの場所ですが、driverに対して行うのではなく、driver.compileメソッドから受け取ったSiONData型の変数に対して行った方がいいみたいです。

今回のサンプルでいうと、

「driver.setVoice(0, voice);」  →     「mainMelody.setVoice(0, voice);」

にした方がいいかもってこと。

このほうが各SiONData型の変数に対して音色の設定ができるのかな。

| | コメント (0) | トラックバック (0)

SiONを使ってみる。 その2(音色を変えてみる)

P_2




















絶賛SiONで遊ばせてもらってます。

今回は音色を変更してみました。

前回作ったやつの音をピアノに変更してみました。

こんな感じ(注:音出ます! ソースは右クリック)。





SiONには、プリセットで色々な音色が入ってます。

音色の変更方法としては、

// compile() メソッドであらかじめ SiONData を作っておく
mainMelody=driver.compile(str);

// 音色を変更
var presetVoice:SiONPresetVoice = new SiONPresetVoice();
var voice:SiONVoice = presetVoice["valsound.piano3"];

// 再生開始
driver.play();
driver.sequenceOn(mainMelody, voice, 0,0,0);

みたいにプリセットの音を指定して、再生。

本来sequenceOnメソッドは、別に再生してあるMMLと連携しながら再生するためのものなんで、使いどころ間違ってるかもしれないけど。

とりあえず、ちゃんと音は変わってくれた。

プリセットはいろいろあって、この辺は検索すれば色々出てきそう。

| | コメント (0) | トラックバック (0)

SiONを使ってみる。

P




















先日知った、SiONというライブラリを使ってみることにしました。

いわゆる、音を扱うライブラリで、MMLを利用した音楽再生などが出来ます。

ちなみに、自分はMMLというのも初めて知りました。

MMLとは、「Music Macro Language」の略で、コマンドの様に書いていってそれで音を作成します。

今回はとりあえず、MMLで「かえるの歌」でもやってみました。

こんな感じ(注:音出ます! ソースは右クリック)。




基本的には、

var str:String="";
str+="%t0,1,1 t100 cdefedcr efgagfer crcrcrcr l8 ccddeeff l4 edc;";
str+="%t0,1,1 t100 rrrrrrrr cdefedcr efgagfer crcrcrcr l8 ccddeeff l4 edc;";
str+="%t0,1,1 t100 rrrrrrrr rrrrrrrr cdefedcr efgagfer crcrcrcr l8 ccddeeff l4 edc;";

みたいな感じでMMLのコマンドを文字列で書いていって、

// ドライバ
var driver:SiONDriver=new SiONDriver();

// MMLデータを保持
var mainMelody:SiONData;

// データをコンパイル
mainMelody=driver.compile(str);

// 再生
driver.play(mainMelody);

みたいな感じで再生する。

あっさり。

苦手だった音のプログラミングがあっさり出来てしまった。

しかも音との連携もあっさり出来る(noteOnが音のなり始め、noteOffが音のなり終わり。多分だけど。)。

SiON・・・恐るべし!



まだMMLのこととがよく分からないし、もうちょっと遊んでみよう。



------------------------------------------

(追記)

noteOnなどのイベントに関して、詳しい記事を見つけたので。

こちらの方がすごく詳しくかいてあって参考になります。

SiONをやってみよう・・・基本編2:イベント・トリガー - logicalyzeblog

| | コメント (0) | トラックバック (0)