ゲーム紹介
[2024/09/08]最新版(javascriptの練習でunityレスで作ってみた)→https://open-hikuscore.pages.dev/
FF7のピアノのミニゲームを見てムクムクしたので久しぶりに更新です
0.9.10b:譜面表示バグ修正、タッチ操作改良、パッド操作縦置き対応。
0.9.10a:
Chromeだけ動かなかった問題修正(Chromeではiframe.onloadイベントが呼び出されない!)。
QueBlockTPモードに第二(四)声部対策で自動押しっぱ機能など追加。
その他更新履歴→https://hikuscorele.pages.dev/changelog.txt' target='_blank'>https://hikuscorele.pages.dev/changelog.txt
譜面読み込んでピアノ弾くぞいゲーム(?)です。
ショパンを弾かずに死んでいくのか、君は?
QueBlockTPで気分だけでも弾いときなよ。
「Auto Tune」モードなら誰でも練習なしでもピアノほぼ弾けちゃいます。
タッチ操作OK、キーボード操作は「Auto Tune」か「Easy」モードなら初見でもいけるはず
【unityroomでrequestMIDIAccess(=MIDIキーボードの接続許可)がうまくできない場合】
モバイル表示時のようにページ内のiframe(id="webgl-frame")のsrc
を別タブで開いていただければ大丈夫になるはず
主に外部アセットとか置く用で内容はほぼほぼ同じやつ(MIDIキーボード接続OK)→https://hikuscorele.pages.dev/
【Mode: Easy】は鍵盤の音階とは非連動、 2 / 3ボタン式で弾いてる感だけ味わっていただければ
【Mode: AutoTune】は「左右それぞれ押してる鍵盤の数」が合っていれば適当に弾いてても自動的に正しい鍵盤を押してることになるシステムです。そのセグメントごとに押されるべき鍵盤のリストが作られ、優先順位に従って押さえ・離されます。ノートの長さが0.3秒未満の短いもの(黄色で表示されるやつ)はタイミングがムズィので注意だね。
【譜面読み込み機能】
想定操作方法は「Settings」画面上に「.xml / .sf2」のファイルが入ったフォルダをドロップする感じ。
選択されたファイルの中から「.xml」と「.sf2」ファイルだけまとめてインポート。
読み込めるのはMusicXml = 「.xml」ファイルでピアノソロのもの
midi_num 0~127(=C-1~G9)まで、トリル記号は非対応(反映しないだけでバグらない?)、日本語フォントは軽量化のため入れてないのでwork titleの日本語は非対応。
片手それぞれ2声部まで対応
現時点では同音オクターブ違いの声部(長さ)違いは非対応(バー重なる)
Musescoreに無料でDLできるpublic domainのものでもイイ曲たくさんあるんで是非
ちなみに.sf2ファイル(https://hikuscorele.pages.dev/SE/Full%20Grand.sf2)をローカル保存&してインポートして使うと音源のDL時間が短縮できます。
【タッチの両押し判定について】
それぞれの鍵盤の両端には、「移動」の時だけ、隣のキーとの両押し判定があります。これは、「二本の指を揃えてタッチすると真ん中1点を押したことになる」対策です。二本の指を揃えて二つのキーをタッチするときは、完全に同時ではなく一瞬(1フレーム以上)タイミングをずらしてタッチ(または1本指で端をこするようにタッチ)していただければ、1点押しになったとしても移動判定で両押しが発生します。
【キーボード】
左手:黒 2~7 ( & 9 - ^), 白 Q ~ U ( & I - [), "@, ^"はキーコードが機種?によって変わってて使えないかも?
右手:黒 G~; ( & A - F), 白 V ~ . ( & Z - C). ";, :"はキーコードが機種?によって変わってて使えないかも?
BackSpace:ポーズ
←→:左手側のキーボードシフト
↑↓:右手側のキーボードシフト
マウス:ボタン押したり(鍵盤は押せない)
【MIDIキーボード入力】
C4以上が右手側として入力されます
Left hand < note number 60(C4) >= Right hand
CC(176)のオールオフ(120)でポーズ
ちなみに、MIDI機器を繋いでからブラウザを起動推奨
【Mode: Easy】は鍵盤の音階とは非連動、 2 / 3ボタン式で弾いてる感だけ味わっていただければ
【Daily???】プリセット曲の「Daily ???」は日替わりで自動で入れ替わります。外部アセット化しているので置き場(cloudflare)が落ちてる等で拾えない時は「Silent Night」になります。
【Mode: AutoTune】は「左右それぞれ押してる鍵盤の数」が合っていれば適当に弾いてても自動的に正しい鍵盤を押してることになるシステムです。そのセグメントごとに押されるべき鍵盤のリストが作られ、優先順位に従って押さえ・離されます。ノートの長さが0.3秒未満の短いもの(黄色で表示されるやつ)はタイミングがムズィので注意だね。
【譜面読み込み機能】
想定操作方法は「Settings」画面上に「.xml / .sf2」のファイルが入ったフォルダをドロップする感じ。
「Settings」画面右上のテキストをクリックで選択ダイアログのファイル(複数可) / フォルダを切り替えられます。
選択されたファイルの中から「.xml」と「.sf2」ファイルだけまとめてインポートされます。
インポート後に「Reset >>>」を選んで右の「?」を全消去できます。
読み込めるのはMusicXml = 「.xml」ファイルでピアノソロのもの
midi_num 0~127(=C-1~G9)まで、トリル記号は非対応(反映しないだけでバグりはしない)、日本語フォントはあえて入れてないのでwork titleに日本語は未使用希望。
片手それぞれ2声部まで対応(越えるとバー重なる)
現時点では同音オクターブ違いの声部(長さ)違いは非対応(バー重なる)
Musescoreに無料でDLできるpublic domainのものでもイイ曲結構あるんで是非
(お勧めセットは制作中)
(タイトル画面右下「Pre-ImportMode」はオンにするとゲームロード前にファイルを選べるようになります(低メモリ勢?モバイル勢?向けのモード)
ちなにみ、.sf2ファイル(https://hikuscorele.pages.dev/SE/Full%20Grand.sf2)をローカル保存しておいてインポートして使うと「settings -> play」遷移の初回音源ダウンロード時間が短縮できます。
【タッチの両押し判定について】
それぞれの鍵盤の両端には、「移動」の時だけ、隣のキーとの両押し判定があります。これは、「二本の指を揃えてタッチすると真ん中1点を押したことになる」対策です。二本の指を揃えて二つのキーをタッチするときは、完全に同時ではなく一瞬(1フレーム以上)タイミングをずらしてタッチ(または1本指で端をこするようにタッチ)していただければ、1点押しになったとしても移動判定で両押しが発生します。
【キーボード】
左手:黒 2~7 ( & 9 - ^), 白 Q ~ U ( & I - [), "@, ^"はキーコードが機種?によって変わってて使えないかも?
右手:黒 G~; ( & A - F), 白 V ~ . ( & Z - C). ";, :"はキーコードが機種?によって変わってて使えないかも?
Back Space:ポーズ
←→:左手側のキーボードシフト
↑↓:右手側のキーボードシフト
マウス:ボタン押したり(鍵盤は押せない)
【MIDIキーボード入力】
Midi Keybord入力機能は実験段階
Velocityは127固定
C4以上が右手側として入力されます
Left hand < note number 60(C4) >= Right hand
プレイ中は、CC(176)のオールオフ(120)でポーズ
ポーズ中は、
C~F#までドロップリスト開いてる時は表示されてる上からキー番目(C = 0, C# = 1, B = 2)の曲を選択
リスト開いてない時は現在からC=-1、B=+1の曲を選択
Gでスコアのドロップリスト開いたり閉じたり
G#でドロップリスト五個分上にスクロール
Aでドロップリスト五個分下にスクロール
A#でリセット
Bでプレイ
CC(176)のオールオフ(120)でプレイ
ちなみに、MIDI機器を繋いでからブラウザを起動しないと認識されないぽい(firefox)
接続(許可)に成功すると、f12のコンソールで「requestMIDIAccess: successCallback」、
認識されているMIDI機器の数だけ「Connect MIDI Device: ${n}」が出力されます
ゲーム内で使用させていただいている楽譜です。
提供様ありがとうございます。
上記の条件検索で出てくる(無料DL可)の楽譜はだいたいインポートできる(難易度Beginnerにチェック入れれば適合性アップ!)はず?
Download > MusicXml > 解凍後フォルダ直下のscore.xml("score"が別の名前の場合もある)をインポートしてください。
(極々たまにmusicscoreで開くと「音符の長さが合わない」などの警告がでるような微妙に壊れてるのもあるので注意。読み込みが終わらない時はこれの可能性)。
.sf2ファイルを読み込んで音を出すところで使用しています。
GNU Lesser General Public Licenseなのでjsは外部に置いてあります。
https://hikuscorele.pages.dev/js/libfluidsynth-2.3.0.js
https://hikuscorele.pages.dev/js/LICENSE.fluidsynth.txt
感謝感謝。
fluidsynth.jsをjs-synthesizer.worklet.min.jsを通して使用しています。
使用していないメソッドをカットしただけで、基本的には完全にほぼそのまま使用しています。
大変、参考になりました。
感謝感謝。
QueBlockTP / QueBlockモードでmusicxml情報読み込みと譜面画像作成に使用
コメント
コメントを残すには、ログインが必要です。 新規ユーザー登録 / ログイン