小物をちょちょーっと作ろう思った。
大学の課題で、10秒間隔で細かいほげほげな運動して、ほげした回数とかを人間のサイクル時間とかそんな観点で考察してメールで提出しろ、的なのがあるんですけど。説明下手だな俺は。で、10秒間のアラームを何十回か鳴らす必要があってだ。そんな限定用途な機械持ってねえから、ここにおわす汎用計算機で音出そうと思ったわけですよ。
UNIX者だったら、こういうのはコマンドの組み合わせでやっちゃうんだろうなあ。
俺はあんましそういうのはわからんので、そうだ Java でやろう、とか思った。家の Windows 機でも大学の Linux 機でも動かしてえし。
import javax.swing.*; import java.awt.*; import java.net.MalformedURLException; import java.applet.*; import java.net.URL; import java.util.*; public class SoundLoop{ String wav = "10sec.wav"; AudioClip loopClip; URL url; public SoundLoop() { try { url = new URL("jar:file:" + System.getProperty("user.dir") + "/SoundLoop.jar!/"+wav); } catch (MalformedURLException e) { System.err.println(e.getMessage()); } loopClip = Applet.newAudioClip(url); loopClip.loop(); } public static void main(String s[]) { JFrame f = new JFrame("SoundLoop"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); new SoundLoop(); f.setSize(new Dimension(400,100)); f.setVisible(true); } }
SoundLoop.jar という Jar ファイルに纏めて使うこと前提。持ち運びが便利になるから。
10秒の長さの wave をループ再生するだけという手抜き。手抜きというか俺の実力が。このフレーズ見覚えあるなあ。
あの講義で「n秒間隔でほげして回数を数えて……」的な課題がやたら多かったら、その辺設定できるようにする。かも。しないなたぶん。えーとまあ loop() じゃなくて start() にして、sleep とか wait とか、きっとそんな名前のメソッドとか探せばいいんだよなきっと。
まあ、どうせ使い捨てプログラム。
こんなん書いて満足しかけてた。違う。これを使って運動性能をチェックするのが目的だった。
やった。腕がすこしだるだる。
結果を最小二乗法でプロットしてほげれ、とか書いてあった。正真正銘の書き捨てプログラムでいいかげんに求める。できた。おしまい。おしまいじゃないな。考察とかなんも書いてねえや。まあ、明日の18時までだから平気。
どうでもいいけど、javadoc の java/net/JarURLConnection.html に誤訳あるなー思った。
ふと、今見てたのは Java5 のドキュメントだったな思って Java 6 のドキュメント見たら修正されてた。すげえなあ、 Sun。そこまで細かい直しまでやってんのか。