SUMMARY: Full controll over /dev/audio from the command line

From: Misha Pavlov (pavlovm@toexpres.com)
Date: Tue Aug 15 1995 - 06:55:01 CDT


Subject: SUMMARY: Full controll over /dev/audio from the command line

Thanx a lot guys, you saved me a whole day of hacking and learning.

My original post:
> Does anyone has ability to redirect audio output of /dev/audio
> to external speaker ( as using audio(gain)tool ), but
> FROM THE COMMAND LINE ?
> I do have netaudio, rplay, gaintool codes and bins, but don't realy feel like
> hacking with C code on this subject.

The winnner is Glenn Satchell
Glenn.Satchell@uniq.com.au (Glenn Satchell - Uniq Professional Services)
He sent me exactly what i was looking for - 3 liner ( well, 43 to be exact )
Which does that simple job.
Thank you VERY much, Glenn.

#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sun/audioio.h>
 
audio_info_t info;
 
main(argc,argv)
int argc;
char **argv;
{
        int audio_fd;
 
        if(argc == 1) {
                        fprintf(stdout,"usage: spkr [on|off|status]\n");
                        exit(1);
        }
        if((audio_fd = open("/dev/audioctl", O_RDWR)) == -1) perror("open");
        AUDIO_INITINFO(&info); /* initialise structure */
        while(argc > 1) {
                if(argv[1][0] == 'o' && argv[1][1] == 'f') { /* off */
                        info.play.port = AUDIO_HEADPHONE;
                        if( ioctl(audio_fd, AUDIO_SETINFO, &info) == -1)
                                perror("audio setinfo");
                }
                else if(argv[1][0] == 'o' && argv[1][1] == 'n') { /* on */info.play.port = AUDIO_SPEAKER;
                        if( ioctl(audio_fd, AUDIO_SETINFO, &info) == -1)
                                perror("audio setinfo");
                }
                else if(argv[1][0] == 's' && argv[1][1] == 't') { /* status */
                        if( ioctl(audio_fd, AUDIO_GETINFO, &info) == -1)
                                perror("audio getinfo");
                        printf("Speaker is %s\n",
                                (info.play.port == AUDIO_SPEAKER) ? "on" : "off");
                }
                else { /* bad arg */
                        fprintf(stdout,"usage: spkr [on|off|status]\n");
                        exit(1);
                }
                argc--;
                argv++;
        }
        exit(0);
        /* NOTREACHED */
}

2 other came from Claus Assmann and Avery Earle.

From: Avery Earle <ae@play.psych.mun.ca>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Following does not do what you want as it stands but the extension is
trivial. Cheers.

Did not tried it - MP

#include <stdio.h>
#include <errno.h>

#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/param.h>

#include <sys/ioctl.h>
#include <sun/audioio.h>

void main(argc, argv)
        int argc;
        char *argv[];
{
        FILE *f;
        audio_info_t A;
        int fd, j;

        f= fopen ("/dev/audioctl", "rw");
        if (f==(FILE*) 0) {
                printf ("Error opening /dev/audioctl\n");
                exit (1);
        }
        fd = fileno (f);

        AUDIO_INITINFO (&A);

        /* Establish these as reasonable defaults. */

        A.play.gain = A.record.gain = AUDIO_MAX_GAIN * 2 / 4;
        A.play.port = AUDIO_SPEAKER | AUDIO_HEADPHONE | AUDIO_LINE_OUT;
        A.record.port = AUDIO_LINE_IN;
        A.play.sample_rate = A.record.sample_rate = 44100;
        A.play.channels = A.record.channels = 2;
        A.play.precision = A.record.precision = 16;
        A.play.encoding = A.record.encoding = AUDIO_ENCODING_LINEAR;
        A.play.balance = A.record.balance = AUDIO_MID_BALANCE;
        A.monitor_gain = 0;
        A.output_muted = 0;

        /* Now consider the overrides */

        for (j=1; j<argc; j++) {
                if (strcasecmp (argv[j], "cd")==0) /* no op */ ;
                else if (strcasecmp (argv[j], "voice")==0) {
                        A.play.sample_rate = A.record.sample_rate = 8000;
                        A.play.channels = A.record.channels = 1;
                        A.play.precision = A.record.precision = 8;
                        A.play.encoding = A.record.encoding =
                                                        AUDIO_ENCODING_ULAW;
                }
                else if (strcasecmp (argv[j], "line")==0) /* no op */ ;
                else if (strcasecmp (argv[j], "mic")==0) {
                        A.record.port = AUDIO_MICROPHONE;
                }
                else if (strcasecmp (argv[j], "mute")==0) {
                        A.output_muted = 1;
                }
        }

        j = ioctl (fd, AUDIO_SETINFO, &A);

        fclose (f);
        exit (j);
}

