2017-03-29 32 views
3

私は初心者のMATLABユーザーですので、その質問が非常に基本的であれば謝ります。単一の特定のチャンネルで再生するには.wavサウンドファイルが必要です。左のチャンネルを言いましょう。それがあるので、私のコードは、サウンドファイルを読み込み、私はそうのように、したくないチャンネルを無効にするゼロの列に追加します。MATLABを使用して再生するチャンネルサウンドを制御するにはどうすればよいですか?

currentDir = pwd; 
soundFile = [currentDir '\sound1.wav']; % load the file 

[y, Fs] = audioread(soundFile); % read the file in 

soundData(:,1) = y(:,1); % keeps sound for the left channel 
soundData(:,2) = 0; % nullifies the right channel 

sound = audioplayer(soundData,Fs); 
play(sound); 

現状では、コードが現在のサウンドを生成しますそれは左のスピーカーで全音量で、右のスピーカーでは半音量です(それでも音は非常に聞こえます)。私は同じ結果で少なくとも20の.wavファイルでこれを試しました。

それは関連性のケースで、これは私がコードで書く場合にも起こる明示的に0で音の変数の長さと一致して、そのよう:

[y, Fs] = audioread(soundFile); 
silentChannel = zeros(size(y)); 

soundData(:,1) = y(:,1); % keeps sound for the left channel 
soundData(:,2) = silentChannel(:,2); % nullifies the right channel 

誰も私が間違ってやっているのか分からない、または何か考えている?

答えて

1

あなたのコードは間違いなく正しいですし、左のチャンネルでのみオーディオを再生する必要があります。私は、この問題はサウンドカード/ドライバの問題が原因であると考えています。

  1. audiowrite('output.wav', soundData, Fs)を使用して出力をwavファイルとして保存してください。これは、Audacityなどの別のオーディオプレーヤーを使用して再生します。それでも両方のチャンネルで出力が聞こえる場合は、サウンドカード/ドライバの問題でなければなりません。
  2. Windows PCを使用している(ファイルパスの構文に従っている)と仮定すると、すべてのサウンド拡張機能が無効になっていることを確認してください。これを行う方法はPCによって異なります。再生設定を制御するサードパーティのアプリケーションがある場合は、それを使用する必要があります。それ以外の場合は、コントロールパネルの下の図に示す設定を探します。

enter image description here

+0

これはトリックでした - ありがとう! – treismanwolfe

1

は、MATLABで音を再生するための予想されるメソッドは、メソッドのサウンドがオンに放出チャネルを制御するために、あなたはsound()dataを読み込む方法を知りたいでしょうsound(data,Fs)

です。

data

はチャネルを表す列の行列であり、ここで所定のサンプリングfequency Fs

する波形のサンプルを保持する行で単純な実装です。

function treismanwolfe() 
    close all 
    clear all 
    clc 
    Fs = 40000; 
    tau = 2*pi(); 
    t = 0:tau/(Fs-1):tau/2; 
    left = sin(t).*(sin(t*200)+sin(t*1600)); 
    left= left/max(abs(left)); 
    left = left'; %turn column vector into row 
    right = sin(t).*(sin(t*800)+sin(t*400)); 
    right= right/max(abs(right)); 
    right = right'; %turn column vector into row 
    data = [left,right*0]; %multiply either by 0 to nullify 
    sound(data,Fs); %so you can hear it. 
end 

これはうまくいきたいと思います。楽しい!

+0

それはharwareの問題だったが判明。とにかくこの提案をお寄せいただきありがとうございます。今後もこの機能をサウンドテストに使用していきます! – treismanwolfe

0

あなたのコードを実行すると、指定したとおり、オーディオ出力は左チャンネルでのみ鳴ります。

@Austin Kootz 'のサウンド()機能はちょうどいいし、探しているものも再生しますが、再生中に再生を停止する機能があります

.wavを別の形式に変換して変更が行われたことがありますか?

+0

サウンドシステムにプリセットパンがあるかどうかを確認しましたか?それはソフトウェアの問題よりもハードウェアのように思えるかもしれません。 – matiastofteby

+0

ハードウェアの問題であることが分かります。とにかくおかげさまで、ありがとう! – treismanwolfe

関連する問題