音声音楽スポンサーリンクwavファイルの内容を表示するプログラムを作っています。今の所「ウインドウの表示とグラフ領域の描画」「wavファイルからのデータ取得」までできました。今度はこれらを結びつける処理を作ります。前回処理だけ書いたのでこれをメソッドにしておきます。ファイルの情報と取得するサイズを引数で指定してデータを可変配列で取得できるようにします。データの他にサンプルサイズも取得しておきます。縦方向の座標の調整のために最大値を求めるにはサンプルサイズが必要です。ここではWavDataというクラス内クラスを定義しています。sample_size;}注意が必要なのはこのファイルで取得するwavデータはモノラルしか想定していないということです。ステレオであれば一つおきにデータを取るか描画を左右別々にするなど考慮が必要です。これは後々必要な時に心配することにします。前々回横800ピクセル縦600ピクセルのパネルにグラフ領域を作りました。グラフ領域が余白が10ピクセルずつ上下左右につきます。1391個の点が必要です。x座標は0番目のデータの座標が10でその次が12になります。for分を使って繰り返しを行います。2);i++){x座標は次のように求めます。2;縦方向を考えると最大値の座標が10で最小値の座標が590で無音を表す中央が300になります。実際の値はサンプルサイズにより変わってきます。32767.0の範囲でしたので最大値を計算で出します。1;y座標は0の地点から(音量/最大値)の分をマイナスします。パネルのY座標は数値が増えるほど下に行くので注意が必要です。max);xとyの座標が求まりました。同じように次の値を元にのxとyの値を求めて線を引きます。y2);実装する今までの処理をまとめると次のようなコードができます。}}これを実行すると次のようになウインドウが出てきます。矩形波の様子が表示されました。このコードはまだまだ改善の余地がありますがひとまずwavファイルを読み込みグラフを表示させるところまではできました。ミナ・ベルジェwavファイルの波形を表示させる(2)調律の話(1)関連記事Javaで矩形波のオシレーターを作る前回サイン波のオシレーターをつくりました。矩形波もファイルは作りましたがファイル作成ロジックとオシレータ部分が混ざった状態で作っていました。抽象クラスはそれ自体はインスタンスが作られることはありません。日常生活で数を数える時は1、2、3と数えますが、Javaは最初のものを0として0、1、2と数えます。丁寧に説明...記事を読むテンポと拍子から時間を計算する前回は小節と拍から演奏する音符の位置を拍の単位で取得することができました。今度はその拍を元に開始からの時間を求めるようにします。wave「四角い波」といいます。図で見るとこのような形になります。音量は一定時間ごとに最大値と...記事を読むJavaとMIDI:シーケンスにテンポを設定する(1)シーケンスを作って音を鳴らすことができました。今回はテンポを設定して演奏の速さを変えたいと思います。曲の速さを表すのに...記事を読むJavaでの実装:平均律クラヴィーアBWV846プレリュードここまでいろいろ実装してきて楽曲の記述に集中できるようになりました。始めたのでこのバッハのプレリュードを完成させたいと思います。...記事を読むテキストファイルの読み込み今までターミナルまたはプロンプトと呼ばれる標準入出力を使って情報のやり取りをしました。Canonを演奏したいと思います。ここではオリジ...記事を読むクラスの継承について似たような機能を持っているけれど少しずつ違うクラスを作りたい、という時にはクラスの継承を考えます。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。外国語としてのJavaと音楽%d人のブロガーが「いいね」をつけました。