Date: Mon, 2 Apr 2001 01:33:42 +0300 (EEST) From: kkonstan@duth.gr To: FreeBSD-gnats-submit@freebsd.org Subject: ports/26276: New port: audio/wmix: An audio mixer for the WindowMaker dock with TV-like OSD Message-ID: <200104012233.f31MXge51061@emily.cc.duth.gr>
next in thread | raw e-mail | index | archive | help
>Number: 26276 >Category: ports >Synopsis: New port: audio/wmix: An audio mixer for the WindowMaker dock with TV-like OSD >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sun Apr 01 15:40:01 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Konstantinos Konstantinidis >Release: FreeBSD 4.2-RELEASE i386 >Organization: Demokritos University of Thrace >Environment: >Description: An audio mixer for the WindowMaker dock with TV-like OSD >How-To-Repeat: >Fix: # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # wmix # wmix/pkg-plist # wmix/pkg-descr # wmix/pkg-comment # wmix/distinfo # wmix/Makefile # wmix/files # wmix/files/patch-aa # wmix/files/patch-ab # wmix/files/patch-ac # echo c - wmix mkdir -p wmix > /dev/null 2>&1 echo x - wmix/pkg-plist sed 's/^X//' >wmix/pkg-plist << 'END-of-wmix/pkg-plist' Xbin/wmix END-of-wmix/pkg-plist echo x - wmix/pkg-descr sed 's/^X//' >wmix/pkg-descr << 'END-of-wmix/pkg-descr' XWindowMaker dockapp mixer that allows toggling record source, muting individual Xchannels, adjusting volume and balance, all in a compact dockapp size, with XTV-like on-screen-display for volume levels. Supports mousewheel to adjust Xcurrent channel volume, and can be controlled remotely with SIGUSR1 / SIGUSR2 Xto adjust the volume, too. Keeps a simple configuration file for user-defined Xsettings. X XWWW: http://www.ne.jp/asahi/linux/timecop/ X X-- K. Konstantinidis <kkonstan@daemon.gr> END-of-wmix/pkg-descr echo x - wmix/pkg-comment sed 's/^X//' >wmix/pkg-comment << 'END-of-wmix/pkg-comment' XAn audio mixer for the WindowMaker dock with TV-like OSD END-of-wmix/pkg-comment echo x - wmix/distinfo sed 's/^X//' >wmix/distinfo << 'END-of-wmix/distinfo' XMD5 (wmix-2.2-oss.tar.gz) = d8f7a51e0130c89e168631e2504477cb END-of-wmix/distinfo echo x - wmix/Makefile sed 's/^X//' >wmix/Makefile << 'END-of-wmix/Makefile' X# New ports collection makefile for: wmix X# Date created: 2 April 2001 X# Whom: Konstantinos Konstantinidis <kkonstan@daemon.gr> X# X# $FreeBSD$ X# X XPORTNAME= wmix XPORTVERSION= 2.2-oss XCATEGORIES= audio windowmaker XMASTER_SITES= http://www.ne.jp/asahi/linux/timecop/ X XMAINTAINER= kkonstan@daemon.gr X XUSE_XPM= YES XUSE_X_PREFIX= YES X Xdo-install: X @${INSTALL_PROGRAM} ${WRKSRC}/wmix ${PREFIX}/bin X X.include <bsd.port.mk> END-of-wmix/Makefile echo c - wmix/files mkdir -p wmix/files > /dev/null 2>&1 echo x - wmix/files/patch-aa sed 's/^X//' >wmix/files/patch-aa << 'END-of-wmix/files/patch-aa' X*** Makefile.orig Fri Mar 30 00:49:38 2001 X--- Makefile Sun Apr 1 22:50:23 2001 X*************** X*** 1,6 **** X! CC = gcc X! CFLAGS = -O2 -Wall -I/usr/X11R6/include -DCUSTOM X! LIBS = -L/usr/X11R6/lib -lX11 -lXpm -lXext X X SRCS = mix.c config.c X OBJS = mix.o config.o X--- 1,6 ---- X! CC = cc X! CFLAGS += -Wall -I/usr/local/include -I/usr/X11R6/include -DCUSTOM X! LDFLAGS+= -L/usr/local/lib -L/usr/X11R6/lib -lX11 -lXpm -lXext X X SRCS = mix.c config.c X OBJS = mix.o config.o X*************** X*** 8,14 **** X all: mixer X X mixer: $(OBJS) X! $(CC) $(CFLAGS) -o wmix $(OBJS) $(LIBS) X X clean: X rm -f *.o *~ wmix trace X--- 8,14 ---- X all: mixer X X mixer: $(OBJS) X! $(CC) $(CFLAGS) $(LDFLAGS) -o wmix $(OBJS) X X clean: X rm -f *.o *~ wmix trace END-of-wmix/files/patch-aa echo x - wmix/files/patch-ab sed 's/^X//' >wmix/files/patch-ab << 'END-of-wmix/files/patch-ab' X*** mix.c.orig Fri Mar 30 00:38:55 2001 X--- mix.c Sun Apr 1 22:54:26 2001 X*************** X*** 20,26 **** X--- 20,30 ---- X #include <stdlib.h> X #include <string.h> X #include <ctype.h> X+ #ifdef __FreeBSD__ X+ #include <popt.h> X+ #else X #include <getopt.h> X+ #endif X #include <time.h> X #include <unistd.h> X #include <fcntl.h> X*************** X*** 887,899 **** X #ifdef CUSTOM X #undef SOUND_DEVICE_NAMES X X! #define SOUND_DEVICE_NAMES {"Master Volume", "Bass", "Treble", "FM Synth Volume", "PCM - Wave Volume", "PC Speaker", "Line In Level", \ X! "Microphone Level", "CD Input Volume", "Mixer Level", "PCM2 - Wave Volume", "Recording Volume", "Input Gain", "Output Gain", \ X! "Line1 Input", "Line2 Input", "Line3 Input", "Digital 1", "Digital 2", "Digital 3", \ X! "Phone Input", "Phone Output", "Video Card Volume", "Radio Card volume", "Monitor Volume"} X #endif X char *names[] = SOUND_DEVICE_NAMES; X struct mixer_info mixer_info; X X if ((mixer_fd = open(value("mixerdev"), O_RDWR)) == -1) { X printf("error: cannot open mixer device %s\n", value("mixerdev")); X--- 891,905 ---- X #ifdef CUSTOM X #undef SOUND_DEVICE_NAMES X X! #define SOUND_DEVICE_NAMES {" Master Volume", " Bass", " Treble", " Synth Volume", " Wave Volume", " PC Speaker", " Line In Level", \ X! " Microphone Level", " CD Volume", " Mixer Level", " Wave 2 Volume", " Recording Volume", " Input Gain", " Output Gain", \ X! " Line1 Input", " Line2 Input", " Line3 Input", " Digital 1", " Digital 2", " Digital 3", \ X! " Phone Input", " Phone Output", " Video Card Volume", " Radio Card Volume", " Monitor Volume"} X #endif X char *names[] = SOUND_DEVICE_NAMES; X+ #ifndef __FreeBSD__ X struct mixer_info mixer_info; X+ #endif X X if ((mixer_fd = open(value("mixerdev"), O_RDWR)) == -1) { X printf("error: cannot open mixer device %s\n", value("mixerdev")); X*************** X*** 921,932 **** X exit(1); X } X X if (ioctl(mixer_fd, SOUND_MIXER_INFO, &mixer_info) == -1) { X printf("error: cannot get mixer info off mixer\n"); X exit(1); X } X- X printf("%s (%s) [", mixer_info.name, mixer_info.id); X for (count = 0; count < SOUND_MIXER_NRDEVICES; count++) { X if ((1 << count) & devmask) { X strcpy(mixer[nchannels].name, names[count]); X--- 927,942 ---- X exit(1); X } X X+ #ifdef __FreeBSD__ X+ printf("["); X+ #else X if (ioctl(mixer_fd, SOUND_MIXER_INFO, &mixer_info) == -1) { X printf("error: cannot get mixer info off mixer\n"); X exit(1); X } X printf("%s (%s) [", mixer_info.name, mixer_info.id); X+ #endif X+ X for (count = 0; count < SOUND_MIXER_NRDEVICES; count++) { X if ((1 << count) & devmask) { X strcpy(mixer[nchannels].name, names[count]); X*************** X*** 946,951 **** X--- 956,962 ---- X printf("0"); X } X } X+ X printf("]\n"); X } X X*************** X*** 953,971 **** X { X int i; X int left, right, foo; X int retry = 3; X int stat = 1; X struct mixer_info mixer_info; X static int modify_counter; X- static Mixer old_mix[SOUND_MIXER_NRDEVICES]; X X /* check for possible failure here - happens with older kernels */ X if (ioctl(mixer_fd, SOUND_MIXER_INFO, &mixer_info)) { X while (retry-- && stat) X stat = ioctl(mixer_fd, SOUND_MIXER_INFO, &mixer_info); X } X X! if (mixer_info.modify_counter != modify_counter) { X i = 0; X /* this happens if mixer was changed by another program, X * so we need to update the values. We do not know, under OSS, X--- 964,989 ---- X { X int i; X int left, right, foo; X+ char doupdate = 0; X+ static Mixer old_mix[SOUND_MIXER_NRDEVICES]; X+ #ifndef __FreeBSD__ X int retry = 3; X int stat = 1; X struct mixer_info mixer_info; X static int modify_counter; X X /* check for possible failure here - happens with older kernels */ X if (ioctl(mixer_fd, SOUND_MIXER_INFO, &mixer_info)) { X while (retry-- && stat) X stat = ioctl(mixer_fd, SOUND_MIXER_INFO, &mixer_info); X } X+ doupdate = mixer_info.modify_counter != modify_counter; X+ #else X+ /* clearly something better would be nice, but hey, it works! */ X+ doupdate = 1; X+ #endif X X! if (doupdate) { X i = 0; X /* this happens if mixer was changed by another program, X * so we need to update the values. We do not know, under OSS, X*************** X*** 1022,1028 **** X--- 1040,1048 ---- X } X } X } X+ #ifndef __FreeBSD__ X modify_counter = mixer_info.modify_counter; X+ #endif X memcpy(old_mix, mixer, sizeof(mixer)); X } X END-of-wmix/files/patch-ab echo x - wmix/files/patch-ac sed 's/^X//' >wmix/files/patch-ac << 'END-of-wmix/files/patch-ac' X*** config.c.orig Sun Apr 1 22:43:30 2001 X--- config.c Sun Apr 1 22:43:51 2001 X*************** X*** 135,141 **** X free((struct var *) vars); X vars = vp; X } X! if (vars) X for (new = vars; new->v_next;) X if (!strcmp(new->v_next->v_name, name)) { X vp = new->v_next->v_next; X--- 135,141 ---- X free((struct var *) vars); X vars = vp; X } X! if (vars) { X for (new = vars; new->v_next;) X if (!strcmp(new->v_next->v_name, name)) { X vp = new->v_next->v_next; X*************** X*** 143,148 **** X--- 143,149 ---- X new->v_next = vp; X } else X new = new->v_next; X+ } X } X X char *vcopy(char *str) END-of-wmix/files/patch-ac exit >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ports" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200104012233.f31MXge51061>