2

2つのベクトルをMATLABの関数への入力として使用できるようにしたいので、最初のベクトルには再生したいすべての周波数があり、2番目のベクトルには対応する各ノートの持続時間があります。私がこれまでに持っているのは:

%% Initialize
clear; format short e;

%% Possible Notes
octave = [55 110 220 440 880];
for k = 1:length(octave)
    pause = 0;
    A(k) = octave(k);
    As(k) = octave(k).*2^(1/12);
    B(k) = octave(k).*2^(2/12);
    C(k) = octave(k).*2^(3/12);
    Cs(k) = octave(k).*2^(4/12);
    D(k) = octave(k).*2^(5/12);
    Ds(k) = octave(k).*2^(6/12);
    E(k) = octave(k).*2^(7/12);
    F(k) = octave(k).*2^(8/12);
    Fs(k) = octave(k).*2^(9/12);
    G(k) = octave(k).*2^(10/12);
    Gs(k) = octave(k).*2^(11/12);
end

%% Notes and Durations
Notes = [D(2) D(3) D(2) D(2) C(3) D(2) D(2) A(3) A(2) ...
         A(2) G(2) A(2) A(2) F(3) Fs(3) D(2)];
Times = [1/4  1/4  1/5  1/5  1/4  1/5   1/5 1/4  1/5 ...
         1/5  1/4  1/5  1/5  1/4  1/8   1/4];

%% Play the Song
playSong(Notes, Times);

'playSong'関数には次のものがあります。

function [song] = playSong(freqs, times)
fs = 44600;
makeNote = @(freq, time) cos(2*pi*[1:time]/fs * freq);
song = []

%% For Loop
for k = 1:length(freqs)
    % make the song somehow
end

sound(song, fs)
end

再生するサウンドのベクトルを作成する方法を検討してきましたが、その方法がわからないようです。誰かが私がこれについてどうやって行くのか知っていますか?

4

1 に答える 1

4

(a)soundまたはsoundscを使用して、信号データのベクトル\マトリックスをサウンドに変換できます。

(b)サウンドカードを使用してオーディオを生成する場合で、32ビットバージョンのMATLABとData Acquisition Toolboxを使用している場合は、その使用方法の例を参照してください。

(c)を使用してオーディオオブジェクトにオーディオを録音し、「audioplayer」audiorecorderを使用して再生できます。

ノートを実装して再生する方法については、これらすべてのオプションにいくつかの例があります。

于 2013-02-14T06:10:24.660 に答える