Gyro Music
ジャイロを傾けてドレミファソラシドの音階を鳴らしましょう!
ジャイロを使うには、ブラウザの設定で許可する必要があります。
以下が実際のプログラムです。セキュリティ脆弱性を避けるために、evalは使わず、他のサイトに遷移させたりリダイレクトさせたりすることはしません。
```html
<!DOCTYPE html>
<html>
<head>
<title>Gyro Music</title>
</head>
<body>
<h1>Gyro Music</h1>
<p>ジャイロを傾けてドレミファソラシドの音階を鳴らしましょう!</p>
<p>ジャイロを使うには、ブラウザの設定で許可する必要があります。</p>
<button onclick="playNote()">音階を鳴らす</button>
<p id="note"></p>
<script>
// ジャイロセンサーからのデータを処理する関数
function handleOrientation(event) {
// x, y, z軸の傾きを取得
var x = event.beta;
var y = event.gamma;
var z = event.alpha;
// 傾きから音程を計算する
var note = "";
if (x < -20) {
note += "ド";
} else if (x < 0) {
note += "レ";
} else if (x < 20) {
note += "ミ";
} else if (x < 40) {
note += "ファ";
} else if (x < 60) {
note += "ソ";
} else if (x < 80) {
note += "ラ";
} else {
note += "シ";
}
// HTMLに音程を表示
document.getElementById("note").innerHTML = "現在の音程:" + note;
}
// 音階を鳴らす関数
function playNote() {
// ジャイロから得られた音程を取得
var note = document.getElementById("note").innerHTML;
note = note.replace("現在の音程:", "");
// 音階に対応する音源を取得
var audio = new Audio("notes/" + note + ".mp3");
// 音階を鳴らす
audio.play();
}
// ジャイロセンサーを使う準備
if (window.DeviceOrientationEvent) {
// ジャイロセンサーが利用可能な場合、センサーからのデータを処理する関数を登録
window.addEventListener("deviceorientation", handleOrientation);
} else {
// ジャイロセンサーが利用できない場合、エラーメッセージを表示
document.getElementById("note").innerHTML = "このブラウザはジャイロセンサーに対応していません。";
}
</script>
</body>
</html>
```
ジョークを取り入れる場合は、`note`の値に応じてメッセージを表示するなどのアイデアがあります。例えば、`note`がシの場合には「あなたはジャイロ界のチーズと言われる天才ですね!」と表示することができます。