Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 19 Feb 2000 17:22:24 +0100 (CET)
From:      Juergen Lock <nox@jelal.kn-bremen.de>
To:        FreeBSD-gnats-submit@freebsd.org
Cc:        naddy@mips.rhein-neckar.de
Subject:   ports/16819: new port audio/gramofile
Message-ID:  <200002191622.RAA43447@saturn.kn-bremen.de>

next in thread | raw e-mail | index | archive | help

>Number:         16819
>Category:       ports
>Synopsis:       new port audio/gramofile
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat Feb 19 08:30:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Juergen Lock
>Release:        FreeBSD 3.4-STABLE i386
>Organization:
me?  organized??
>Environment:

	3.4-STABLE i386, and an isa sb16 hooked up as `tape 2'
	on the stereo (interesting what such a cheap card can do
	with a `real' amp and speakers... :)

>Description:

	I wanted to record longer audio files than short clips, and
	this one finally does it. (it also doesn't need X and uses
	shared memory for buffering, so you could probably use that
	old box thats doing nothing in the corner to do your
	recordings and then won't have to worry about losing data
	because of too much swapping etc. on the main box...)

	It also has some other interesting features for eg digitizing
	vinyl records (see pkg/DESCR), but that i haven't yet tried.

	Oh and for playback it also uses shared memory which makes it
	skip less than eg sox' /usr/local/bin/play...  Definitely a
	candidate for 4.0 i'd say.

>How-To-Repeat:

	as usual, unshar, make install

