

arduinoのスケッチplayer_objifにて96kHzサンプリングレートの音源を再生しようとしたのですが、再生できませんでした。  
再生にあたっては以下の記述を↓に変更しています。  
音源は0kから48kに5秒で遷移するアップチャープ信号を再生しましたが、10秒ほどの時間を要して0kから12kほどまで遷移して終了します。（Main
player File End!は呼ばれる）  
player_hiresでは再生できましたが、player_objifで使われるオブジェクトインタフェース層によるプログラムでは動かないのでしょうか？  
よろしくお願いします。

[code]

    theMixer->setRenderingClkMode(OUTPUTMIXER_RNDCLK_NORMAL);
    ↓
    theMixer->setRenderingClkMode(OUTPUTMIXER_RNDCLK_HIRESO);
    
    thePlayer->init(MediaPlayer::Player0, AS_CODECTYPE_MP3, "/mnt/sd0/BIN", AS_SAMPLINGRATE_48000, AS_CHANNEL_STEREO);
    ↓
    thePlayer->init(MediaPlayer::Player0, AS_CODECTYPE_WAV, "/mnt/sd0/BIN", AS_SAMPLINGRATE_192000, AS_CHANNEL_MONO);
    
    myFile = theSD.open("Sound.mp3");
    ↓
    myFile = theSD.open("Sound.wav");
    
[/code]


CC BY-SA 4.0
2021-04-19T09:25:18.283
75382
2021-05-07T08:04:39.300
44678
question
spresense
arduinoのplayer_objifスケッチによるspresenseのハイレゾ再生ができない


質問を見たところでのコメントなんですが、  
「96kHzサンプリングレートの音源を再生」というところで、96kHzサンプリングのWAVファイルを

thePlayer->init(MediaPlayer::Player0, AS_CODECTYPE_WAV, "/mnt/sd0/BIN",
AS_SAMPLINGRATE_192000, AS_CHANNEL_MONO);

で、192kHzのサンプリングで再生すると、どちらかというと、倍速になってしまい、  
5秒が2.5秒になって、周波数が上がる方向ですが、実際の挙動は、逆なので、  
再生が48KHzになっている感じでしょうか。

また、チャンネルが異なる（Stereoをmonoで再生など）と、LRの並びを同一チャンネルで再生するので、音声が2倍に伸びてしまうことがありました。


CC BY-SA 4.0
2021-04-23T01:30:16.723
75459
2021-04-23T01:30:16.723
32281
75382
answer


いろいろやってみてわかりました。  
おっしゃる通り、上記のコードでは、結局、48kHzの出力になってハイレゾ出力できないようです。

そこで、SDKのコードなどを眺めてみて気が付きました。  
おそらく、  
theMixer->setRenderingClkMode(OUTPUTMIXER_RNDCLK_HIRESO);  
を呼ぶタイミングを変更すると良いようです。

下記のように、beginの前に、こちらを呼ぶと、

theMixer->setRenderingClkMode(OUTPUTMIXER_RNDCLK_HIRESO);

thePlayer->begin();  
theMixer->begin();

このコードでは、ハイレゾの再生ができました。


CC BY-SA 4.0
2021-05-07T08:04:39.300
75720
2021-05-07T08:04:39.300
32281
75382
answer