●PhrasePlayerの性能
これはPhase2.5から使える機能です。もちろんPhase3でも使えます(と言うかPhase3機は今までのPhaseも動作します)
・Phrase:4和音×4トラック
・AudioPhrase:16和音×1トラック
を同時再生可能です。
全トラックを使えば32和音再生が可能ですが、それをするならMediaPlayerを使った方が楽です。
2音以上の同時再生を行う事が出来る点がPhrasePlayerの特徴です。
●Phraseファイルを作る
再生可能なファイルはspfファイルです。
・フォーマット
通常のMIDIファイルを用意して下さい。
但し、1トラック中に4和音までです。それを越えるとツールで変換できません。
・変換ツールダウンロード場所
YAMAHA SMAF GLOBAL
http://smaf-yamaha.com/jp/
->上のバーのツール
->SMAFオーサリングツールのダウンロード
->ATS-SMAFPhraseL1(ゲームサウンド)
色々なツールが置かれていますが、このツールが一番確実です。
●AudioPhraseファイルを作る
再生可能なファイルはmmfファイルです。
・フォーマット
以下の2種類が可能です。
通常のMIDIファイルで、合計16和音まで
モノラル・16bit・8000HzのWAVファイル
・通常のMIDIからmmf変換
以下のツールで行います。
YAMAHA SMAF GLOBAL
http://smaf-yamaha.com/jp/
->上のバーのツール
->SMAFオーサリングツールのダウンロード
->SSC-MA3-SMAF(着信音)
MIDIファイルがFormat0で無い場合は警告が出て変換出来ません。
その場合は、以下のツールを使ってFoemat1からFoemat0に変換して下さい。
FC10 (Ver.1.0.0)
YAMAHA SMAF GLOBALの同じ場所に並んでいます。
・WAVからmmf変換
以下のツールで行います。
YAMAHA SMAF GLOBAL
http://smaf-yamaha.com/jp/
->上のバーのツール
->SMAFオーサリングツールのダウンロード
->WSC-MA2-SMAF(着信音)
●PhraseとAudioPhraseを同時再生する
公式のAPIマニュアルに再生方法が説明されていますが、言葉で説明されても意味不明です。
本来プログラムの説明とは、以下のようにプログラムを添えて説明するべきです。
//PhrasePlayerライブラリ
import com.jblend.media.smaf.phrase.*;
//PhrasePlayer生成
PhrasePlayer ph_play = PhrasePlayer.getPlayer();
//AudioPhraseトラック取得
AudioPhraseTrack auph_tr;
auph_tr = ph_play.getAudioTrack();
//Phraseトラック取得
PhraseTrack[] ph_tr = new PhraseTrack[4];
ph_tr[0] = ph_play.getTrack();
ph_tr[1] = ph_play.getTrack();
ph_tr[2] = ph_play.getTrack();
ph_tr[3] = ph_play.getTrack();
try{
//AudioPhraseデータ生成
AudioPhrase auph;
auph=new AudioPhrase("resource:1.mmf");
//Phraseデータ生成
Phrase[] ph = new Phrase[4];
ph[0]=new Phrase("resource:1.spf");
ph[1]=new Phrase("resource:2.spf");
ph[2]=new Phrase("resource:3.spf");
ph[3]=new Phrase("resource:4.spf");
//AudioPhraseデータをAudioPhraseトラックにセット
auph_tr.setPhrase(auph);
//PhraseデータをPhraseトラックにセット
ph_tr[0].setPhrase(ph[0]);
ph_tr[1].setPhrase(ph[1]);
ph_tr[2].setPhrase(ph[2]);
ph_tr[3].setPhrase(ph[3]);
}
catch(Exception e){
System.out.println(e.toString());
}
//AudioPhraseトラック再生
auph_tr.play(1);
//Phraseトラック再生
ph_tr[0].play(1);
ph_tr[1].play(1);
ph_tr[2].play(1);
ph_tr[3].play(1);