jojo3.audioの使い方
はじめに
掲示板の方で、jojo3.audioの利用方法について質問をいただきましたので、
サンプルプログラム、audiotestをネタに使用方法をご紹介したいと思います。
解説は、以下の順序で行います。
・プログラミング
・コンパイル
・コンソールでのテスト
・パッケージング
プログラミング
基本的にsun.audioと使用方法は同じです。
wavの再生を行うために、jojo3.audioは以下の手順を推奨します。
(1).AudioStreamに音声ファイルを読み込ませる。
(2).AudioStreamから、AudioDataを取り出す。
(3).AudioDataを引数にAudioDataStreamを作る。
(4).AudioDataStreamをAudioManager.playerにて再生する。
これを適用した例を以下に示します。
赤字の部分が、jojo3.audioに関する記述です。
|
/*
* at.java
*
* Created on 2002/11/29, 9:37
*/
/**
*
* @author jojo3
*/
import jojo3.audio.*; ← jojo3.audio使用宣言
import java.io.*;
import java.awt.*;
public class at extends java.awt.Frame {
static private String AUDIO_FILE = "";
AudioStream as = null;
AudioData ad = null;
AudioDataStream ads = null;
ContinuousAudioDataStream cds = null;
/** Creates new form AudioTest */
public at() {
initComponents();
setFile(AUDIO_FILE);
}
private void setFile(String f) {
try {
AudioPlayer.player.stop(ads);
as = new AudioStream(new FileInputStream(f)); ←(1)
ad = as.getData(); ←(2)
ads = new AudioDataStream(ad); ←(3)
cds = new ContinuousAudioDataStream(ad); ← (3)' 繰り返し演奏用
} catch(IOException e) {
e.printStackTrace();
}
}
〜 中略 〜
private String dirStr = "/home/QtPalmtop/sounds";
private void button4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_button4ActionPerformed
// 処理コードをここに追加します:
FileDialog fd = new FileDialog(this, "audiotest", FileDialog.LOAD);
fd.setDirectory(dirStr);
fd.show();
dirStr = fd.getDirectory();
this.setFile(dirStr + fd.getFile());
fd = null;
}//GEN-LAST:event_button4ActionPerformed
private void button2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_button2ActionPerformed
// 処理コードをここに追加します:
AudioPlayer.player.start(cds); ←(4)' 繰り返し演奏用
}//GEN-LAST:event_button2ActionPerformed
private void button3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_button3ActionPerformed
// 処理コードをここに追加します:
AudioPlayer.player.stop(ads);←演奏のストップ
}//GEN-LAST:event_button3ActionPerformed
private void button1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_button1ActionPerformed
// 処理コードをここに追加します:
AudioPlayer.player.start(ads); ←(4)
}//GEN-LAST:event_button1ActionPerformed
/** Exit the Application */
private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
System.exit(0);
}//GEN-LAST:event_exitForm
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
if (args.length >= 1) {
AUDIO_FILE = args[0];
new at().show();
} else {
System.out.println("usage:");
System.out.println("java at wavfile");
}
}
// 変数宣言 - 編集不可//GEN-BEGIN:variables
private java.awt.Button button1;
private java.awt.Button button4;
private java.awt.Button button3;
private java.awt.Button button2;
// 変数宣言の終わり//GEN-END:variables
}
|
コンパイル
コンパイルは、JDKで行います。
このときに、公開した、jojo3audio.jarが必要になります。
例えば、サンプルであるat.javaをコンパイルするには、以下のようにします(windowsの場合)。
赤字の部分が重要です。
>javac -target 1.1 -classpath .;jojo3audio.jar at.java
[解説]
-target 1.1
SL-A300のPersonal JavaがJava 1.1相当であるために指定します。
こうすることで、バージョンの高いJDKでも過去のバージョンに対応するクラスを生成出来ます。
-classpath .;jojo3audio.jar
jojo3audio.jarをat.javaと同じディレクトリに入れている時の記述です。(違うディレクトリの場合はフルパス指定してください)
jojo3.audioのクラスを使用するには、これらをまとめたjojo3audio.jarをクラスパスに加え、
コンパイラにjojo3.audioの使用を教えてあげる必要があります。
#指定しないと、コンパイルが通りませんよ〜
コンパイルしたクラスは、jarにまとめておくと便利です。
サンプルでは、以下のようにしてクラスをaudiotest.jarにまとめています。
>jar -cvf audiotest.jar *.class
コンソールでのテスト
コンパイルが済んだら、いよいよSL-A300での実験です。
実験には、ターミナルソフトが必要ですので、まだの人は入手しましょう。
テストは以下の手順で行います。
パッケージング
テストが済んだら、最後はパッケージングでインストールできる状態にします。
パッケージの仕方については、他の方のページで詳しく紹介されていますので、そちらをご覧下さい。
ここなどがオススメです。(mabさんのipkgにはまるのページ)
ここでは、サンプルのパッケージに必要なファイルを紹介します。
サンプルでは、パッケージファイルの構成は図1のようになります。
図中の黄色の字のように、アプリケーション名に従って、
ファイルの名前を付けておくといろいろ便利です。

図1.パッケージ構成図
サンプルのパッケージングに必要なファイルは以下の通りです。
| control
|
|
Package: java-audiotest
Installed-Size: 20k
Filename: ./java-audiotest_0.95_arm.ipk
Section: java
Maintainer:
Architecture: arm
Version: 0.95
Description:
|
| audiotest.desktop
|
|
[Desktop Entry]
comment=jojo3.audio test program
Exec=runaudiotest
Icon=audiotest_icon
Type=Application
Name=audiotest
|
jojo3.audioに関する設定は、実行スクリプトファイル(サンプルでは、runaudiotest)に記述します。
これは、SL-A300でアイコンをクリックした時に実行されるものです。
赤い字の部分がjojo3.audioに関する記述です。
| runaudiotest
|
|
. /home/QtPalmtop/bin/installdir.sh #set INSTALLDIR
cd $INSTALLDIR/java/audiotest
$QPEDIR/bin/evm -XappName=runaudiotest -cp jojo3audio.jar:audiotest.jar at /home/QtPalmtop/sounds/alarma300.wav
|
パッケージングは、windowsでも出来ますが、いろいろとツールなどを集めなくてはならないため、非常に面倒です。
ですので、私は、以下の様なスクリプトを使って、SL-A300上でパッケージングしています。
| mkipkg
|
|
#sh
cd $1
tar -cvf control.tar ./control
gzip control.tar
tar -cvf data.tar ./home
gzip data.tar
tar -cvf xxx.tar ./control.tar.gz ./data.tar.gz
gzip xxx.tar
mv xxx.tar.gz ../java-$1_$2_arm.ipk
|
mkipkgスクリプトのあるディレクトリの下に、上の図1のように環境を作ります。
そこから、ターミナルで
>sh mkipkg アプリケーション名 バージョン
を実行すると、パッケージングファイルが作成されます。
ただし、図1のような、アプリケーション名に基づいたファイル構成にしておく事が前提です。
さて、これで、プログラミングから、パッケージングまでの解説は終わりです。
私自身、わかりやすく書けたかどうか、あまり自信がありませんので、
ご感想、ご要望などは、掲示板にどんどんお願いいたします。
なるべく、改善していきたいと思います。
それでは、みなさま、良い作品を!