音声音楽スポンサーリンク平均律クラヴィーアBWV846プレリュードの最後の和音をアルペジオのように少しづつずらして各音を鳴らすことがありました。和音をならす処理が洗練されていなかったのでここに手を入れます。前回の実装をまず見てみましょう。0.5);単音をならす前にsetBeatメソッドを使って拍の微妙な位置調整をしてから演奏していました。これを一度の処理でできるように新規にメソッドを作りましょう。大体以下のようなメソッドを作ろうと思います。演奏者クラスに和音を鳴らすメソッドを追加するメソッドには演奏する音を配列で渡すアルペジオにかかる時間tをメソッドに渡す時間tが正の場合には最初の音は時間通りに、最後の音は時間t後に演奏される時間tが負の場合には最初の音は時間t前に、最後の音は時間通りに演奏される実装する和音notesは配列でアルペジオ時間は引数の最後に指定します。他の引数、音の長さdurationと長さの比率ratioと音の速さvelocityは単音を演奏する時と同じです。{音の数分繰り返しをします。notes.length;i++){配列の長さが2以上の時に以下を行います。1の時に実行すると0乗算が発生するためです。アルペジオ時間が正の場合は最初の音が指定の時間通りに、最後の音がアルペジオ時間後になるようにします。負の場合には最初の音がアルペジオ時間前に、最後の音が時間通りになるようにします。}}始まりの時間を上で計算した通りにずらします。音の終わりは変更はなく全ての音が同時に鳴り止むことになります。velocity));}全ての処理が終わったら音の長さぶん演奏者の時間を後ろにします。これは単音のときと同じです。duration;}次回通奏低音のサンプル演奏をします。ミナ・ベルジェパッヘルベルのカノンと通奏低音(1)パッヘルベルのカノンと通奏低音(3)関連記事テキストファイルの読み込みをメソッドにする以前テキストファイルの読み込み処理を作りました。wave「四角い波」といいます。図で見るとこのような形になります。音量は一定時間ごとに最大値と...記事を読むJavaとMIDI:時間情報を管理する(2)以前作った拍子を管理するクラスTimeSignは「何小節目の何拍目」かを入力すると「開始から何拍目」であることを返すように作られていました。...記事を読むwavファイルの音量最大化(2)今まで作ったものを組み合わせてファイルの最大化ツールを作りました。今回作ったツールの結果です。上が最大化後、下が最大化前で...記事を読むファイルを選択するユーティリティーを作る(2)前回再帰的なメソッドの呼び出しを利用してディレクトリの階層のどこかにあるファイルを選択するメソッドを作成しました。欲しい機能が二つあ...記事を読む10進数以外の数字を扱うコンピュータ言語では10進数以外には2進数、8進数、16進数などがよく使われます。Javaでも数字リテラルといい直接これらの数字を表現する方...記事を読むSeleniumで翻訳機を作る(2)引き続きSeleniumとGoogle翻訳というページを使って翻訳機を作っています。Google翻訳は以下のリンクにありますので使ってみてく...記事を読むwavファイルの波形を表示させる(3)wavファイルの内容を表示するプログラムを作っています。今の所「ウインドウの表示とグラフ領域の描画」「wavファイルからのデータ取得」までで...記事を読むJavaで矩形波のオシレーターを作る前回サイン波のオシレーターをつくりました。矩形波もファイルは作りましたがファイル作成ロジックとオシレータ部分が混ざった状態で作っていました。...記事を読むLFOによる周波数の変調(2)前回オシレーターの読み込みクラスに周波数変調ができるような改修をしました。今回はこれを使って音を出したいと思います。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。外国語としてのJavaと音楽%d人のブロガーが「いいね」をつけました。