音声音楽スポンサーリンク前回作ったサインオシレーターを使って音声ファイルを作ります。以前矩形波の音声ファイルを作成したのでこのロジックを流用したいと思います。InputStreamのサブクラスとして作っておけばAudioSystemの書き出しメソッドでファイルに書き出してくれるのでした。始める前に以下の記事を読んでおいてください。矩形波を作成した時には内部でオシレーターがするべき計算もしていましたが今回は別にオシレーターを作っているのでフィールド値は少なくなります。volume;このうち固定の周波数の変数freqと秒数の変数secondはコンストラクタで取得します。可変配列のlistはバイト情報を保持するバッファです。コンストラクタ引数はそのままフィールドに取り込みます。他初期化では以下のことをしています。SineOscillator(sample_rate);}readメソッド次にInputStreamで実装されるべきreadメソッドの修正を行います。矩形波の時から少しだけ変更して以下のようにしています。volume);の部分です。矩形波のときにはオシレーターがするべき計算ロジックが入っていたのですがここでは1行だけになります。今後周波数やボリュームが順次変わっていくようなサイン波を作りたい場合はこのあたりを変更することになります。mainメソッド最後に処理を呼び出す側のmainメソッドを作ります。これも矩形波の作成ロジックとほぼ同じです。File("/Users/myaccount/mywork/sine_440.wav"));}出力結果の確認これを実行します。ファイルはwavフォーマットですがこのサンプルはサイズ節約のためmp3に変換しています。http://mocha-java.com/wp-content/uploads/2016/11/sine_440.mp3またこの波形を表示すると以下のように見えました。wavファイルの波形を表示させる(3)コード最後にコードを載せておきます。クラスのオプティマイズ(2)wavファイルを書き出すクラスをもう少し改良します。今まではこのクラスのなかでオシレータや周波数マップをもとに自前で書き出す音量を計算してい...記事を読むテキストファイルの読み込みをメソッドにする以前テキストファイルの読み込み処理を作りました。main関数に直接書いただけであったのでメソッドにして再利用できるようにしたいと思いま...記事を読むIIRローパスフィルタの作成(3)前回作ったのはフィルターのロジック部分ですが今回はこれをコントロールするクラスを作ります。遮断周波数やクオリティファクターを変えると音色も変...記事を読むwavファイルの調査(1)Javaで読み込むwavファイルを解析します。wavファイルを読み込むにはAUdioInputStreamというオブジェク...記事を読むJavaでの実装:平均律クラヴィーアBWV846プレリュードここまでいろいろ実装してきて楽曲の記述に集中できるようになりました。始めたのでこのバッハのプレリュードを完成させたいと思います。...記事を読むwavファイルの波形を表示させる(3)wavファイルの内容を表示するプログラムを作っています。今の所「ウインドウの表示とグラフ領域の描画」「wavファイルからのデータ取得」までで...記事を読むカンタータ『主よ、人の望みの喜びよ』を聴くおそらくバッハの一番有名なカンタータの曲は『主よ、人の望みの喜びよ』という合唱曲でしょう。今日はこの曲を聴きます。この曲はJ...記事を読むファイルを選択するユーティリティーを作る(2)前回再帰的なメソッドの呼び出しを利用してディレクトリの階層のどこかにあるファイルを選択するメソッドを作成しました。欲しい機能が二つあ...記事を読むJavaとMIDI:トラックの編集ツールを作る(1)時間の管理ができるようになったところでMIDIメッセージをもっと簡単に設定できるようにしたいと思います。下のコードを...記事を読むクラスの継承について似たような機能を持っているけれど少しずつ違うクラスを作りたい、という時にはクラスの継承を考えます。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。(必須)サイト%d人のブロガーが「いいね」をつけました。