osd1
                文書の過去の版を表示しています。
目次
SmileSoundDecoder rev.0
スマイルサウンドデコーダは、オープンサウンドデータをより活用するために開発を進めている、日本製・国産のサウンドデコーダです。欧州のトップメーカーであるZ社、E社のサウンドデコーダのクラスを目指して開発を進めています。
DesktopStation株式会社、Nagoden、フジガヤ2,Maison de DCCの3社を中心とする、DCC電子工作連合の共同開発製品です。
サウンドデコーダの根幹であるサウンドの動きは、オリジナルのCSVスクリプトエンジンを用いることにより、自由にサウンドプログラミングが実現可能です。
開発ステップ(案):
Step1(2022年): 基本的なサウンドデコーダの技術構築、一般協力者との共同評価
Step2(2023年): 一般販売の開始
コンセプト
- 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個のサウンドを再生可能です。E社の最新デコーダと同等を実現しています。
 - サウンドプログラム(サウンドフロー)は同時に16点を実行可能です。使っていないフローは自動的に終了する機能を有しており、意識せずにサウンドプログラミングできます。
 - サウンドファイルは、8bitならびに16bitのモノラルの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 サウンド停止
 - slim 速度制限
 - let 算術評価(計算処理)
 
if 条件分岐の引数
| 定義済変数 | |
|---|---|
| spd | 現在速度。 | 
| ref | 指令速度。加減速中では、現在速度とズレが生じます | 
| acc | 加減速度 | 
| local1,local2,・・・ | サウンドフロー内で使用できる変数 | 
| share1,share2,・・・ | 全サウンドフローで使用可能な変数 | 
対応ハードウェア
準備中
ファームウェア
準備中
License
検討中
利用OSS
オープンサウンドデコーダは、以下のオープンソースソフトウェアを使用しています。
- NMRA DCC Library (LGPL)
 - Arduino-pico Library (LGPL)
 - Pico SDK (BSD 3-Clause license)
 - LittleFS (BSD 3-clause license)
 - uf2
 - mklittlefs (MIT License)
 - FFMPEG
 
SoundFlowライブラリ、ManageWaveライブラリは、DesktopStation・フジガヤ2・Nagodenの開発物です。
関連資料・記事
osd1.1650885434.txt.gz · 最終更新: 2022/04/25 20:17 by yaasan
                
                