Mathematicaで音を鳴らす
Mathematicaには関数などを音にして出力する機能があります。
今回はそれを使ってピアノ鍵盤を作ってみました。(思いきり力技です)
クリックすると音が鳴ります。
キーボード入力で音を出させたかったのですが、どうやらMathematicaではキーボードイベントが無いようなので、代わりにゲームコントローラ(!)の入力で音が鳴るようにしました。
今回は単音のピアノですが、他の楽器の音や、和音を鳴らすこともできます。
midiファイルを読み込んでMathematicaで再生、もできると思います。(あんまり意味はないですが・・・)
以下、需要などあるわけがないソースコードです。
Graphics[ { White, EdgeForm[Black], Button[Polygon[{{0, 0}, {1, 0}, {1, 4}, {0, 4}}], EmitSound[Sound[SoundNote["C4"]]]], Button[Polygon[{{1, 0}, {2, 0}, {2, 4}, {1, 4}}], EmitSound[Sound[SoundNote["D"]]]], Button[Polygon[{{2, 0}, {3, 0}, {3, 4}, {2, 4}}], EmitSound[Sound[SoundNote["E"]]]], Button[Polygon[{{3, 0}, {4, 0}, {4, 4}, {3, 4}}], EmitSound[Sound[SoundNote["F"]]]], Button[Polygon[{{4, 0}, {5, 0}, {5, 4}, {4, 4}}], EmitSound[Sound[SoundNote["G"]]]], Button[Polygon[{{5, 0}, {6, 0}, {6, 4}, {5, 4}}], EmitSound[Sound[SoundNote["A"]]]], Button[Polygon[{{6, 0}, {7, 0}, {7, 4}, {6, 4}}], EmitSound[Sound[SoundNote["B"]]]], Button[Polygon[{{7, 0}, {8, 0}, {8, 4}, {7, 4}}], EmitSound[Sound[SoundNote["C5"]]]], Black, Button[Polygon[{{0.6, 4}, {1.4, 4}, {1.4, 2}, {0.6, 2}}], EmitSound[Sound[SoundNote["C#"]]]], Button[Polygon[{{1.6, 4}, {2.4, 4}, {2.4, 2}, {1.6, 2}}], EmitSound[Sound[SoundNote["D#"]]]], Button[Polygon[{{3.6, 4}, {4.4, 4}, {4.4, 2}, {3.6, 2}}], EmitSound[Sound[SoundNote["F#"]]]], Button[Polygon[{{4.6, 4}, {5.4, 4}, {5.4, 2}, {4.6, 2}}], EmitSound[Sound[SoundNote["G#"]]]], Button[Polygon[{{5.6, 4}, {6.4, 4}, {6.4, 2}, {5.6, 2}}], EmitSound[Sound[SoundNote["A#"]]]] } ] Dynamic[If[ControllerState["B1"], EmitSound[Sound[SoundNote["C4"]]], ""]] Dynamic[If[ControllerState["B2"], EmitSound[Sound[SoundNote["D"]]], ""]] Dynamic[If[ControllerState["B3"], EmitSound[Sound[SoundNote["E"]]], ""]] Dynamic[ If[ControllerState["B4"], EmitSound[Sound[SoundNote["F"]]], ""]] Dynamic[If[ControllerState["B5"], EmitSound[Sound[SoundNote["G"]]], ""]] Dynamic[If[ControllerState["B6"], EmitSound[Sound[SoundNote["A"]]], ""]] Dynamic[If[ControllerState["B7"], EmitSound[Sound[SoundNote["B"]]], ""]] Dynamic[If[ControllerState["B8"], EmitSound[Sound[SoundNote["C5"]]], ""]]