Ir para conteúdo
Fórum Script Brasil
  • 0

Reprodução e gravação no Matlab


Guest --Gustavo --

Pergunta

Guest --Gustavo --

Alguém sabe como eu faço para reproduzir um som e ao mesmo tempo gravá-lo no Matlab?

Primeiro usei o wavplay para reproduzir.

Logo abaixo para gravar usei o wavrecord.

O som foi reproduzido mas não foi gravado.

Alguém pode me ajudar?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Guest --Gilson --

Oi Gustavo.

Tenho um arquivo pro matlab, que usei na faculdade pra gravar um som e ouvir.

Acho que é isso que você quer.

Não tem como anexar arquivos aki?

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Gilson --

Gustavo,

São essas linhas de comando.

Copie e cole no editor do matlab, conecte um microfone, execute e se divirta.

Espero que tenha conseguido te ajudar.

Abraços

AI = analoginput('winsound',0);

chan = addchannel(AI,1);

AI

% printing few parameters

get(AI)

% printing all parameters

%the following commands

%will set the sample rate, the number of samples to acquire, and the trigger condition.

%In this example, we will take 44,100 samples in one second (this is a standard audio

%rate). We will trigger the hardware manually, which means that when we would

%like the sound card to start collecting data from the microphone when we type the

%command trigger(AI).

% AI - In case you want to take a look at the parameters print the

% structure "AI"

duration = 10;

SampleRate = 44100;

SampleRate = 44100;

set(AI,'SampleRate',SampleRate);

set(AI,'SamplesPerTrigger',duration*SampleRate);

set(AI,'TriggerType','Manual');

%AI

% To acquire: start, trigger and get data

%AI

start(AI);

%AI

trigger(AI);

%AI

data = getdata(AI);

fid = fopen('som.bin', 'wb');

fwrite(fid, data, 'double');

fclose(fid);

fid2 = fopen('som.bin', 'rb');

read_data = fread(fid2, 'double')';

read_data = read_data';

data2 = data(1:2:size(data));

data4 = data(1:4:size(data));

data8 = data(1:8:size(data));

data16 = data(1:16:size(data));

data32 = data(1:32:size(data));

%plotting

figure(1); plot(data)

figure(10); plot(data2)

figure(11); plot(data4)

figure(12); plot(data8)

figure(13); plot(data16)

figure(14); plot(data32)

% closing the device

%waittilstop(AI,2)

wait(AI,2)

delete(AI)

clear AI

fft1 = fft(data);

% fft2 = fft(data2);

fft4 = fft(data4);

% fft8 = fft(data8);

% fft16 = fft(data16);

% fft32 = fft(data32);

%figure(3); plot(abs(fft1))

fft1s = fftshift(fft1);

%fft2s = fftshift(fft2);

fft4s = fftshift(fft4);

%fft8s = fftshift(fft8);

%fft16s = fftshift(fft16);

%fft32s = fftshift(fft32);

fft_x_coord = -SampleRate/2: SampleRate/(size(fft1s,1)-1) :SampleRate/2;

figure(20); plot(fft_x_coord/1000, abs(fft1s))

% fft_x_coord = -SampleRate/4: (SampleRate/2)/(size(fft2s,1)-1) :SampleRate/4;

% figure(22); plot(fft_x_coord/1000, abs(fft2s))

%

% fft_x_coord = -SampleRate/8: (SampleRate/4)/(size(fft4s,1)-1) :SampleRate/8;

% figure(24); plot(fft_x_coord/1000, abs(fft4s))

AO = analogoutput('winsound',0);

chan = addchannel(AO,1);

%% Set the sample rate and how long we will send

%% data for Data Acquisition at 44,100 Hz, 1 seconds of data

duration = 5;

SampleRate = 44100;

%SampleRate = 44100/2;

set(AO,'SampleRate',SampleRate)

set(AO,'TriggerType','Manual')

%NumSamples = SampleRate*duration;

%% Create a signal that we would like to send, 500 Hz sin wave

%x = linspace(0,2*pi*500,NumSamples);

%data = sin(x)';

%% Put the data in the buffer, start the device, and trigger

%putdata(AO,data)

putdata(AO,read_data)

%putdata(AO,data2)

%putdata(AO,data)

%putdata(AO,data)

%putdata(AO,data)

%putdata(AO,data32)

start(AO)

trigger(AO)

%% clean up, close down

%%waittilstop(AO,5)

wait(AO,duration+2)

delete(AO)

clear AO

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...