From owner-FreeBSD-users-jp@jp.FreeBSD.org Fri May 10 16:03:58 2002
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) id g4A73wi93614;
	Fri, 10 May 2002 16:03:58 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from pikachu.bsp.bc.niigata-u.ac.jp (pikachu.bsp.bc.niigata-u.ac.jp [133.35.85.2])
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) with SMTP/inet id g4A73vf93609
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Fri, 10 May 2002 16:03:58 +0900 (JST)
	(envelope-from iwaki@bc.niigata-u.ac.jp)
Received: (qmail 8115 invoked by alias); 10 May 2002 16:03:54 +0900
Message-ID: <20020510070353.8105.qmail@pikachu.bsp.bc.niigata-u.ac.jp>
Date: Fri, 10 May 2002 16:03:53 +0900 (JST)
To: FreeBSD-users-jp@jp.FreeBSD.org
From: Mamoru Iwaki <iwaki@bc.niigata-u.ac.jp>
In-Reply-To: <20020509063432.GB8960%ginga-freebsd@ginganet.org>
References: <20020508102405.GA6225%ginga-freebsd@ginganet.org>
	<20020509043608.4043.qmail@pikachu.bsp.bc.niigata-u.ac.jp>
	<20020509063432.GB8960%ginga-freebsd@ginganet.org>
X-Mailer: Mew version 2.1 on Emacs 21.2 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Reply-To: FreeBSD-users-jp@jp.FreeBSD.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+020417
X-Sequence: FreeBSD-users-jp 68418
Subject: [FreeBSD-users-jp 68418] Re: Q. pcm and sbc in O_RDWR
Errors-To: owner-FreeBSD-users-jp@jp.FreeBSD.org
Sender: owner-FreeBSD-users-jp@jp.FreeBSD.org
X-Originator: iwaki@bc.niigata-u.ac.jp

$B4d>k$G$9!#(B

From: Kawaguti Ginga <ginga-freebsd@ginganet.org>
Subject: [FreeBSD-users-jp 68405] Re: Q. pcm and sbc in O_RDWR
Date: Thu, 9 May 2002 15:34:32 +0900