>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:
#
#	Makefile
#	pkg/
#	pkg/COMMENT
#	pkg/DESCR
#	pkg/PLIST
#	files/
#	files/md5
#	patches/
#	patches/patch-aa
#	patches/patch-ab
#	patches/patch-ac
#
echo x - Makefile
sed 's/^X//' >Makefile << 'END-of-Makefile'
X# New ports collection makefile for:	gramofile
X# Version required:	1.5
X# Date created:		Fri Jan 28 18:40:38 CET 2000
X# Whom:			nox@jelal.kn-bremen.de
X#
X# $FreeBSD: $
X#
X
XDISTNAME=	gramofile-1.5
XCATEGORIES=	audio
XMASTER_SITES=	http://cardit.et.tudelft.nl/~card06/
X
XMAINTAINER=	nox@jelal.kn-bremen.de
X
XALL_TARGET=	gramofile
XUSE_GMAKE=	yes
X
XSTRIP=
X
Xdo-install:
X	${INSTALL_PROGRAM} ${WRKSRC}/gramofile ${WRKSRC}/bplay_gramo ${PREFIX}/bin
X	${MKDIR} ${PREFIX}/share/doc/gramofile
X	${INSTALL_DATA} ${WRKSRC}/README ${PREFIX}/share/doc/gramofile
X	${LN} -s bplay_gramo ${PREFIX}/bin/brec_gramo
X
X.include <bsd.port.mk>
END-of-Makefile
echo c - pkg/
mkdir -p pkg/ > /dev/null 2>&1
echo x - pkg/COMMENT
sed 's/^X//' >pkg/COMMENT << 'END-of-pkg/COMMENT'
Xaudio recording and tick/scratch reduction for e.g. vinyl records
END-of-pkg/COMMENT
echo x - pkg/DESCR
sed 's/^X//' >pkg/DESCR << 'END-of-pkg/DESCR'
XThis is version 1.5 of GramoFile, released February 15, 1999. With this
Xprogram you can record audio of (for example) gramophone records, process
Xthe signal and listen to the results. Because sound files of the
X.WAV-format are used, it is possible to exchange the files with many other
Xprograms. Cdrecord(1) can burn CD-Recordables of these, so you can make
XCDs with the music of your favorite records.  The user interface of
XGramoFile has a windows-like look-and-feel, making it fairly easy to use.
X
XOne of the most important parts of GramoFile is the ability to process
Xdigital audio signals. Through the application of several filters it is
Xpossible to accomplish a significant reduction of disturbances like ticks
Xand scratches. These filters have been programmed in such a fashion that
Xthey can be applied in a random order (and multiple times) in a single
Xrun, thus evading the use of temporary files. There is a possibility of
Xadjusting the properties of each filter independently, so in every
Xsituation an optimal result can be achieved.
X
XAnother interesting feature is the track splitting. Just make one .wav file
Xof an entire side of an record and GramoFile will detect where the individual
Xtracks are located. This happens fully automatically, without need to set
Xany options. More experienced users may fine-tune the algorithm, or change
Xthe detected track starts and ends, but generally that will not be
Xnecessary. Track-times are saved in an editable (plaintext) .tracks file,
Xthat will be used during the signal processing to produce one processed
X.wav file for each individual track.
X
XWWW: http://cardit.et.tudelft.nl/~card06/
END-of-pkg/DESCR
echo x - pkg/PLIST
sed 's/^X//' >pkg/PLIST << 'END-of-pkg/PLIST'
Xbin/gramofile
Xbin/bplay_gramo
Xbin/brec_gramo
Xshare/doc/gramofile/README
X@dirrm share/doc/gramofile
END-of-pkg/PLIST
echo c - files/
mkdir -p files/ > /dev/null 2>&1
echo x - files/md5
sed 's/^X//' >files/md5 << 'END-of-files/md5'
XMD5 (gramofile-1.5.tar.gz) = 3727bbab7c8894d7225b1e9bdfb38022
END-of-files/md5
echo c - patches/
mkdir -p patches/ > /dev/null 2>&1
echo x - patches/patch-aa
sed 's/^X//' >patches/patch-aa << 'END-of-patches/patch-aa'
XIndex: Makefile
X@@ -14,15 +14,24 @@
X SHELL = /bin/sh
X 
X CC = gcc
X-DEPS = $(OBJS) makebplay
X-CFLAGS = -Wall -O2 -DTURBO_MEDIAN -DTURBO_BUFFER
X LDFLAGS = 
X-LIBS = -lcurses -lm
X+# For Linux (and maybe others), uncomment these:
X+#CFLAGS = -Wall -O2 -DTURBO_MEDIAN -DTURBO_BUFFER
X+#LIBS = -lcurses -lm
X+#DEPS = $(OBJS) makebplay
X+#COPY_P = -a
X 
X # For IRIX (and maybe others), uncomment these:
X #CFLAGS = -Wall -O2 -DTURBO_MEDIAN -DTURBO_BUFFER -DSWAP_ENDIAN
X+#LIBS = -lcurses -lm
X #DEPS = $(OBJS)
X+#COPY_P = -a
X 
X+# For FreBSD (and maybe others), uncomment these:
X+CFLAGS = -Wall -O2 -DTURBO_MEDIAN -DTURBO_BUFFER -DHAVE_NCURSES
X+LIBS = -lncurses -lm
X+DEPS = $(OBJS) makebplay
X+COPY_P = -p
X 
X $(PROG): $(DEPS)
X 	$(CC) $(LDFLAGS) $(OBJS) -o $(PROG) $(LIBS)
X@@ -36,7 +45,7 @@
X            clrscr.o secshms.o
X 	$(MAKE) -C bplaysrc
X 	-rm bplay_gramo brec_gramo
X-	cp -a bplaysrc/bplay ./bplay_gramo
X+	cp ${COPY_P} bplaysrc/bplay ./bplay_gramo
X 	ln -s bplay_gramo brec_gramo
X 
X .PHONY: clean
XIndex: bplaysrc/Makefile
X@@ -7,9 +7,14 @@
X #SRCS = bplay.c sndfunc.o shmbuf.c
X 
X CC = gcc
X-CFLAGS = -Wall -O2 -DUSEBUFFLOCK -DREDHAT50 -DLP2CD -DVUMETER # -DDEBUG
X LDFLAGS = 
X-LIBS = -lcurses
X+# For Linux (and maybe others), uncomment these:
X+#CFLAGS = -Wall -O2 -DUSEBUFFLOCK -DREDHAT50 -DLP2CD -DVUMETER # -DDEBUG
X+#LIBS = -lcurses
X+
X+# For FreBSD (and maybe others), uncomment these:
X+CFLAGS = -Wall -O2 -DLP2CD -DVUMETER -DHAVE_NCURSES # -DDEBUG
X+LIBS = -lncurses
X 
X $(PROG): $(OBJS)
X 	$(CC) $(LDFLAGS) $(OBJS) -o $(PROG) $(LIBS)
END-of-patches/patch-aa
echo x - patches/patch-ab
sed 's/^X//' >patches/patch-ab << 'END-of-patches/patch-ab'
XIndex: bplaysrc/bplay.c
X@@ -20,14 +20,22 @@
X #include <sys/time.h>
X #include <sys/resource.h>
X 
X+#ifndef __FreeBSD__
X #include <sys/soundcard.h>
X+#else
X+#include <machine/soundcard.h>
X+#endif
X 
X #include "fmtheaders.h"
X 
X #include "../yesnowindow.h"
X void init_curses(void);
X void finish_curses(int sig);
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include "../errorwindow.h"
X #include "../clrscr.h"
X #include "../reclp_main.h"
X@@ -45,11 +53,15 @@
X 
X /* Prototypes */
X 
X+#ifdef linux
X /* This is in libc, but not in the header files. -- but it IS in
X-   Red Hat 5.0.... Libc6? */
X+   Red Hat 5.0.... Libc6?
X+   well i'd guess its not in the headers because its nonstandard, i.e.
X+   (probably) only exists on linux...  -nox */
X #ifndef REDHAT50
X extern char *basename(char *name);
X #endif
X+#endif
X 
X void Usage(void);
X void ErrDie(char *err);
X@@ -98,7 +109,13 @@
X 
X 	init_curses();
X 
X+#ifdef linux
X 	progname = basename(argv[0]);	/* For errors */
X+#else
X+	progname = strrchr(argv[0], '/'); /* For errors */
X+	if (!progname || !*++progname)
X+	    progname = argv[0];
X+#endif
X 
X 	/* Ok, find out if we record or play */
X 	if (strcmp(progname, "brec_gramo") == 0)
XIndex: bplaysrc/shmbuf.c
X@@ -28,12 +28,24 @@
X #include "../reclp_main.h"
X #include "../boxes.h"
X #include "../buttons.h"
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <string.h>
X 
X #ifndef SEMMSL
X+#ifdef __FreeBSD__
X+/*
X+ * you may want to adjust this to whats configured into your kernel,
X+ * 30 is just the current default. (see <sys/sem.h>)
X+ */
X+#define SEMMSL  30
X+#else
X #define SEMMSL  32
X #endif
X+#endif
X 
X extern void finish_curses(int sig);
X 
X@@ -107,7 +119,7 @@
X     */
X     shmid2 = shmget(IPC_PRIVATE, numbuffs*sizeof(blockinf_t),
X 	IPC_EXCL | IPC_CREAT | 0600);
X-    if (shmid == -1)
X+    if (shmid2 == -1)
X 	ErrDie("shmget");
X     buffinf = (blockinf_t*)shmat(shmid2, IPC_RMID, SHM_RND);
X     if (buffinf == (blockinf_t*)((char*)-1))
X@@ -410,6 +422,9 @@
X 	}
X 	/* Tidy up and wait for the child */
X 	close(audio);
X+	/* XXX fix the occasional deadlock in the following wait()  -nox */
X+	for (i = 0; i < numbuffs; i++)
X+	    up(disksemid, i);
X 	wait(NULL);
X 	
X 	/* Free all the semaphores */
XIndex: bplaysrc/sndfunc.c
X@@ -11,7 +11,11 @@
X #include <fcntl.h>
X #include <unistd.h>
X #include <sys/types.h>
X+#ifndef __FreeBSD__
X #include <sys/soundcard.h>
X+#else
X+#include <machine/soundcard.h>
X+#endif
X #include <sys/ioctl.h>
X 
X #define AUDIO "/dev/dsp"
END-of-patches/patch-ab
echo x - patches/patch-ac
sed 's/^X//' >patches/patch-ac << 'END-of-patches/patch-ac'
XIndex: boxes.c
X@@ -8,7 +8,11 @@
X  */
X 
X #include "boxes.h"
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X 
X 
X void
XIndex: buttons.c
X@@ -8,7 +8,11 @@
X  */
X 
X #include "buttons.h"
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X 
X 
X void
XIndex: clrscr.c
X@@ -8,7 +8,11 @@
X  */
X 
X #include "clrscr.h"
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X 
X 
X void
XIndex: errorwindow.c
X@@ -11,7 +11,11 @@
X #include "buttons.h"
X #include "boxes.h"
X #include "textwindow.h"
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X 
X 
X void
XIndex: gramofile.c
X@@ -9,7 +9,11 @@
X 
X #include "mainmenu.h"
X #include "splashscr.h"
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <signal.h>
X #include <unistd.h>
X #include <string.h>
XIndex: helpline.c
X@@ -8,7 +8,11 @@
X  */
X 
X #include "helpline.h"
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X 
X 
X void
XIndex: mainmenu.c
X@@ -20,7 +20,11 @@
X #include "playwav.h"
X #include "tracksplit.h"
X #include <stdlib.h>
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <unistd.h>
X 
X 
XIndex: playwav.c
X@@ -23,7 +23,11 @@
X #include "fmtheaders.h"
X #include "signpr_main.h"
X 
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <stdlib.h>
X #include <sys/stat.h>
X #include <string.h>
XIndex: reclp_filenm.c
X@@ -21,7 +21,11 @@
X #include "clrscr.h"
X #include "reclp_main.h"
X 
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <stdlib.h>
X #include <sys/stat.h>
X #include <string.h>
XIndex: reclp_main.c
X@@ -12,7 +12,11 @@
X #include "errorwindow.h"
X #include <stdlib.h>
X #include <stdio.h>
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X 
X 
X void
XIndex: scrollmenu.c
X@@ -8,7 +8,11 @@
X  */
X 
X #include "scrollmenu.h"
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <stdlib.h>
X 
X 
XIndex: signpr_cmf.c
X@@ -30,7 +30,11 @@
X #include "yesnowindow.h"
X #include <stdlib.h>
X #include <stdio.h>
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <math.h>
X 
X /* Macros I used first:
XIndex: signpr_cmf2.c
X@@ -28,7 +28,11 @@
X #include "yesnowindow.h"
X #include <stdlib.h>
X #include <stdio.h>
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <math.h>
X 
X 
XIndex: signpr_doubmed.c
X@@ -17,7 +17,11 @@
X #include "helpline.h"
X #include <stdlib.h>
X #include <stdio.h>
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X 
X 
X void
XIndex: signpr_filtmenu.c
X@@ -16,7 +16,11 @@
X #include "errorwindow.h"
X #include "stringinput.h"
X #include "secshms.h"
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <stdlib.h>
X #include <string.h>
X 
XIndex: signpr_general.c
X@@ -21,7 +21,11 @@
X #include "signpr_exper.h"
X #include <stdio.h>
X #include <stdlib.h>
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X 
X 
X void
XIndex: signpr_infilenm.c
X@@ -20,7 +20,11 @@
X #include "helpline.h"
X #include "clrscr.h"
X 
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <stdlib.h>
X #include <sys/stat.h>
X #include <string.h>
XIndex: signpr_main.c
X@@ -18,7 +18,11 @@
X #include "clrscr.h"
X #include "secshms.h"
X #include <sys/stat.h>
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <string.h>
X #include <stdlib.h>
X 
XIndex: signpr_mean.c
X@@ -17,7 +17,11 @@
X #include "helpline.h"
X #include <stdlib.h>
X #include <stdio.h>
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X 
X 
X void
XIndex: signpr_median.c
X@@ -17,7 +17,11 @@
X #include "helpline.h"
X #include <stdlib.h>
X #include <stdio.h>
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X 
X 
X void
XIndex: signpr_outfilenm.c
X@@ -20,7 +20,11 @@
X #include "helpline.h"
X #include "clrscr.h"
X 
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <stdlib.h>
X #include <sys/stat.h>
X #include <string.h>
XIndex: signpr_rms.c
X@@ -17,7 +17,11 @@
X #include "helpline.h"
X #include <stdlib.h>
X #include <stdio.h>
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <math.h>
X 
X void
XIndex: splashscr.c
X@@ -7,7 +7,11 @@
X  * See the file `COPYING' in this directory.
X  */
X 
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <unistd.h>
X 
X 
XIndex: stringinput.c
X@@ -8,7 +8,11 @@
X  */
X 
X #include "stringinput.h"
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X 
X 
X void
XIndex: textwindow.c
X@@ -8,7 +8,11 @@
X  */
X 
X #include "textwindow.h"
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <stdlib.h>
X #include <string.h>
X 
XIndex: tracksplit.c
X@@ -19,7 +19,11 @@
X 
X #include <sys/stat.h>
X #include <stdlib.h>
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <math.h>
X #include <string.h>
X 
XIndex: tracksplit_filenm.c
X@@ -20,7 +20,11 @@
X #include "helpline.h"
X #include "clrscr.h"
X 
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X #include <stdlib.h>
X #include <sys/stat.h>
X #include <string.h>
XIndex: tracksplit_parammenu.c
X@@ -16,7 +16,11 @@
X #include "helpline.h"
X #include <stdlib.h>
X #include <stdio.h>
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X 
X 
X int
XIndex: yesnowindow.c
X@@ -11,7 +11,11 @@
X #include "buttons.h"
X #include "boxes.h"
X #include "textwindow.h"
X+#ifndef HAVE_NCURSES
X #include <curses.h>
X+#else /* HAVE_NCURSES */
X+#include <ncurses.h>
X+#endif /* HAVE_NCURSES */
X 
X 
X int
END-of-patches/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?200002191622.RAA43447>