simulinkで複数の音源ファイルを再生したい

simulinkで複数の音源ファイルを再生したいです。
音源の読み込みはFrom Multimedia Fileを使っています。
サンプリング周波数は44100[Hz],オーディオチャネルあたりのサンプル数は128サンプルとしています。
読み込んでいる音源はwavファイルです。
複数のFrom Multimedia Fileで読み込んだ音源をAudioDeviceWriterで再生する方法を教えていただきたいです。

 Accepted Answer

Naoya
Naoya on 7 Nov 2018

3 votes

複数の信号源を束ねて多チャンネル化して 1つのデバイスに出力する方法ですが、 Matrix Concatenate ブロックで 列ベクトルのフレーム信号配列を 2次元方向に結合して、 Audio Device Writer へ渡すとよろしいかと思います。
下記キャプチャは Matrix Concatenate ブロックの使用例となります。

6 Comments

Kazuhiro Ouchi
Kazuhiro Ouchi on 9 Nov 2018
Naoyaさん
回答ありがとうございます。
回答の通りに行うと,2つの音源に関してはLch,Rchに振り分けて再生を行うことができると思うのですが,3つ以上の音源に関して上記の質問を解決するにはどうしたら良いでしょうか。
Naoya
Naoya on 13 Nov 2018
上記ご連絡ありがとうございます。
Matrix Concatenate ブロックのパラメータで 入力数を例えば 5 と変更すると入力ポートが 5つになりますので、 5ch分の信号を束ねることができますがいかがでしょうか?
Shoumei
Shoumei on 14 Nov 2018
Edited: Shoumei on 14 Nov 2018
3ch以上の音源ですと、Addブロックを使って加算してやればよいのではないでしょうか?
Mix Levelも調整できますよ。
test_audioSource.jpg
Kazuhiro Ouchi
Kazuhiro Ouchi on 15 Nov 2018
Naoyaさん
回答ありがとうございます。
Matrix Concatenate ブロックを用いた方法についてですが,
オーディオチャネルあたりのサンプル数が1024,チャンネル数が5つの時
Matrix Concatenate ブロックの入力数を5とすると,
出力が[1024 × 5]となってしまい, Audio Device Writerの入力数である2チャンネルを超えてしまいます。
私の理解力不足もあるかとは思いますが,うまく動作しませんでした。
Kazuhiro Ouchi
Kazuhiro Ouchi on 15 Nov 2018
Shoumei Yamadaさん
回答ありがとうございます。
回答のようにAddブロックを用いてみたところ,3つ以上の音源ファイルに関して再生を行うことができました。
ありがとうございました。
Naoya
Naoya on 15 Nov 2018
上記ご連絡ありがとうございます。
再生デバイスが 2ch で 5ch 分出力ということでしたら、 Yamada様が提案される方法がベターだと思います。
信号が doubleや single型の場合、 -1 ~ 1 の間で波を表現された方がよいと思います。加算してこの範囲を超えますと -1 または 1 に飽和され再生されますのでご留意ください。

Sign in to comment.

More Answers (0)

Categories

Find more on Audio I/O and Waveform Generation in Help Center and File Exchange

Products

Release

R2017b

Asked:

on 2 Nov 2018

Commented:

on 15 Nov 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!