RA2E1マイコンの音声再生ソフトについて

stlと申します。

RXファミリなどではM3S-S2-Tiny という音声再生ソフトがあり、WAVEファイル => ADPCMへの変換が出来て、ADPCM形式の再生が可能のようですが、RAファミリマイコンでは同様のことが出来るのでしょうか?

もしくは、WAVEファイルでなくとも、音声ファイルの再生が行える方法がRAマイコンであるのでしょうか?

Parents
  • stlさん

    シェルティです、こんにちは。ルネサスの中の人です。

    M3S-S2-Tinyの設計をしました。最初RXやRL78向けに展開していた(さらに前にはR8CとかM16CとかH8向けに展開してました)のですが、RAチームからS2使いたいと連絡があり開発支援しました。

    RAのFSPのマニュアルを見ると、音声再生の項目でS2を使ってそうですね。

    https://renesas.github.io/fsp/group___r_m___a_u_d_i_o___p_l_a_y_b_a_c_k___p_w_m.html?pos=549,8,614,8,665,8,741,8,1342,8,1376,9,1831,8,1941,8,2103,8,2171,8,2416,8,2573,8,3354,8,4219,8,4963,8,5293,8,6780,8,7419,8,7974,8,9384,8,14032,8,14063,8,14159,8,14337,8,15543,8,16241,8,17266,8

    少し細かくみれてないのですが、RAで音声再生を実現する方法は用意されていると思います。

    以上です

  • シェルティさん

    お答えいただきありがとうございます。

    >>RAのFSPのマニュアルを見ると、音声再生の項目でS2を使ってそうですね。

    これはどの箇所をご覧になって、そう思われたのでしょうか?

  • stlさん

    シェルティです、こんにちは。

    すみません、URL貼り間違えました。これを見てADPCM(RXやRL78ではS2という名前を付けてました)が使われていると思いました。

    RA Flexible Software Package Documentation: ADPCM Decoder (rm_adpcm_decoder) (renesas.github.io)

    本当に使えるのかe2 studioを起動してコンフィグしてみました。

    いけそうな感じはしますが、PWMで音を鳴らす部分とADPCMのデコード部を両方コントロールする処理は自力でコードを書かないとダメな感じですね。実験用にsin波などの分かりやすいPCMのデータをaudacityのようなツールで何かしらこしらえてバイナリに落とし、quickbee等のバイナリエディタでC言語配列化し、sound playbackモジュールのインタフェースにくべてやれば音が出る仕組み自体は出来そうです。そのあとPCMデータを1/4に圧縮したい場合はADPCMで圧縮したデータをADPCMモジュールへの入力とし、その出力がPCMデータであるので、sound playbackモジュールにくべれば良いと思います。

    あとすみません、このあたりは私はRAファミリ側の開発には直接参加していないので、さらなる詳細はどなたかがこのスレッドに書いてくれるのを待つか、ルネサスのテクニカルサポートに確認するのが良いのではと思います。

    https://www.renesas.com/jp/ja/contact-us

    以上です

  • Audio関連のAPIでは、ADPCM→PCMの変換とPCMの再生が出来るということですよね。音声ファイルなどをADPCMに変換するようなことは、別途ツールなどを用意して自分で行えればよいでしょうか。

    もしくは、M3S-S2-Tinyを使用して音声ファイル→ADPCMの変換が出来るのでしょうか?M3S-S2-Tinyを使用したことがないのですが、音声ファイル→ADPCMの変換は、使用しているマイコンとは関係なく出来るものなのでしょうか?

  • stlさん

    こんにちは、シェルティです。

    はい、Audio関連のAPIでは、ADPCM⇒PCMの変換とPCMの再生ができるということです。

    RXやRL78では音声ファイル(*.wav)をADPCMに変換するためのWindowsアプリを用意していました。

    元のS2ではエンコード関数も用意していたので、S2を使ってADPCMデータを生成することも可能でしたね。RAファミリではデコード関数のみ移植されているようで、これは出来なさそうです。

    ただしいADPCMデータに変換できれば、PCツールでもどのマイコンでも関係なく利用可能です。

    少し私の方でもRAファミリのドキュメントを読んでみました。

    以下に(RA2用ではなくRA6用ですが) ADPCMの再生サンプルがありました。これを流用すれば先に説明した「PWMで音を鳴らす部分とADPCMのデコード部を両方コントロールする処理は自力でコードを書かないとダメ」は解消できそうです。

    https://github.com/renesas/ra-fsp-examples/tree/master/example_projects/ek_ra6m1/audio_playback_pwm/audio_playback_pwm_ek_ra6m1_ep

    以下にブロック図がありますね。

    stlさん想定通りの絵になっています。

    https://github.com/renesas/ra-fsp-examples/blob/master/example_projects/ek_ra6m1/audio_playback_pwm/audio_playback_pwm_ek_ra6m1_ep/images/Block_Diagram.jpg

    ただ、ADPMC Toolが見つからないですね。社内で知ってそうな人に聞いてみます。

    仕様が変わってなければ以下RL78用のS2のコードに同梱したADPCM Toolがそのまま使えると思います。

    https://www.renesas.com/jp/ja/document/scd/rl78-family-m3s-s2-tiny-introduction-guide-sample-code?language=en&r=488941

    以上です

  • シェルティさん

    ADPCM Toolは持っていたので、そちらでPCMやADPCMへの変換が出来そうです。

    例えば、下のようなサイトでWAV形式の音声ファイルをダウンロードし、

    https://ondoku3.com/ja/

    WAVファイルのADPCMToolでPCMに変換し、そのPCMファイルをquickbeeで開き、そこでC言語配列にしたものをRM_AUDIO_PLAYBACK_PWM_Playの引数としてセットすれば、音声再生が出来ると思っていたのですが、実際やってみるとできませんでした。何かやり方を間違えているのでしょうか?

  • stlさん

    こんにちは、シェルティです。

    以下チェックポイントと思います。プリミティブに1機能ずつ正しく期待通り動作しているか確認するのが良いですね。

    ①WAVファイルにはヘッダにサンプリング周波数が書いてあるのでマイコン側タイマ割込みでサンプリング周波数を実現している設定箇所とサンプリング周波数を合わせる必要がある

    https://www.youfit.co.jp/archives/1418

    ②③の前にADPCMをかませず、PCMだけで音声再生できるか確認。具体的にはAudacity等を用いてSIN波などの単純な波形を生成、そのPCMデータをC言語配列にしたものを、RM_AUDIO_PLAYBACK_PWM_Playの引数としてセット、オシロでPWM波形を観測しSIN波が観測できるか確認

    ③Audacity等を用いてSIN波などの単純な波形を生成、そのPCMデータをADPCM Tool入力としてADPCMデータを作成、そこでADPCMデータをC言語配列にしたものをマイコン上でADPCM伸長APIの入力としPCMに変換、そのPCMデータをRM_AUDIO_PLAYBACK_PWM_Playの引数としてセット、オシロでPWM波形を観測しSIN波が観測できるか確認

    以上です

Reply
  • stlさん

    こんにちは、シェルティです。

    以下チェックポイントと思います。プリミティブに1機能ずつ正しく期待通り動作しているか確認するのが良いですね。

    ①WAVファイルにはヘッダにサンプリング周波数が書いてあるのでマイコン側タイマ割込みでサンプリング周波数を実現している設定箇所とサンプリング周波数を合わせる必要がある

    https://www.youfit.co.jp/archives/1418

    ②③の前にADPCMをかませず、PCMだけで音声再生できるか確認。具体的にはAudacity等を用いてSIN波などの単純な波形を生成、そのPCMデータをC言語配列にしたものを、RM_AUDIO_PLAYBACK_PWM_Playの引数としてセット、オシロでPWM波形を観測しSIN波が観測できるか確認

    ③Audacity等を用いてSIN波などの単純な波形を生成、そのPCMデータをADPCM Tool入力としてADPCMデータを作成、そこでADPCMデータをC言語配列にしたものをマイコン上でADPCM伸長APIの入力としPCMに変換、そのPCMデータをRM_AUDIO_PLAYBACK_PWM_Playの引数としてセット、オシロでPWM波形を観測しSIN波が観測できるか確認

    以上です

Children