From owner-FreeBSD-users-jp@jp.freebsd.org  Wed Feb 24 21:01:37 1999
Received: (from daemon@localhost)
	by jaz.jp.freebsd.org (8.9.2+3.1W/8.7.3) id VAA08605;
	Wed, 24 Feb 1999 21:01:37 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from hlla.is.tsukuba.ac.jp (kisaragi.hlla.is.tsukuba.ac.jp [130.158.82.33])
	by jaz.jp.freebsd.org (8.9.2+3.1W/8.7.3) with ESMTP id VAA08598
	for <FreeBSD-users-jp@jp.freebsd.org>; Wed, 24 Feb 1999 21:01:35 +0900 (JST)
	(envelope-from sakamoto@hlla.is.tsukuba.ac.jp)
Received: from localhost (neuron [130.158.82.53])
	by hlla.is.tsukuba.ac.jp (8.9.1/3.7W) with ESMTP id VAA07956;
	Wed, 24 Feb 1999 21:01:34 +0900 (JST)
To: FreeBSD-users-jp@jp.freebsd.org, yohta@bres.tsukuba.ac.jp
In-Reply-To: Your message of "Wed, 24 Feb 1999 19:30:07 +0900 (JST)"
	<199902241030.TAA19678@nazuna.bres.tsukuba.ac.jp>
References: <199902241030.TAA19678@nazuna.bres.tsukuba.ac.jp>
X-Mailer: Mew version 1.92.4 on Emacs 19.28 / Mule 2.3 (SUETSUMUHANA)
Mime-Version: 1.0
Content-Type: Multipart/Mixed;
	boundary="--Next_Part(Wed_Feb_24_20:28:27_1999_177)--"
Content-Transfer-Encoding: 7bit
Message-Id: <19990224210134N.sakamoto@hlla.is.tsukuba.ac.jp>
Date: Wed, 24 Feb 1999 21:01:34 +0900
From: Hideki SAKAMOTO <sakamoto@hlla.is.tsukuba.ac.jp>
X-Dispatcher: imput version 971024
Lines: 159
Reply-To: FreeBSD-users-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+981115
X-Sequence: FreeBSD-users-jp 39220
Subject: [FreeBSD-users-jp 39220] Re: sound recording
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org
X-Originator: sakamoto@hlla.is.tsukuba.ac.jp

----Next_Part(Wed_Feb_24_20:28:27_1999_177)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

$BC^GHBg$N:d85$G$9!#(B

From: yohta@bres.tsukuba.ac.jp (Yoshihiko OHTA)
Subject: [FreeBSD-users-jp 39216] sound recording
Date: Wed, 24 Feb 1999 19:30:07 +0900 (JST)

