Skip site navigation (1)Skip section navigation (2)
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>