音声音楽スポンサーリンク前回作ったサインオシレーターを使って音声ファイルを作ります。以前矩形波の音声ファイルを作成したのでこのロジックを流用したいと思います。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)コード最後にコードを載せておきます。ミナ・ベルジェJavaでサイン波のオシレーターを作成するJavaで矩形波のオシレーターを作る関連記事wavファイルの音量最大化(2)今まで作ったものを組み合わせてファイルの最大化ツールを作りました。今回作ったツールの結果です。上が最大化後、下が最大化前で...記事を読むJavaとMIDI:トラックの編集ツールを作る(1)時間の管理ができるようになったところでMIDIメッセージをもっと簡単に設定できるようにしたいと思います。下のコードを...記事を読むJavaとMIDI:音階を定義する前回音階の仕組みをみたところでこれをクラスにしたいと思います。音階クラスとは何かを決めたいと思います。...記事を読むファイルを選択するユーティリティーを作る(1)ファイルのリスト表示と連想配列の選択ユティリティーを利用してファイルを選択するユーティリティーを作りたいと思います。サブディレクトリ...記事を読むレコードをBluetoothで聞く方法レコードをBluetoothを経由してスピーカーやヘッドフォンから聞く方法を紹介します。最近ではBluetooth対応のプレーヤーがあるよう...記事を読むJavaによる録音:内部の音を録音する(1)ここまでで外の音を録音する事が出来るようになりました。PCでなっている音、つまりスピーカーから出ている音と同じものを録音するには工夫が必要で...記事を読むJavaとMIDI:シーケンスにテンポを設定する(2)では実際にテンポ指定をしてシーケンスを演奏するコードを書いていきます。シーケンスを作ります。解像度は480にしてあります。...記事を読むモノラルからステレオに変換する(1)パンを設定するにあたって時間によってパンの位置を変えたいため設定を保持するクラスをまず作ります。以前周波数を時間で変化させるための周波数マッ...記事を読むJavaとMIDI:音色を変更する(2)前回プログラムチェンジメッセージによって音色を変える方法を見ました。次にサウンドバンクを変更することによって音色をかえる方法を見ていきます。...記事を読むJavaとMIDI:入出力先デバイスの取得MIDI情報の読み込み先や書き出し先はMidiSystem.getMidiDeviceInfoというスタティックメソッドで取得できます。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。外国語としてのJavaと音楽%d人のブロガーが「いいね」をつけました。