3DSの音声ファームウェア吸い出しが不要に!? 『OpenDSP』がWAV・AACのストリーミング再生に対応

3DSの音声ファームウェア吸い出しが不要に!? 『OpenDSP』がWAV・AACのストリーミング再生に対応

開発者のCellenseres氏は2026年10月19日、ニンテンドー3DS向けのオープンソースDSPファームウェア『OpenDSP』に関連するツール『Sound Lab 1.2.1』をGitHubで公開しました。今回のアップデートでは、WAVやAAC形式の音声ファイルをストリーミング再生するための新しいAPIが導入され、メモリ使用量の削減や動作状況を確認する機能などが追加されています。

『OpenDSP』は、ニンテンドー3DSに搭載されている音声処理用プロセッサーを、任天堂の純正ファームウェアに頼らず利用できるようにするプロジェクトです。これまで一部のHomebrewでは、音声を再生するために専用ファームウェアを本体から吸い出す作業が必要でしたが、『OpenDSP』を組み込むことで、そうした手間を省けるようになります。

●Sound Lab 1.2.1
https://github.com/Cellenseres/OpenDSP/releases/tag/v1.2.1

そもそも『OpenDSP』とは? 3DSの音声処理を独自実装

ニンテンドー3DSには、ゲーム中のBGMや効果音などを処理するためのDSP(デジタルシグナルプロセッサー)と呼ばれる専用のプロセッサーが搭載されています。これは、音声の再生や加工などを効率よく行うためのもので、ゲーム中に複数の音を同時に鳴らすといった役割を担っています。

また、こうしたハードウェアを制御するために必要となるのが、ファームウェアと呼ばれるプログラムです。

3DS向けのHomebrew(ユーザーなどが独自に開発した非公式ソフトウェア)では、『libctru』に含まれる『ndsp』という仕組みを利用して音声を再生することがあります。しかし、従来の環境では任天堂の純正DSPファームウェア『dspfirm.cdc』が必要となり、ユーザー自身が本体からデータを吸い出さなければならない場合がありました。

そこで開発されたのが『OpenDSP』です。こちらは、任天堂のファームウェアコードを使用せず、DSPを動かすためのプログラムを独自に実装したものです。開発者が『OpenDSP』を自分のHomebrewに組み込むことで、ユーザー側で純正DSPファームウェアを吸い出す必要のないソフトウェアを作れるようになります。

また、『OpenDSP』は既存の『ndsp』との互換性を意識して設計されており、開発者が従来の音声処理プログラムを大幅に書き直さずに導入できる点も特徴です。

基本機能としては、最大24ボイスの同時再生やPCM8/PCM16、DSP-ADPCM形式の音声処理に対応。さらに、音声のフィルターやミキシング、残響を加えるリバーブ、音を遅らせて繰り返すディレイといったエフェクトも利用できます。

なお、これらは『OpenDSP』が備えている基本機能であり、今回のバージョン1.2.1ですべて新たに追加されたものではありません。

WAV・AACのストリーミング再生やメモリ効率が改善

今回のアップデートで注目したいのが、WAVやAAC形式の音声ファイルをストリーミング再生するための新しいAPIが利用できるようになったことです。

ストリーミング再生とは、音声ファイル全体を一度にメモリへ読み込むのではなく、必要なデータを少しずつ読み込みながら再生する仕組みです。たとえば、ゲーム中に長いBGMを流す場合などに、限られたメモリを効率よく利用することができます。

『OpenDSP』では、新たに用意されたストリーミング用ライブラリを利用することで、SDカードやゲーム内に組み込まれたRomFSから音声ファイルを読み込み、バックグラウンドでバッファリングしながら再生できるようになりました。

これにより、Homebrewの開発者がファイルの読み込みや音声データの供給処理を個別に実装する負担を軽減できます。また、再生や一時停止、ループ、音量調整などにも対応しており、WAV形式では再生位置の変更も可能です。

さらに、AAC再生時のメモリ使用量や、ストリーミング処理に伴うオーバーヘッドも削減されています。ただし、具体的にどの程度メモリ使用量が減ったのかについては、削減率などの数値は明らかにされていません。

なお、AAC-LC形式の音声をDSP側で直接デコードできる機能については、前日の10月18日に公開された『Sound Lab 1.2.0』で追加されたものです。こちらは、従来CPU側で行っていた音声のデコード処理を、専用のDSPに担当させられる点が特徴となっています。

ただし、DSP側でのAACデコードには制限があり、現時点ではAAC-LCのADTS形式で、モノラルまたはステレオ、サンプリング周波数8~48kHzなどが対応範囲となっています。対応していない一部の形式については、ARM11と呼ばれるCPU側で処理する仕組みも用意されています。

実際に音声機能を試せる『Sound Lab』も公開中

『OpenDSP』の機能を実際に試すためのHomebrewとして、『Sound Lab』も公開されています。

こちらは、WAVやAACファイルの再生に加え、音声フィルターやミキシング、リバーブ、ディレイなどの効果を確認できるデモツールです。リバーブには、部屋やホール、洞窟などの音響をイメージしたプリセットも用意されており、音の響き方の違いを試すことができます。

今回公開された『Sound Lab 1.2.1』では、新しいストリーミングAPIを利用するように変更されたほか、再生キューやアンダーランの発生回数を確認するカウンターが追加されました。

アンダーランとは、音声の再生に必要なデータの供給が追いつかなくなる状態のことです。こうした情報を確認できることで、開発者は音声が途切れる原因などを調べやすくなります。

また、AACファイルは標準ではDSPを利用して再生されますが、プレイヤー上でXボタンを押すことでARM11側のデコード処理に切り替えることも可能です。DSPの負荷も表示されるため、それぞれの動作を比較することができます。

『Sound Lab』はCIA形式のほか、『Homebrew Launcher』で利用できる3DSX/SMDH形式などで配布されています。WAVやAACの音声ファイルをSDカード内の「sdmc:/3ds/opendsp-lab/」に配置することで、自分で用意した音声を再生することもできます。

ただし、一般的な未改造の3DSにそのままインストールできる公式アプリではなく、Homebrewを実行できる環境が必要です。開発者はNew Nintendo 3DSと『Luma3DS』を使用して動作を確認していますが、すべての3DS本体や環境での動作が保証されているわけではありません。

3DSの可能性を広げるオープンソースプロジェクト

『OpenDSP』は、ニンテンドー3DSの音声処理を任天堂の純正ファームウェアに頼らず実現するという、興味深い取り組みです。

とくに、従来必要だったDSPファームウェアの吸い出しを省略できる点は、Homebrewを開発する側だけでなく、利用するユーザーにとってもメリットがあります。

もっとも、『OpenDSP』の公開によって、すべての既存Homebrewから自動的にファームウェアの吸い出しが不要になるわけではありません。また、3DS本体のシステムファームウェアそのものを置き換えるプロジェクトでもなく、既存の音声処理機能との完全な互換性が実現しているわけでもありません。

それでも、今回のアップデートによってWAVやAACのストリーミング再生が扱いやすくなったことは、今後のHomebrew開発を後押しする要素になりそうです。

発売から長い年月が経過したニンテンドー3DSですが、こうしたオープンソースの取り組みによって、ハードウェアの新たな活用方法が模索されている点は注目したいところです。

『OpenDSP』はBSD 2-Clauseライセンスで公開されており、ソースコードや開発者向けドキュメント、各種配布ファイルはGitHubから入手できます。

ABOUT US
アバター画像
retrogamer