Play a sound at certain frequency and recording it simultaneously
Mostra commenti meno recenti
Hello,
I am a novice and I need your help
The code below helps me to generate a sound at certain frequency for a certain duration, how to I record simultaneously and write it
to a file?
Fs = 44100; % Samples per second. 48000 is also a good choice
toneFreq = 22000; % Tone frequency, in Hertz. must be less than .5 * Fs.
nSeconds = 10; % Duration of the sound
a = sin(linspace(0, nSeconds*toneFreq*2*pi, round(nSeconds*Fs)));
sound(a,Fs); % Play sound at sampling rate Fs
2 Commenti
alon cohen
il 12 Apr 2020
why did you choose specificly Fs=44100 (or 48000) ?
how does changing Fs affect the real frequency i hear out of my computer?
thanks.
Walter Roberson
il 12 Apr 2020
44100 is the standard for CDs. It was a compromise based upon what available electronic circuits could affordably do at the time.
48000 is the standard for Digital Video, which came later than CDs.
Audio professionals say that the difference between 44100 and 48000 would be undetectable or barely detectable by humans.
Risposta accettata
Più risposte (1)
Walter Roberson
il 4 Mar 2019
You would probably only want to record what is playing if:
- you need to measure the distoration characteristics of your audio system; or
- you are using sound() to overlay multiple sounds and want to record the mix. Using sound() this way makes it pretty much impossible to synchronize the sounds, so this is not a good mixer.
What you would normally do instead is simply
audiowrite('FileNameGoeshere.wav', a, Fs)
Categorie
Scopri di più su Audio and Video Data in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!