#author("2025-02-08T09:11:36+09:00","","")
#author("2025-02-08T09:16:29+09:00","","")
* サウンド環境 [#j1ee7359]
サウンドを一通り見てきましたが、次は音楽をどのようにして演奏させるか話になります。DirectSoundはMaxModか8adライブラリ、GBサウンドは後述のVGM2GBA、[[GBT Player:https://github.com/AntonioND/gbt-player]]ライブラリを使用するのが良いように思います。GBT Playerに関しては3つ利点があって1.vblank毎に呼びだすだけでタイマーやDMAを使っていない行儀の良いプログラムであること。2.GB Studio3に内蔵される実績を持ち、開発環境が整っていて実行サイクル(テストサイクル)が短いこと。3.マニュアルや解説動画があるので参入する敷居が低いこと、が挙げられます。MP2k(MusicPlayer2000)は今でも最高の演奏ライブラリでこちらを使いたい気もしますが、任天堂製なので使うことはできません。とても残念です。
サウンドを一通り見てきましたが、次は音楽をどのようにして演奏させるか話になります。DirectSoundはMaxModか8adライブラリ、GBサウンドは後述のVGM2GBA、[[GBT Player:https://github.com/AntonioND/gbt-player]]ライブラリを使用するのが良いように思います。GBT Playerに関しては3つ利点があって1.vblank毎に呼びだすだけでタイマーやDMAを使っていない行儀の良いプログラムであること。2.GB Studio3に内蔵される実績を持ち、開発環境が整っていて実行サイクル(テストサイクル)が短いこと。3.マニュアルや解説動画があるので参入する敷居が低いこと、が挙げられます。MP2k(MusicPlayer2000)は今でも最高の演奏ライブラリでこちらを使いたい気もします。ですが、任天堂製なので使うことはできません。とても残念です。

** GB Studio3、GBT Player [#z847449f]
[[GB Studio3:https://www.gbstudio.dev/]]は本来Gameboyを開発される為に用意された開発環境です。その中に含まれているGBT PlayerはGB版とGBA版にライブラリを提供しています。GBでとりあえずテスト演奏を繰り返して、本番になったらGBAに移動する方法が可能です。

** テストプログラム [#ce9dbbc6]
GBT Playerライブラリを載せて動かしてみたのが以下のサンプルです。[[GB Studio Community Asserts:https://github.com/DeerTears/GB-Studio-Community-Assets]]から2曲拝借しました。

*** 動作画面 [#d6c76ac0]
#ref(1.png,nolink)

** vgm2gba [#x2869e4e]
Gameboy音源の作曲ソフト[[HUGETracker:https://nickfa.ro/index.php/HUGETracker]]を使った[[vgm2gba:https://github.com/akkera102/gbadev-ja-test/tree/main/116_vgm2gba_vblank]]を開発しました。アプリのvgmファイル出力機能を使用します。これにより、音楽はDMGにして効果音はDirectSoundを鳴らすという方法が可能です。

#ref(2.png,nolink)

** LSDjをGBAで演奏 [#x2869e4e]
[[LSDj:https://www.littlesounddj.com/lsd/]]を改造GBエミュレータで実行してログを出力。そのログをGBAで鳴らす[[lsdj_bgm_test:https://github.com/akkera102/gbadev-ja-test/tree/main/121_lsdj_bgm_test2]]を開発しました。割り込みはvcountを使っていて1フレーム6回呼び出しています。ゲームに使用できるかというと悩ましいところではありますが一応できましたーぐらいの感覚でお願いします。

** 余談 [#s5f5cb26]
現状、DirectSoundとDMGを併せ持ったオープンソースライブラリは存在しないようです。MaxModとGPT Playerの2つのドライバを搭載し、同時に鳴らすということは[[可能:https://github.com/AntonioND/gbt-player/tree/master/gba/examples/combined_maxmod]]です。

** 履歴 [#s8563175]
- 2023/10/22
- 2023/07/21
- 2023/05/30

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS