-
Notifications
You must be signed in to change notification settings - Fork 1
Music
Musicに関する説明を追加してください。
- 主旋律はIPv4の値から自動生成。
- IPv4の1オクテットから1/2小節を生成。
- 伴奏は明暗2通りから固定で生成。コード進行は固定。
- 主旋律は自動生成とは言え、伴奏と不協和音にならない程度に範囲を縛っている。
- ただ単にパケットの数字を音高に変換したものは、不協和音となってしまう可能性が非常に高く、音楽とは呼べない。
- 一般的に音楽は芸術的感性が重視されるように思われているかもしれないが、一種の規則性を持っており、それらは数学的に表すことができる。
- つまり、パケットのもつ数字などから協和音的な音楽を生成することは可能である。
- 通常音楽にはコード進行があり、そのコード1つ1つにはそれぞれ適する音がいくつか存在する。
- そこで予めコード進行は決めておき、そのコードに合う音をパケットの数字を基にして当てはめる。
- これにより使用するパケットによって毎回違う音楽が生成される。
-
CodeMaker
BGMのコード進行を定義するクラスです。
後々のBGM生成に大きな影響を与えます。
このコード進行は自動生成ではなく、予め定義されたものとなっています。 -
ScaleMaker
BGM生成に使用する鍵盤を定義するクラスです。
不協和音を生成しないためには、正しい音階を用いて音楽を生成する必要があります。
鍵盤には幹音(白鍵)と派生音(黒鍵)が同時に存在し、Javaでは低音から両者関係無く数字が順に割り振られています。
長調と短調では一定の規則性で幹音と派生音の順番が決まっており、その規則性に従って使用する鍵盤を定義しています。 -
MelodyAlgorithm
ロードしたパケット中からIPv4を取り出して処理し、主旋律の決定要素を作成するクラスです。
IPv4アドレスをオクテット毎に取り出し、その数値の大きさによって判定要素Aを確定させます。
また、ScaleMakerで定義したコードの協和音となる任意の音を定義し、これを判定要素Bとします。
以上の判定要素Aと判定要素Bを組み合わせて算出されたものが、音楽の主旋律の決定要素となります。 -
MelodyMaker
BGMの主旋律を作成するクラスです。
BGMの1小節は4拍で構成されており、うち2拍をMelodyAlgorithmの主旋律の決定要素1つを用いて生成します。
ただ、それだけだと単調な音楽になってしまうため、偶数拍は先の決定要素の音を、奇数拍はそれを変化させた音を使用します。
この部分がパケットを基にしたBGMの自動生成要素となっています。 -
AccompanimentMaker
BGMの伴奏を生成するクラスです。
伴奏は自動生成ではなく、ScaleMakerで定義したコード進行に合う伴奏が予め定義されています。 -
MusicPlayer
自動生成したBGMを再生するクラスです。
MelodyMakerとAccompanimentMakerで生成されたBGMデータ(sequence)を組み合わせ、再生します。 -
MidiPlayer
外部Midiファイルを読み込み、再生するクラスです。
Midiファイルを一度開き、音量情報を指定のものに全て書き換え、出力再生します。