> > $B$=$N$H$-$O!"$&$^$/9T$-$^$7$?$+!)(B
> 
> $BBgBN$J$s$H$+$J$C$F$$$?$O$:$G$9!%(B
> ($BF~NO$r$A$g$C$H=hM}$7$FCY1dEy2C$($D$D:F@8!$$G$9(B)

$B$=$&$G$&$+!#;d$O(B2$BBf$"$kCf$N0l$D$G$7$+;W$$DL$j$KF0$+$J$$$N$GG:$s$G$$(B
$B$^$9!#(B

> $B$9$_$^$;$s!$(BNG $B$H$$$&$N$O$I$&(B no good $B$J$N$G$7$g$&$+(B?
>   * $B%G%P%$%9$,3+$1$J$$(B

open()$B$G$O%(%i!<$K$J$j$^$;$s!#(B

>   * loop back mixing $B$,@Z$jN%$;$J$$(B

"loop back mixing"$B$,2?$J$N$+J,$+$j$^$;$s!#(B
$B$b$7%^%$%/7O$H%9%T!<%+7O$,$[$H$s$ID>7k$7$?$3$H$K$h$k%O%&%j%s%0$N$h$&(B
$B$J$3$H$@$H$9$l$P!"$=$l$O5/$-$F$$$J$$$N$GLdBj$J$$$H;W$$$^$9!#(B

>   * $B%W%m%0%i%`$OF0$/$1$I!$4|BT$7$?$b$N$H0c$&(B($B$I$&0c$&(B?)

$B$=$&$G$9!#4|BT$NF0:n$O!"(B

$B!&%^%$%/$+$iF~NO$7$?2;$r!";XDj$7$?CY1d$N8e$K!"%9%T!<%+$+$i=PNO$9$k!#(B
$B!&8=:_$N@_Dj$G$OCY1d$,(B0.2$BIC$H$J$C$F$*$j!"IwO$>l463P$rBN83$G$-$k!#(B

$B$G$9!#(BOK$B$H8@$C$F$$$?%^%7%s$G$O!"$[$\$3$NDL$j$KF0$$$F$$$^$9!#!JCY1d;~(B
$B4V$,@53N$G$OL5$$$3$H$O!"<!$NLdBj$G$9!#!K(B

NG$B$H8@$C$F$$$k$N$O!"(Bsbc+pcm$B$N>l9g$G!"(B

$B!&!V%P%C%P%C%P%C(B...$B!W$H!"%P%:$,O"B3$7$FJ9$($k!#(B
$B!&%^%$%/$K8~$+$C$F2?$+C}$k$H!">e5-$NCf$K2?$+$,J9$($k!#(B

$B$H$$$&6q9g$$$G$9!#(B

$B$3$l$i(BOK$B$H(BNG$B$NN>%^%7%s$H$b!"%W%m%0%i%`<B9T;~$N=PNO$O<!$N$h$&$K$J$C$F(B
$B$$$^$9!#!J(B2002/5/10$BHG$G$9!K(B

   devname = /dev/dspW
        fd = 3
   o_flags = 2
    format = 16
  channels = 1
     speed = 44100
 frag_size = 2048
      caps = 00003300
     delay = 0.200000

> > % cat /dev/sndstat 
> > FreeBSD Audio Driver (newpcm)
> > Installed devices:
> > pcm0: <SB16 DSP 4.16> at io 0x220 irq 5 drq 1:5 bufsz 4096d
> > (1p/1r/0v channels duplex)
> 
> $B$3$l!$3N$+(B AWE64 $B$G$9$h$M!%(BAWE64 gold $B$O?($C$?$3$H$"$j$^$9$,(B
> hardware $B$O(B full duplex $B$J$N$@$1$I$&$^$/(B loop back $BJ,$r(B
> $B@Z$jN%$;$?$+$I$&$+3P$($F$$$^$;$s(B(OSS)

AWE64$B$N=i4|%b%G%k$G$9!#(BOSS$B$N%$%s%9%H!<%i$K$h$k$H(B

   -CTL009D #Creative Sound Blaster AWE64 (type-1)

$B$@$=$&$G$9!#(BIDE$B%$%s%?!<%U%'!<%9$bIU$$$F$$$k$d$D$G(B

ata4: <Generic ESDI/IDE/ATA controller> at port 0x168-0x16f,0x36e-0x36f irq 10 on isa0

$B$J$s$F$N$bG'<1$5$l$F$$$^$9!#(B

loop back$BJ,$r@Z$jN%$9$H$O!"@h$K;XE&$$$?$@$$$?(Bloop back mixing$B$H$$$&(B
$B$b$N$H4X78$,$"$k$N$G$7$g$&$+!)(B

> > iwaki@mi000_[2]% mixer

> > Mixer line     is currently set to   0:0
> line 0 $B$C$FO?2;%\%j%e!<%`(B0 $B$H$$$&$3$H$G$O$"$j$^$;$s$+(B?
> > Mixer mic      is currently set to  90:90
> mic $B$NJ}$r;H$C$F$$$k$N$G$7$g$&$+(B?

$B$O$$!"(Bdd if=/dev/dspW of=aaa $B$N$h$&$K$9$l$PO?2;$G$-$F$$$^$9!#(B

> > Mixer igain    is currently set to  90:90
> > Mixer ogain    is currently set to  90:90
> 
> igain $B$?$V$s=EMW!$$J$N$G$9$,$3$N(B igain, ogain $B$C$F(B
> $B2?$KBP1~$9$k$N$+NI$/J,$+$j$^$;$s(B...

$B;d$N$H$3$m$G$O!"(Bmic$B$H(Bigain$B$r6&$K>e$2$J$$$H!">.$5$J2;$GO?2;$5$l$F$7$^(B
$B$$$^$9!#(B

> > > # full duplex $B$GF0$/$N$O3N$+$J$s$@$1$I!$(B($B%I%i%$%P$K$h$C$F$O(B?)
> > > # in => out $B$X$N(B mixing $B$r;_$a$kJ}K!$,J,$+$i$J$$(B
> > > # $B$b$N$b$"$j$^$9!%;_$a$k$H:F@8$7$?$$$b$N$b;_$^$C$A$c$&E[$H$+!%(B

$B$"!"$3$l$,!"(Blook back mixing$B$G$9$+$M!#(B

> sbc $B$,!$$H$$$&$h$j$O%O!<%I%&%'%"$NJ}$NLdBj$@$C$?$j$7$J$$$G$7$g$&$+!%(B

$B$=$&$+$bCN$l$^$;$s!#$G$bB>$K%O!<%I$N;}$A9g$o$;$,$J$$$N$G;n$;$^$;$s!#(B
$B3'$5$s$N4D6-$G$O!"4|BTDL$NF0:n$r$7$F$$$k$N$G$7$g$&$+!#(B
$B$b$7;n$;$kJ}$O7k2L$r65$($F$b$i$($k$H$&$l$7$$$G$9!#(B

> (mixer $B$H$+$J$s$F$I$&$;$I$C$+$N%l%8%9%?(B(?)$B$r(B
> $B%;%C%H$7$F$$$k$@$1$G$9$h$M!$$-$C$H(B)

$B$=$&$G$9$M!#(B
$B@n8}$5$s$b;XE&$5$l$F$$$kDL$j!"$3$NJU$N@\B3>u67$K$OI8=`$H$$$($kDx$N$b(B
$B$N$,$J$/$F>lEv$?$jE*$K$J$k$3$H$,B?$$$HJ9$-$^$9!#(B

> > > $B$3$N(B SNDCTL_DSP_SETFRAGMENT $B;H$C$F$bBLL\$G$7$?$G$7$g$&$+(B?
> > 
> > $B$^$@!";n$7$F$$$^$;$s!#:#EY$d$C$F$_$^$9!#(B
> 
> $B$3$l$OK\Ev$K0lHV:G=i$K$d$kI,MW$,$"$j$^$9!%(B

$B$3$l$rF~$l$?HG!J(B2002/5/10$BHG!K$r(B

   http://www.bsp.bc.niigata-u.ac.jp/~iwaki/tmp/delay.c

$B$K5/$-$^$7$?!#!JA0$HF1$8%"%I%l%9$G$9!K(B
$B<B9T7k2L$O!"%P%C%U%!%5%$%:$OJQ$k$b$N$N!"4|BT$7$?F0:n$K$O$J$j$^$;$s$G(B
$B$7$?!#%P%C%U%!%5%$%:$O!"(B

173:    sdc.frag_size = (0x7fff << 16) | 11u;

$B$N(B11u$B$GJQ99$7$^$9!#$3$N>l9g!"(B2**11 = 2048byte $B$G$9!#(B
8u$B$H$+(B4u$B$K$9$k$H!"!V%P%C%P%C%P%C(B...$B!W$N4V3V$,C;$/46$8$^$9!#(B
16u$B$K$9$k$H!"!V%P%V!<!"%P%V!<!"!"!"!W$,!"(B10$BIC$K(B7$B2s$/$i$$$NIQEY$G7+$j(B
$BJV$7J9$($^$9!#(B

$B!t(BWARNING: delay is too short$B$,=P$^$9$,!"CY1d;~4VJ,$h$j$b%P%C%U%!$,(B
$B!tBg$-$/$J$C$F$7$^$C$?;~$N7Y9p$J$N$G!"LdBj$J$$$H;W$$$^$9!#(B

> > > # SNDCTL_DSP_GETCAPS $B$9$l$PJ,$+$k$s$8$c$J$+$C$?$+$J(B...

> oss $B%^%K%e%"%k(B p98 $B$K$G$F$$$^$9$,!$(BGETCAPS $B$8$c$J$$$G$9(B($B$9$_$^$;$s(B)$B!%(B
> GETBLKSIZE or GETISPACE/GETOSPACE $B$G$9!%(B
> ($B<+J,$N(B source $B$b8+D>$7$?$i(B SNDCTL_DSP_GETBLKSIZE $B$r;H$C$F$$$^$7$?(B)

GETCAPS$B$b$d$C$F$_$^$7$?!#$=$N7k2L!"(B

   caps = 00003300

$B$@$C$?$N$G!"(B<sys/soundcard.h>$B$K$"$k(B

#define DSP_CAP_TRIGGER         0x00001000 /* Supports SETTRIGGER */
#define DSP_CAP_MMAP 0x00002000 /* Supports mmap() */

#define DSP_CAP_DUPLEX          0x00000100 /* Full duplex record/playback */
#define DSP_CAP_REALTIME        0x00000200 /* Real time capability */

$B$,;H$($k$H$$$&$3$H$N$h$&$G$9!#(B

> > > $B$=$l$+$i(B... #define FLAGS   O_RDWR $B$C$F%I%i%$%P$K$h$C$F(B(?)
> > > /dev/dsp0 $B$H(B /dev/dsp1 $B$r(B write/read $B$G3+$+$J$$$H$$$1$J$+$C$?$j(B
> > > $B$7$?$h$&$J5$$b!%(B
> > 
> > $B$=$&$J$s$G$9$+!#$3$l$OCN$j$^$;$s$G$7$?!#(B
> > $B$3$NJU$N$3$H$O2?$r8+$?$i$h$$$G$7$g$&$+!)(B
> 
> $B$h$/$o$+$j$^$;$s!%%I%i%$%P(B(?)$B$K$h$C$F(B try & error $B$J(B
> $B>uBV$@$C$?$H;W$$$^$9(B($B$J$N$G(B #ifdef $B$7$F$$$^$7$?(B)$B!%(B

$B$b$7$h$1$l$P$=$N(B#ifdef$B$N>l9gJ,$1$r65$($F$b$i$($^$;$s$+!)(B

> > > $B$"$H!$(BSNDCTL_DSP_RESET $B$C$FI,MW$G$9$+(B?

> >      The device must be reset using the ioctl SNDCTL_DSP_RESET
> >      before it can accept new sampling parameters.
> 
> $B$3$l$O$?$V$sESCf$G(B sampling rate $B$r@Z$jBX$($k;~$O(B
> RESET $B$+$1$^$7$g$&!$$H$$$&$3$H$8$c$J$$$+$H;W$$$^$9!%(B

#if 0$B$G30$7$F$_$^$7$?!#(BOK$B$_$?$$$G$9!#(B

> $B$"$H!$(Bp106 $B$K(B "full duplex $B$N=q$-J}$N4pK\(B" $B$C$F$N$,(B
> $B:\$C$F$^$9$M!%$3$N(B SNDCTL_DSP_SETDUPLEX $B$,(B(OSS$B$@$H(B)
> $BI,MW$@$C$?$j$7$J$$$G$7$g$&$+(B?

$B:#$O!"(B#if 0$B$7$F$"$j$^$9$,!"(B

ioctl(sdc->fd, SNDCTL_DSP_SETDUPLEX, 0)

$B$,(B-1$B$G5"$C$F$-$F$7$^$&$N$,Ff$G$9!#4|BTDL$NF0:n$r$7$F$$$k%^%7%s$G$b$G(B
$B$9!#(B
---
-----
$B?73cBg3X(B $BBg3X1!<+A32J3X8&5f2J(B
$B4d>k(B $B8n(B (iwaki@bc.niigata-u.ac.jp)
