音声音楽スポンサーリンク前回サイン波のオシレーターをつくりました。矩形波もファイルは作りましたがファイル作成ロジックとオシレータ部分が混ざった状態で作っていました。ここではオシレーター部分を分けたいとおもます。ここでの狙いはサイン波のオシレータと矩形波のオシレータを必要に応じて付け替えられるようにできることです。このためまずオシレータであることを担保するインタフェースから作りたいと思います。インタフェースの定義インタフェースは「なにができるか」を定義します。このため英語で命名する場合は「〜できうるもの」を意味する語尾-ableを動詞の後ろにつけます。オシレーターはoscillate「リズムを持って揺らす」という動詞から来ています。今回のインタフェースはこの動詞に-ableをつけてoscillatableという名前にします。これは通常の英単語ではない造語ですが通常の英語の知識があれば理解されうる単語です。サイン波で実装したreadメソッドは矩形波でも同様に使えるものなのでこれをインタフェイスで定義するメソッドとします。先ほどのインタフェースを実装implementします。0;}今回はsin関数は使いません。サンプル周期tを求めます。サンプル周期とはサンプリング周波数の逆数です。delta_tが何周期目かを表します。1Hzの周波数であれば1秒後に1になりますし100Hzであれば0.01秒後に1になります。1周に満たない位置は小数点以下で表されます。readメソッドの実装1周期の前半の音量は1、後半を-1とします。上記のdelta_tの小数点の部分を求めそれが0.5未満であれば1、そうでなければ-1とします。その値に引数のボリュームを掛け合わせた結果を返します。volume;}次回はこのオシレータを使ってファイルを出力する処理を書きますコード今回作ったコードです。ミナ・ベルジェサインオシレーターを使ってサイン波の音声ファイルを作成するJavaで矩形波のWavファイルを作成する(3)関連記事ファイルを選択するユーティリティーを作る(2)前回再帰的なメソッドの呼び出しを利用してディレクトリの階層のどこかにあるファイルを選択するメソッドを作成しました。欲しい機能が二つあ...記事を読む標準入力からオプション選択を取得するユーティリティを作るユーザーから任意の値を取得するのではなくプログラム側の提示したオプションから選択してもらうケースを想定します。あるケースとしてはユーザー...記事を読む標準入力から文字列を取得する今回はユーザーから入力される文字列を取得する処理を作ります。入力する元は標準入力つまりターミナルからの入力とします。(2)前回シーケンスの内容を出力するメソッドを作ったのでこれを利用したいと思います。前回のメソッドでは引数にPrintStr...記事を読むwavファイルの調査(1)Javaで読み込むwavファイルを解析します。wavファイルを読み込むにはAUdioInputStreamというオブジェク...記事を読むJavaとMIDI:曲の構造と表現の分離(2)前回フレース演奏のためのクラスを作ったのでこれを利用します。前回作ったPhraseEditorの継承...記事を読む10進数以外の数字を扱うコンピュータ言語では10進数以外には2進数、8進数、16進数などがよく使われます。Javaでも数字リテラルといい直接これらの数字を表現する方...記事を読むテキストファイルの読み込みをメソッドにする以前テキストファイルの読み込み処理を作りました。main関数に直接書いただけであったのでメソッドにして再利用できるようにしたいと思いま...記事を読むバロックと電子音楽ここまでJavaのプログラムを作ることによって音を出すことができるようになりました。改修する余地はたくさんありますが、このあたり...記事を読むJavaとMIDI:入出力先デバイスの取得MIDI情報の読み込み先や書き出し先はMidiSystem.getMidiDeviceInfoというスタティックメソッドで取得できます。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。外国語としてのJavaと音楽%d人のブロガーが「いいね」をつけました。