\documentclass{jarticle}ではなく,
\documentstyle{jarticle}で始まるように書かれているものもある.これは,古いバージョンのLaTeX用のコマンドで,多くのドキュメントは,このように書き換えても問題ないのだが,6/7の課題のように,
\usepackage{graphics}というコマンドを使う場合は,
\documentclass{jarticle}の方を使う必要がある.
0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 6500 7000 7500 8000 8500 9000 9500 10000 10500のような1行に1つの数字(-32768(-216)から32767(216-1)の範囲)が並んだテキストファイルを作成しt.txtという名前で保存する.
/home08/ktanaka/bin/txt2wav.pl t.txt > t.wavを実行すると,それぞれの数字にあたる出力を1/44100秒に一個モノラルで出力して, 5秒繰り返す音楽ファイル t.wavが作られる.以下の図のような波形をしている.
これをFinderからダブルクリックするか, openコマンドでopenするとQuicktimeが立ち上がって,ヘッドホンから音を聞くこと ができる.上の数値データは22行が繰り返されるので,44100/22で約1000Hzとなり, H(シ)の音が近いことが分かる.下に関連リンクをあげる.
class makeSin{ public static void main(String[] args){ int i; int hz=440; for(i=0;i<44100/hz;i=i+1){ System.out.println(10000*Math.sin(i*2*Math.PI*hz/44100)); } } }ここで,
javac makeSin.javaでコンパイルした後,
java makeSin > sin.txt /home08/ktanaka/bin/txt2wav.pl sin.txt > sin.wavあるいは,
java makeSin | /home08/ktanaka/bin/txt2wav.pl > sin.wavを実行してできたsin.wavをFinderからダブルクリックするか, openコマンドでopenするとQuicktimeが立ち上がって,ヘッドホンから音を聞くこと ができる.
class makeHarmony{ public static void main(String[] args){ int i; double hz1=440; double hz2=554.37; double hz3=659.25; for(i=0;i<44100*5;i++){ System.out.println(5000*Math.sin(i*2*Math.PI*hz1/44100)+ 5000*Math.sin(i*2*Math.PI*hz2/44100)+ 5000*Math.sin(i*2*Math.PI*hz3/44100) ); } } }
今日の課題はないが,プログラミング全体の課題の中に,上で紹介したような音声データファイルを出力プログラムの作成(指定された音を出すのではなく,自由なテーマで10秒以内)を含める予定なので,いろいろ試してみるように.