文書の過去の版を表示しています。
目次
OpenSoundDecoder rev.0
オープンサウンドデコーダは、RP2040 MCUをベースに、オープンサウンドデータをより活用するために開発を進めている、日本製・国産のサウンドデコーダです。欧州のトップメーカーであるZ社、E社のサウンドデコーダのクラスを目指して開発を進めています。
DesktopStation株式会社、Nagoden、フジガヤ2の3社の共同開発製品です。
サウンドデコーダの根幹であるサウンドの動きは、オリジナルのCSVスクリプトエンジンを用いることにより、自由にサウンドプログラミングが実現可能です。
開発ステップ(案):
Step1(2022年): 基本的なサウンドデコーダの技術構築、一般協力者との共同評価
Step2(2023年): 音質向上、サウンドデータ開発環境の構築、一般協力者との共同評価による品質向上
Step3(2024年): 線路経由の書き込みの実現、E社LS4~LS5クラスの完成度の実現
Step4(2025年): 一般販売の開始
コンセプト
- DCCをより楽しく
- 入手性、カスタマイズ性を重視
- DCCサウンドデコーダでありながらオープンソース
- リーズナブルなサウンドデコーダ(ただし安さは追及しない)
アーキテクチャ
- RP2040を軸にした、一般的なサウンドデコーダに相当するアーキテクチャを採用
- Arduino IDEで開発可能なArduino-picoライブラリをハードウェアライブラリに使用
- 16MB弱をサウンドに利用可能(0.5MB程度はファームウェアに使用)
- サウンドは、ユーザーがカスタマイズ可能なCSV形式のスクリプトプログラムで実行可能。将来的にはGUIツールによるブロック線図プログラミングも視野に入れている。
- サウンドデータは、LittleFSを使用し、USBでダウンロード可能。将来的には線路経由(UART over DCCとRailComによる通信)での書き込みが可能なシステムを開発予定。
製品
以下は構想段階であり、仮です。まだ具体的な製品予定ではありません。
- MTC21対応デコーダ OpenSoundDecoder MTC21,NEM652 (仮,DesktopStation)
- Next18対応デコーダ OpenSoundDecoder Next18 (仮,Nagoden)
構成要素
サウンドエンジン | WAVファイル管理、再生を行う部分 |
サウンドフロー | CSVスクリプトを実行する部分。設定機能も一部含まれる |
モータ制御 | ブラシ付DCモータ用のモータ制御エンジン |
NMRA DCC Library | NMRA製オープンソースDCCエンジン |
サウンドフロー
CSV形式のプログラムを採用。
- スクリプトはロードされた後、常時実行されます。
- 最大、同時に12個のサウンドフローが動作します。つまり、最大12音の再生が可能です。
- サウンドファイルは、8bit モノラルの44.1kHz, 22.1kHz, 10.25kHzのRIFF WAVEファイル(LPCM)に対応しています。
- 状態遷移はスクリプト上に記述します。ifとgotoで状態遷移の待つ条件を作ります。ifの条件式が成立したら、遷移させる形です。
- CSVスクリプトは128行まで。
- E社のLS5デコーダ相当の処理を実装可能な仕様を予定しています。
echo,startflow label,START if,fnc==1,PLAY_ON, goto,START label,PLAY_ON play,seibuaw_in.wav,0,0 echo,playwav play,seibuaw_loop.wav,1,0 label,PLAY_LOOP if,fnc==0,END,PLAY_LOOP label,END play,seibuaw_out.wav,0,0 echo,exitflow goto,START
CSVスクリプトで使用可能な関数は以下の通り。
Command name | Description | Examples |
---|---|---|
if | 条件分岐 | if,fnc==1,TRUE_LABEL,FALSE_LABEL(FALSEは省略可) |
goto | ラベルへジャンプ | goto,LABELNAME |
play | サウンド再生 | play,filename,loop(0 or 1),immediate(0 or 1) |
wait | ウェイト | ms秒単位で待つ |
label | ジャンプ用ラベル | ifやgotoの飛び先。大文字英数字で記載すること。 |
echo | コメント | 無視されるコメント文。備忘録用 |
set | 変数の設定 | shareやlocalに設定する。 |
aux | AUX出力の指定 | aux,1,1 |
call | 他のサウンドフローの呼び出し・実行 | call,flow3.csv |
monf | 監視するファンクション番号の設定 | monf,8 |
exit | 実行しているサウンドフローの終了 |
追加を検討しているコマンド。
- vol ボリューム
- stop サウンド停止
- setコマンドで四則演算
- ifコマンドで四則演算
- slim 速度制限
- サウンド連動wait
- fmap ファンクションマッピング設定用
- scrv スピードカーブ設定
if 条件分岐の引数
定義済変数 | |
---|---|
spd | 現在速度。 |
ref | 指令速度。加減速中では、現在速度とズレが生じます |
acc | 加減速度 |
local1,local2,・・・ | サウンドフロー内で使用できる変数 |
share1,share2,・・・ | 全サウンドフローで使用可能な変数 |
対応ハードウェア
準備中
ファームウェア
準備中
License
オープンサウンドデコーダのファームウェア、回路図、開発ツール、付属物(音データならびにドキュメント、サンプル)を利用するには、利用用途ごとに規定があります。
非商用利用 | 収益を得ない活動に利用。 例:個人・クラブでの利用 | 契約の必要がなく、ご利用いただけます。 |
商用利用A | 模型店等が書込サービス提供のために利用 | オープンサウンドデータの利用許諾後、ご利用いただけます。 |
商用利用B | 収益を得るためにデコーダやコマンドステーション開発に利用 | 商用ライセンス契約が必要です。契約が無い場合には、評価用途も含め、ご利用いただけません。 |
利用OSS
オープンサウンドデコーダは、以下のオープンソースソフトウェアを使用しています。
- NMRA DCC Library (LGPL)
- Arduino-pico Library (LGPL)
- Pico SDK (BSD 3-Clause license)
- LittleFS (BSD 3-clause license)
SoundFlowライブラリ、ManageWaveライブラリは、DesktopStation・フジガヤ2・Nagodenの開発物です。
オープンサウンドデコーダは、以下のオープンハードウェアプラットフォームを使用しています。
- Raspberry pi Pico RP2040