>   $BC^GHBg$NB@ED$G$9!#(B
> 
>   LINE $BF~NO$NO?2;$K$D$$$F65$($F$/$@$5$$!#(B
> 
>   $B8=:_(B SONY PCG-505R (SoundBlaster Pro $B8_49(B)+ 3.0-RELEASE + PAO3
> + snd-ESS-3.0R-19990216.tar.gz $B$H$$$&9=@.$G;HMQ$7$F$$$^$9$,!"(B
> 	% mixer line 75:75
> 	% mixer =rec line
> 	% cat /dev/audio > test.au
> 	cat: /dev/audio: Resource temporarily unavailable
> $B$H$$$o$l$F$7$^$$$^$9!#(Bdd $B$G$bF1MM$G$9!#$?$@$74{B8$N(B .au $B%U%!%$%k(B
> $B$rLD$i$9$N$K$OLdBj$"$j$^$;$s!#(BESS $B%I%i%$%P$O8=:_$O$^$@O?2;$O$G$-(B
> $B$J$$$N$G$7$g$&$+!)(B

ESS$B%I%i%$%P$N%P%0$G$7$?!#6aF|Cf$K8x3+M=Dj$NHG$G$OD>$C$F$$$k$O$:$G$9!#(B
$B$C$H=q$$$F$$$k$&$A$K=PMh$?$H$N%a!<%k$r;0J?$5$s$h$j$$$?$@$-$^$7$?$N$G!"(B
$B:G?7HG$r<h$j4s$;$F$_$F$/$@$5$$!#:#F|(B(19990224)$BIU$1$NHG$G$9!#(B

$B$D$$$G$K9pCN$r$5$;$F$/$@$5$$!#$3$NHG$,K\2H$KH?1G$7$F$b$i$&$Y$/!"(BLuigi
$B$5$s$K%Q%C%A$rAw$k$?$a$N:G=*HG(B($B$H$J$kM=Dj(B)$B$G$9!#%F%9%H$K$46(NO$r$*4j$$(B
$B$7$^$9!#%Q%C%A$O!";0J?$5$s$,8x3+$7$F2<$5$C$F$$$^$9!#8x3+>l=j$O!"(B
    http://www.jp.freebsd.org/~sanpei/
$B$G$9!#(B

>   $B<!$K(B ESS $B%I%i%$%P$G$J$/(B VoxWare $B$rMQ$$$FF1MM$KO?2;$7$?7k2L!"(B
> $BO?2;$,$G$-$^$7$?$,!"$3$l$O(B 8-bit u-law, mono, 8kHz $B$J$N$G!"$b$C(B
> $B$H$$$$2;<A$GO?2;$7$?$$$N$G$9$,!"$I$&$9$l$P$$$$$G$7$g$&$+!)(B

$BKM$b$"$^$jNI$/J,$+$C$F$$$J$$$N$G$9$,!"(Bcat$B%3%^%s%IEy$GD>@\(Bread/write$B$9(B
$B$k$H!"B@ED$5$s$,>e$K=q$$$F$$$k%U%)!<%^%C%H$G8GDj$H$J$k$h$&$G$9!#%P%0%U%#%C(B
$B%/%9MQ$K:n$C$?4JC1$J%W%m%0%i%`$rE:IU$7$^$9$N$G!";29M$K$7$F2<$5$$!#(B
# users-ML$B$KN.$l$F$$$?%W%m%0%i%`$NN.MQ$G$9!#(B

>   $B$H$j$"$($:(B ports $B$N(B audio $B$N%G%#%l%/%H%j$r8+$F!"(Bmxv $B$H(B nas $B$r(B
> $B;n$7$^$7$?!#(B

$B$b$7$3$l$i$N%"%W%j%1!<%7%g%s$,%G%P%$%9%U%!%$%k$r(BRDWR$B$G(Bopen$B$7$F$$$k$h$&(B
$B$@$H!":G?7HG$G$bBLL\$@$H;W$$$^$9!#(B

---
  $B:d85(B  $B1Q5*(B   (Hideki Sakamoto) $BC^GHBg3X9)3X8&5f2J(B
  e-mail: sakamoto@hlla.is.tsukuba.ac.jp

----Next_Part(Wed_Feb_24_20:28:27_1999_177)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

/*
        Sound Record Test Program
        Recorded sound is played from /dev/dsp.
*/
#include<stdio.h>
#include<sys/types.h>
#include<sys/ioctl.h>
#include<fcntl.h>
#include<unistd.h>
#include<machine/soundcard.h>

#define LENGTH 3        /* Sampling time (sec) */
#define RATE 44100       /* Sampling rate */
#define SIZE 16          /* 8 or 16 bit */
#define CHANNELS 2      /* 1 = mono, 2 = stereo */

unsigned char wavbuf[LENGTH*RATE*SIZE*CHANNELS/8];

int main(int argc, char *argv[])
{
        int wavdev;
        int arg;
        int status;
	int sum = 0;

        wavdev = open("/dev/dsp", O_RDONLY);
        /* wavdev = open("/dev/dsp", O_RDWR); */
        if (wavdev < 0) {
                perror("open /dev/dsp failed");
                exit(1);
        }

        arg = SIZE;
        status = ioctl(wavdev, SOUND_PCM_WRITE_BITS, &arg);
        if(status == -1)
                perror("SOUND_PCM_WRITE_BITS ioctl failed");
        if(arg != SIZE)
                perror("unable to set sample size");

        arg = CHANNELS;
        status = ioctl(wavdev, SOUND_PCM_WRITE_CHANNELS, &arg);
        if (status == -1)
                perror("SOUND_PCM_WRITE_CHANNELS ioctl failed");
        if (arg != CHANNELS)
                perror("unable to set number of channels");

        arg = RATE;
        status = ioctl(wavdev, SOUND_PCM_WRITE_RATE, &arg);
        if (status == -1)
                perror("SOUND_PCM_WRITE_RATE ioctl failed");

        printf("Say something:\n");
	while (sum < (int) sizeof(wavbuf)) {
	    status = read(wavdev, &wavbuf[sum], sizeof(wavbuf) - sum);
	    if (status == -1) {
		printf("read fail\n");
		exit(1);
	    } else {
	        sum += status ;
	    }
	}

        close(wavdev);

        wavdev = open("/dev/dsp", O_WRONLY);

        arg = SIZE;
        status = ioctl(wavdev, SOUND_PCM_WRITE_BITS, &arg);
        if(status == -1)
                perror("SOUND_PCM_WRITE_BITS ioctl failed");
        if(arg != SIZE)
                perror("unable to set sample size");

        arg = CHANNELS;
        status = ioctl(wavdev, SOUND_PCM_WRITE_CHANNELS, &arg);
        if (status == -1)
                perror("SOUND_PCM_WRITE_CHANNELS ioctl failed");
        if (arg != CHANNELS)
                perror("unable to set number of channels");

        arg = RATE;
        status = ioctl(wavdev, SOUND_PCM_WRITE_RATE, &arg);
        if (status == -1)
                perror("SOUND_PCM_WRITE_RATE ioctl failed");

	sum = 0;
        printf("You said:\n");
	while (sum < sizeof(wavbuf)) {
	    status = write(wavdev, &wavbuf[sum], sizeof(wavbuf)-sum);
	    if (status == -1) {
		printf("write fail\n");
		exit(1);
	    } else {
		sum += status ;
	    }
	}

        close(wavdev);
        return 0;
}

----Next_Part(Wed_Feb_24_20:28:27_1999_177)----
