Ключевые слова:sound, example, (найти похожие документы)
_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _
From : Dima Simakov 2:5000/106.4 11 May 98 16:25:40
Subj : wav'чик записать с микрофона, с оцифровкой 44kHz, mono?
________________________________________________________________________________
Hello, Mike !
Thursday May 07 1998 22:05, Mike Iokhvin wrote to All:
MI> А не подскажете ли, чем мне под эхотагом wav'чик записать с
MI> микрофона, с оцифровкой 44kHz, mono? cat /dev/audio > file.au -- не
MI> катит, у меня качество какое-то ущербное получается, да и степень
MI> оцифровки не задать.. Может научите, а то до зарезу надо!
MI> Если есть какая-нибудь софтина -- подскажите URL, pls!
Быть может я извpащенец,но быстpее было самому написать...
Фильтpуешь чеpез sox - на выходе получаешь то,что тебе нужно(wav) ;)
=== Cut ===
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdarg.h>
#include <signal.h>
#include <linux/soundcard.h>
static int audio_fd;
static int audio_buf_size=0;
static int stereo=1;
static int frequency=44100;
static int play_fmt=AFMT_S16_LE;
int *buffer;
void error(char *s){ fprintf(stderr,"%s\n",s); exit();}
void msg(char *s) { fprintf(stderr,"%s",s);}
void sig_quit(int sig_num)
{
close(audio_fd);if(buffer) free(buffer);fprintf(stderr,"\nexiting...\n");
exit();
}
usage()
{
fprintf(stderr,"usage: audio -f{8000,11000,22000,44100} -s{0,1} \n");
exit();
}
int main(int argc,char *argv[])
{
int i;
if(argc<2) usage();
for(i=1;i<argc;i++)
{
if(strncmp(argv[i],"-f",2)==0) frequency=atoi(argv[i]+2);
else
if(strncmp(argv[i],"-s",2)==0) stereo=atoi(argv[i]+2);
else usage();
}
signal(SIGINT,sig_quit);
if((audio_fd = open ("/dev/dsp", O_RDWR, 0))==-1)error("unable to open
file");
msg("\nSetting up dsp data format:");
if(ioctl(audio_fd, SNDCTL_DSP_SETFMT,&play_fmt))error("unable set
FMT");msg("Ok");
msg("\nSetting up mode");
switch(stereo){
case 0: msg(" mono");break;
case 1: msg(" stereo");break;
default: error("Unknown mode... must be 0(mono) or 1(stereo)");
}
if(ioctl(audio_fd, SNDCTL_DSP_STEREO, &stereo))error("unable
set");msg("Ok");
msg("\nSetting up frequency:");
if(ioctl(audio_fd, SNDCTL_DSP_SPEED, &frequency))error("unable
set");msg("Ok");
msg("\nTrying to get audio buffer size:");
if(ioctl(audio_fd, SNDCTL_DSP_GETBLKSIZE, &audio_buf_size))error("unable to
get audio buffer suze");msg("Ok");
if(audio_buf_size<1024) audio_buf_size=1024;
buffer=(int *)malloc(audio_buf_size);
if(!buffer) error("cannot allocate buffer");
msg("\npress Ctrl-C to stop recording...");
while(1)
{
read(audio_fd,buffer,audio_buf_size);
write(1,buffer,audio_buf_size);
}
}
=== Cut ===
See you later!
[team HCI_NSU] [team WarNet]
--- / Linux 2.0.30 / DosEmu 0.66.2 / GoldEd 3.0 beta2 * Origin: Подохнуть у поpога обетованной земли... (с) ГpОб (2:5000/106.4)