From: Claus Assmann <ca@mine.informatik.uni-kiel.de>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is a sound program for SunOS 4 and 5.
It also plays sound files with better quality than just the standard 8KHz.

I compiled this one but it is looking for /dev/speakerbox - MP

begin 644 sound.tar.Z
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
M$U >%.%A;/:26!AJ5D3M* $!*("&M#5S>[5L%8'.9(8@@?6-EPJ5/IIDA:'
MEREOP59?'C+@'1CV+"9]EJIA#1Y9N_? &BZ3/_W+S[L\)K+C\F51=KC:$'\[
MGA&4-@%3"$(3H,"$(GQ!"D&@@G>I@ 0IS!,)E2%"7&'@@A@(UH-DM!A!PH+*
M.CP/!'OX+'"()",-&36!=$A :\4ZW(3NE[]%M1B $\ I:E$.H?H%#E']JV _
M!=B@94#>U.!CX/U.F),5?E4"2J>B8G88.'W J!._L$/]S.$+=$@HFHI%XQH?
M*%BT B@+U<8V$"K8N<(#DHL;-1[GLAA0+H:QBOES9"&+5*)6R>^!08 #&%B9
M!0E0)SO=600G#.$)['3"$;Y0A:A< <LXP/(VT6QE&&!9R^W\0I>_'.8QAS,(
M9TY FK6I #9?.<OKC/.<P=S8,3.AL46HCYIMH.8^)R '-O@SG+GL94*+^0N'
M=D*BI;#H1F,9TI(.-*7I7&A,(UK1VF1T G:I9J;6X,VBEG.EZVQJ3:,Z!JI>
MLS9=#>LMRYK4E\[TICN]:D?CNLV]%O2L2RWL6^?:V)$.M:\'3>MF<SK56&:U
M-G&0 VDK&]B&/O6U<>WI;7?;S8">]K*#+6YB:UL&+#%)LD=MZ7#;>MS/SG:\
MT3WI7]>[UL/&=K&Q/(/(\CO6U&9VNP6NZX(C.]W?_K>UW>WH&=R@R@=7-[@!
M[NQR6QSC\_9WM1=.[H$G0"/_R7C$1WYO8NL:Y=ZF-\L#7G)MTP#C*I>YPEO.
M<$??_.']3CB[>5YS!?0AH>6QL=*)A>/3!>^!/!Z5C]4#Y!;#"@7BJMQDZ;10
M AG9ZB_^TDBC'&'@B #G(1?ZF,N,9S2K602./CO0$;YN.YO9[=J$.Y;E'G.1
M[YSFN=9[ D0 ZIS[?>B ?WO<"Y_VNG,<W]D6O ABP&N(ZQSQ'<][W"D/ QF\
MVO*'MW?B5RWY8_==[8]W>>FC;7C43US@,B@]MT_O^->7/ :R/W?C-VY[5<<^
M[O!N4^MK3_+ W_?NY=X\2,?=X?3GO?+U_S>G3]\Z!/=]Y+_^/.5?WW%3__B
MVY]YYG^_=YA7G_NCQWW<S9]\\4.>].M'.^A='WWUEU_^02=^]^%_=',2MDG]
M9@1/( 6'107UA'5I8%6A@P)?AV2ETA8O$!8)6 8+V(!.-@=; -=$%A&M"U>
M,5_YMW%0\03A-5CH%(+_-H+A%5<MX%Y3]$S;0AH?9E0)8 5OD$3W,E%^ -2
M15D$HC TR%V<(/V8E;C86'<804Z@BN:8A7@)$Y%(%7EP3Y,V"3W8B+D$U!'
M*&()D 1M<"_:$EL3]83C)(4$,B]N< (=HBKRPRXTDD+\DC?K(UV@-1XZ%1Y!
MD%$.M3XD]0+0I4P9)50*@(19IH>U-%$MV(/E44ARJ"09HDK#$X= !EUT*"!&
MYB<^ F,)0 3K\P5HX"N*Z'49!0),PBL(%(>4^#("I2IRT"*8:! ]Z(,F$S!:
M\BKK81"<HCU&J 6&"0O%F!&@(N>"(I3M61\48J+LB-QR(A%-(,A%F #=A!C
M%5LLT&#9XC8L@&$:YBPL0&*OPP9S(&-H<@3V(P;\Y$\9 E X-1YE@ =EM44
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
MS (PP 0L,$Y%L 3O5 14\)2?M:]8$ABK P*^@Q\L5'6XZ!YUJ HXB<,>%!C
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
M>!Z"8D([ POM/7['3A0>VZ-%,XHJ83V"B?9X./S$8P,![>U>W+V'M^G0!KT
M?FRO_\6:<4(%C-\30'[TT5=T+N+6;PY@ KR+>!'EZ46'R/+TWWK8+ ?A*SQ&
MP;<$/>!VVWQR0"Z*P-+X^,@3;<LK'<P66040MA)'F(7R8B9, BF@"[?".A=\
MJWQ64;9=JQ<9(SO$CQR+Y2$)B X_0?N*@'$C(!DB \8'"B0Z4(0<& @$)=--
MF0)Y!Z)D&>!_@X^$V3 SL *:V[1X%7*1U,6V([D:58(':P%6H:N52%-EZ%!D
M=$2-U)'G73@/]JR 9(DCB0;#2X))&]DNVEB.Q(3DJ9^Q* ^&$'&9,Y1V.%#S
MX;K"P2L^WV\+@18QUX'#%AD;AY3)L!]=(H35I&*$GC0%DUPAS&@\>,2Y=!!T
MP'$R&*.%:!6U,S KV&3%,X<M8/"!PS0V#FG3"12&3( 8TK196"J_9((<E:02
M5,H^,KA"Z)VO0Y3(J3P\D_PA8.J";* 3V"%;:LMMR2V[I;?\EN R7(K+<4DN
MRZ6Y/)?H,EVJRW7)+I>"XX)<;HH'3"[MPEV\"W@1+U^ O)B7*8!>F 1J(H'
M!G0!+M%EVM36X=J*#4XEM*[7-:_TB^S:(K1+47&IVX6[_)7N\EV]RQ0I(_HA
MO$18\5*. :Q.Z2,C<Q(+B4JL7BWQLV@O[F5@OE> "5\4K7Q=M%:4OM97J6I?
M=A!^Y3%:$5^D8HE1'@5-O^RO -.__A=%&V %;!4ZM)XH"T&F GMHZ)%;+4)_
M=C0QF&>D8*7JX?%)2DD&4AJA)"@E[(:=L!V95WID"V.&J XIHA(:!@?&9 Z;
M SN,!?2PV@3$X*806U5$3$NJA".6Q$ 5$[L:(H//2;'/0<74WD6X8D#KCJVQ
MG>G%QF08BP%CS-9=JC2&Q^1'XP1C?2R.V3HZECC5&!N[G&^LC^$:0 8<DINL
MP'J&K$U:LT6&*D*9-J,UD0R:63+T5>6JF2[[9*VS (:>QR,[VYGMU!2L+'>B
MP-UI;: 9/J.=^PR763->)CR;&3V#9L4,>4*XW]DDEEGS?)W.[)M),^FYXO:+
M-<-FU].<E1ITICU])R+39>0L?,ZS,4,^U9E58&?<$YF]L_=!!^39Y1$]L<R>
MS;)\5CMWWGYQ:$FS=X&0_#71?B) ZXD,[7]6S=(FT12H 1U@][$QAD0%IQI1
MW>H*:16T86;(%&#2R@!*6XDKK:45@9<6TV8:1;)I4 "GV9:=AI<JG5X:4>-A
MJ-VKW3;G>MM2"S!-[:FUB_ @U:@:1 IV7$A>+2XNI-6 Z%>3DT/TJ[%,>TBX
MR-IANT%H3;"MM7PA8-P:]XIK:I"NI81>* K]FK,0,)70KV5"DQ;8Y(!:HX49
MYK!EF$P(!>6<8[MLD4T#H;6M>-G2EK3*;-XQ.;W'.DJZU)9HDX^-+6KR4=#F
M1U%;U%1M5[,D1BL7(]G:U50,1W*N0#9-6+FJ;-M$R6TRA89*M=_V!4**<#N!
M3O*XA85!!@])DWV3<-*-NJVW"Y?A%M3&,BHHX,9Q-R)T+T"<> .8?Y(<GD94
M0497*5VDI4T"OAV6Q+)8&@L-?)0-T?HE$ #7I 9<DRAP=D#FA< %ES"!PY%[
M;BV.PJG2R(?A^I.&>Z46(Y9RN!.I%9\C-:(H(6[$P49-9^(8'(HK.]>4Q34)
M%Y?E3-\^S \'Q<CUSV0V3WO<-KT(KK$)@0 B-^520CSEIR#@!"BY?PHCOM#(
M(Y@$59\F3VPZ3[$<0VU(6^XI:0<O!^:"@)@C<_1N=:G)'7$DM6$3C##*$$[N
MH_CACXK1VN!S-?3/"2A!1^\*W0HX="Q5T3$Z1P=3(UU7H70:$-,EI]C&Z?0#
MX>-W?E#48;4T%]L:)0.4C9#R+&H^B!CKV-I$1'"B#]<=525XF9H@N>.F(6#8
M%;OR@NSPP[++%B5/^D'59 H!6Q[:F( ]L-+%/IG' D @^6.1Z% *AA9TAS8Z
M!+L; ^X.WC4/GD;O$N0^S'>F#R#^NX%(\ R>.TEX"R\(V+T2"",-Z^&K>!>/
M+SRKC=?Q/AX^O' B+PPEKC:)3(D>6G2K+V]$Y &Z&OYFG-3#9=MP@K)&NNCS
MNL0Q7:NF5?,=/3@T/);>40)],\^N.LK 5/7"(-;;;X\/.' ]K\<%Q=[U*'MG
M3R(:3L/J]K:J;SMXB[7N)3B\9Q?;Y 9EB+DU\-$Z_D?YV@)>$0&*#RR(@,:'
MEA(EY-M@%\ZRHDW+MQ#]7J1T=9.R\5E*BHBL,J5U#7=X%=BE0_@'^[;=LJ1]
M)(O^:0C[1S7P'W,[D/LO04*]6$/\&J03.'ZO2C\RO^%I(:/?WBNMF:_:24"V
MN/U&T5P5?$BPYIT^9!5;!2SZ0X-R;0WN$KT* @BL_#.P"E;WD94&JS=]'X0=
ME/Z/"@! ;AA*V0\08 >=IU^5_LJ547L6R6Q"L0"6@@,N"M,K($ECB(JQ8J_
M%7NA6NQ7A:_,[03V&Q4X'UK@"XR!,]"[DL7Z2OV:K X<L=K/!SJ1L" S!((0
M? -$D$2"1BWK6KFJ9O*R'\T8QJ!T2 4[A!6$A%D0%W)!4(A H(75$X- J%F.
M!UH"8[,H&Q2%EO 0@I4XV 41"!T<A3FS#6J(/-@UBE<?-(2!,%,0PCL81@'A
MIDV$0E+4'@Y'B&@E(25L*'Y-I15#3=A/6N$IY+2,%E!N$E(884PA*E2UL985
MC@%7"&M7X9K%2&AT#-C"1)L+7]4NS"M<=),4MF X#'=M&Z6LLW)6R,OYVBGS
MXFR,2]%0:L A7&0-O1^*S8;ES:M^65ZJ*;XA<N2524V7$CJC=@X%+(U=AY0,
M2KC##1$/;]%!:+?U,"7<PV_X\/1A=:6,!T\*",2Z5Q [EU-]JFQV0RI3J@H]
M?BIPO7G^=5.BLHT(+58E2'2OVI"H0JN2*;U\A=<T 2VQC+U$I\D<$29YNHDQ
M,;5IPST*$PVH>[1].,Y-)E*:"R;P(UA-BN'TPSE%L"@65^-5G!=9\<-UQ?<X
M"<&B"6BZ2A;$WE>6IQ:=#%M$NF0 +J;)UEA;2YZ:?;8:\MQ>);[H%P&C6W54
MA'$FE4>JL1@18V:JN^5J1-JH$GFACB-[J(PQ\3)FQJC) C8CU>V,CY3O&D'1
MV $![6F$K1GT0G'7UU@BM2XTK(UM-S>^W3W%&^.N>0".\D,XAET]6QR-XXF$
MN)9Q*Q*OK<AX#TR>! [Z43SF >TX,+DCK[*YL#="[L?LR$ /J7K4O;+WYR;&
M^ ATYZ,G9(_9,8(^4N-['?GC9ED1!BQ )M#9*E<*I/X#L@NR^%W8!YEA=>^$
MU)T=5@'R7<O;ZCHDA/V0N$A$#D?2NV=/I!91D3@OP.X\%QDK:UN1_&"^RVMV
ML!L9-G&8CJ229?.&L; UYR>/8K(%#D32@[%))9LDEZ0;:))/,E#2"*:!*AZ(
ME<22@VY+JMPN.8$'Y?XME*"33)I)DX$FH^-()< 8\DW&R:T1'3=82KBI=K(#
MXDGW>A3WI(QT8:N12PI*"?LU#:789'.RE9LR2G)[8,@OAV1DG*]]^*[]BE5Q
M6<A%CISROGG*8BDJ\URQ3""T+U4J ).+BUPE2*.DLE(9VLI8%6X-A*Z\M^(P
MW_I*X@8LA:6BHWI4^%C&HO)PA2/MO-.;SU),24NO8@:JY5@ #P*B70KB04R(
,"[$A/L2(.!$KXHD
 
end



This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:10:31 CDT