diff -ruN TiMidity++-2.0.2/ChangeLog TiMidity++-2.1.0/ChangeLog --- TiMidity++-2.0.2/ChangeLog Wed Apr 28 08:13:31 1999 +++ TiMidity++-2.1.0/ChangeLog Thu Jun 10 22:01:28 1999 @@ -1,3 +1,44 @@ +1999-06-10 Masanao Izumo + + * Version 2.1.0 released. + +1999-06-05 Michael Haardt + + * timidity/nas_a.c: Reduce BUFFERED_SECS to 3 and increase + LOW_WATER_PERCENT to 40. + +1999-05-22 Keiichi Sakai + + * timidity/{timidity.h,resample.c}: Enable a multi-point interpolation + in resampling. In timidity, defining CSPLINE_INTERPOLATION cause + 4-point interpolation by cubic spline curve. Defining + LAGRANGE_INTERPOLATION cause 4-point interpolation by Lagrange method. + The default is disabled because it wastes much CPU power. + +1999-05-20 Takanori Watanabe + + * timidity/list_a.c: Bug fix. + +1999-05-16 Eric A. Welsh + + * timidity/common.c(pathcasecmp): pathcasecmp() was not forcing the + right variable types for s1 and s2. The way it was before resulted in + pointers to total garbage, which caused it to not sort properly. + +1999-05-04 Vignaud Jean-Baptiste + + * timidity/timidity.h: Fix typedef for linux axp. + +1999-05-02 Nando Santagata + + * doc/C/timidity.1: Document the -Z option. + * timidity/{Makefile.am,common.h,loadtab.c,timidity.c} (-Z): + New option: -Z : Load frequency table from . + +1999-04-29 Noboru Suzaki + + * timidity/linux_a.c (open_output): Remove O_NDELAY + 1999-04-28 Masanao Izumo * Version 2.0.2 released. diff -ruN TiMidity++-2.0.2/configure TiMidity++-2.1.0/configure --- TiMidity++-2.0.2/configure Wed Apr 28 05:34:10 1999 +++ TiMidity++-2.1.0/configure Thu Jun 10 21:49:15 1999 @@ -854,7 +854,7 @@ PACKAGE=TiMidity++ -VERSION=2.0.2 +VERSION=2.1.0 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } diff -ruN TiMidity++-2.0.2/configure.in TiMidity++-2.1.0/configure.in --- TiMidity++-2.0.2/configure.in Wed Apr 28 05:18:44 1999 +++ TiMidity++-2.1.0/configure.in Tue May 18 19:40:49 1999 @@ -53,7 +53,7 @@ AC_INIT(timidity/timidity.c) AC_CANONICAL_SYSTEM -AM_INIT_AUTOMAKE(TiMidity++, 2.0.2, no-define) +AM_INIT_AUTOMAKE(TiMidity++, 2.1.0, no-define) dnl To use CONTAINS() macro (See acinclude.m4) CONTAINS_INIT diff -ruN TiMidity++-2.0.2/doc/C/timidity.1 TiMidity++-2.1.0/doc/C/timidity.1 --- TiMidity++-2.0.2/doc/C/timidity.1 Wed Jan 6 14:02:36 1999 +++ TiMidity++-2.1.0/doc/C/timidity.1 Tue May 18 19:39:08 1999 @@ -620,6 +620,11 @@ as carridge return. .RE +.TP +.BI \-Z " file" +Causes the table of frequencies to be read from \fIfile\fP. This is +useful to define a tuning different from the occidental temperate scale. + .P .SH SEE ALSO lsmidiprog(1), mididump(1), patinfo(1), sf2text(1), wav2pat(1), timidity.cfg(5) diff -ruN TiMidity++-2.0.2/timidity/Makefile.am TiMidity++-2.1.0/timidity/Makefile.am --- TiMidity++-2.0.2/timidity/Makefile.am Fri Apr 9 21:02:30 1999 +++ TiMidity++-2.1.0/timidity/Makefile.am Tue May 18 19:39:08 1999 @@ -47,6 +47,7 @@ instrum.h \ list_a.c \ load_mod.c \ + loadtab.c \ mid-j.defs \ mid.defs \ miditrace.c \ diff -ruN TiMidity++-2.0.2/timidity/Makefile.in TiMidity++-2.1.0/timidity/Makefile.in --- TiMidity++-2.0.2/timidity/Makefile.in Wed Apr 28 08:14:14 1999 +++ TiMidity++-2.1.0/timidity/Makefile.in Thu Jun 10 22:01:54 1999 @@ -116,7 +116,7 @@ bin_PROGRAMS = timidity -timidity_SOURCES = aenc.h aiff_a.c aq.c aq.h au_a.c audio_cnv.c audio_cnv.h common.c common.h controls.c controls.h dlutils.h effect.c filter.c filter.h instrum.c instrum.h list_a.c load_mod.c mid-j.defs mid.defs miditrace.c miditrace.h mix.c mix.h mod.c mod.h output.c output.h playmidi.c playmidi.h raw_a.c rcp.c readmidi.c readmidi.h recache.c recache.h resample.c resample.h reverb.c reverb.h sbkconv.c sffile.c sffile.h sfitem.c sfitem.h sflayer.h smfconv.c smfconv.h sndfont.c tables.c tables.h timidity.c timidity.h version.c wave_a.c wrd.h wrd_read.c wrdt.c +timidity_SOURCES = aenc.h aiff_a.c aq.c aq.h au_a.c audio_cnv.c audio_cnv.h common.c common.h controls.c controls.h dlutils.h effect.c filter.c filter.h instrum.c instrum.h list_a.c load_mod.c loadtab.c mid-j.defs mid.defs miditrace.c miditrace.h mix.c mix.h mod.c mod.h output.c output.h playmidi.c playmidi.h raw_a.c rcp.c readmidi.c readmidi.h recache.c recache.h resample.c resample.h reverb.c reverb.h sbkconv.c sffile.c sffile.h sfitem.c sfitem.h sflayer.h smfconv.c smfconv.h sndfont.c tables.c tables.h timidity.c timidity.h version.c wave_a.c wrd.h wrd_read.c wrdt.c EXTRA_timidity_SOURCES = alsa_a.c audriv.h audriv_a.c audriv_al.c audriv_mme.c audriv_none.c dl_cygwin32.c dl_dld.c dl_dlopen.c dl_hpux.c bsd20_a.c esd_a.c hpux_a.c hpux_d_a.c linux_a.c mac_a.c mac_qt_a.c mac_com.h mac_dlog.c mac_main.c mac_main.h mac_soundspec.c mfnode.c mfnode.h nas_a.c sun_a.c w32_a.c @@ -145,10 +145,10 @@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ timidity_OBJECTS = aiff_a.o aq.o au_a.o audio_cnv.o common.o controls.o \ -effect.o filter.o instrum.o list_a.o load_mod.o miditrace.o mix.o mod.o \ -output.o playmidi.o raw_a.o rcp.o readmidi.o recache.o resample.o \ -reverb.o sbkconv.o sffile.o sfitem.o smfconv.o sndfont.o tables.o \ -timidity.o version.o wave_a.o wrd_read.o wrdt.o +effect.o filter.o instrum.o list_a.o load_mod.o loadtab.o miditrace.o \ +mix.o mod.o output.o playmidi.o raw_a.o rcp.o readmidi.o recache.o \ +resample.o reverb.o sbkconv.o sffile.o sfitem.o smfconv.o sndfont.o \ +tables.o timidity.o version.o wave_a.o wrd_read.o wrdt.o timidity_LDFLAGS = CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -298,6 +298,8 @@ load_mod.o: load_mod.c ../config.h timidity.h ../utils/support.h \ common.h ../libarc/url.h ../utils/mblock.h instrum.h playmidi.h \ readmidi.h tables.h mod.h output.h controls.h +loadtab.o: loadtab.c ../config.h timidity.h ../utils/support.h common.h \ + ../libarc/url.h ../utils/mblock.h tables.h controls.h miditrace.o: miditrace.c ../config.h timidity.h ../utils/support.h \ common.h ../libarc/url.h ../utils/mblock.h instrum.h playmidi.h \ output.h controls.h miditrace.h wrd.h aq.h diff -ruN TiMidity++-2.0.2/timidity/common.c TiMidity++-2.1.0/timidity/common.c --- TiMidity++-2.0.2/timidity/common.c Tue Apr 6 02:45:30 1999 +++ TiMidity++-2.1.0/timidity/common.c Tue May 18 20:46:10 1999 @@ -983,8 +983,8 @@ const unsigned char *s1, *s2; int c1, c2; - s1 = (const unsigned char *)p1; - s2 = (const unsigned char *)p2; + s1 = *(const unsigned char **)p1; + s2 = *(const unsigned char **)p2; while(*s1 && *s2) { c1 = tolower((int)*s1); diff -ruN TiMidity++-2.0.2/timidity/common.h TiMidity++-2.1.0/timidity/common.h --- TiMidity++-2.0.2/timidity/common.h Tue Apr 6 02:30:17 1999 +++ TiMidity++-2.1.0/timidity/common.h Tue May 18 19:39:08 1999 @@ -71,6 +71,7 @@ extern void randomize_string_list(char **strlist, int nstr); extern int pathcasecmp(const char *path1, const char *path2); extern void sort_pathname(char **files, int nfiles); +extern int load_table(char *file); /* code: * "EUC" - Extended Unix Code diff -ruN TiMidity++-2.0.2/timidity/linux_a.c TiMidity++-2.1.0/timidity/linux_a.c --- TiMidity++-2.0.2/timidity/linux_a.c Fri Apr 16 18:27:52 1999 +++ TiMidity++-2.1.0/timidity/linux_a.c Wed May 12 21:38:05 1999 @@ -105,7 +105,7 @@ int include_enc, exclude_enc; /* Open the audio device */ - fd = open(dpm.name, O_WRONLY | O_NDELAY); + fd = open(dpm.name, O_WRONLY); if(fd < 0) { ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "%s: %s", diff -ruN TiMidity++-2.0.2/timidity/list_a.c TiMidity++-2.1.0/timidity/list_a.c --- TiMidity++-2.0.2/timidity/list_a.c Sun Apr 4 21:02:31 1999 +++ TiMidity++-2.1.0/timidity/list_a.c Thu Jun 10 21:03:44 1999 @@ -125,7 +125,7 @@ dmp.fd = -1; } -static void do_event(MidiEvent *ev) +static int do_event(MidiEvent *ev) { int ch; @@ -179,7 +179,10 @@ case ME_RESET: memset(channel, 0, sizeof(channel)); break; + case ME_EOT: + return RC_TUNE_END; } + return RC_NONE; } static int acntl(int request, void *arg) @@ -187,8 +190,7 @@ switch(request) { case PM_REQ_MIDI: - do_event((MidiEvent *)arg); - return RC_NONE; + return do_event((MidiEvent *)arg); } return -1; } diff -ruN TiMidity++-2.0.2/timidity/loadtab.c TiMidity++-2.1.0/timidity/loadtab.c --- TiMidity++-2.0.2/timidity/loadtab.c Thu Jan 1 09:00:00 1970 +++ TiMidity++-2.1.0/timidity/loadtab.c Thu Jun 10 21:55:23 1999 @@ -0,0 +1,52 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif /* HAVE_CONFIG_H */ + +#include +#include + +#ifndef NO_STRING_H +#include +#else +#include +#endif + +#include "timidity.h" +#include "common.h" +#include "tables.h" +#include "controls.h" + +int load_table(char *file) +{ + FILE *fp; + char tmp[1024]; + char *value; + int i = 0; + + if((fp = fopen(file, "r")) == NULL){ + ctl->cmsg(CMSG_ERROR, VERB_NORMAL, + "Can't read %s %s\n", file, strerror(errno)); + return -1; + } + + while(fgets(tmp, sizeof(tmp), fp)){ + if(! strchr(tmp, '#')){ + if((value = strtok(tmp, ", \n")) != NULL){ + freq_table[i++] = atoi(value); + if(i == 128){ + fclose(fp); + return 0; + } + while((value = strtok(NULL, ", \n")) != NULL){ + freq_table[i++] = atoi(value); + if(i == 128){ + fclose(fp); + return 0; + } + } + } + } + } + fclose(fp); + return 0; +} diff -ruN TiMidity++-2.0.2/timidity/nas_a.c TiMidity++-2.1.0/timidity/nas_a.c --- TiMidity++-2.0.2/timidity/nas_a.c Wed Apr 14 20:39:58 1999 +++ TiMidity++-2.1.0/timidity/nas_a.c Thu Jun 10 21:42:00 1999 @@ -46,8 +46,8 @@ #include "playmidi.h" #include "miditrace.h" -#define BUFFERED_SECS 5 -#define LOW_WATER_PERCENT 25 +#define BUFFERED_SECS 3 +#define LOW_WATER_PERCENT 40 #ifdef LITTLE_ENDIAN #define LINEAR16_FORMAT AuFormatLinearSigned16LSB diff -ruN TiMidity++-2.0.2/timidity/resample.c TiMidity++-2.1.0/timidity/resample.c --- TiMidity++-2.0.2/timidity/resample.c Tue Apr 27 22:59:22 1999 +++ TiMidity++-2.1.0/timidity/resample.c Thu Jun 10 21:08:11 1999 @@ -44,7 +44,60 @@ #include "resample.h" #include "recache.h" -#ifdef LINEAR_INTERPOLATION +#if defined(CSPLINE_INTERPOLATION) +# define INTERPVARS int32 ofsd, v0, v1, v2, v3, sp1, sp2; +# define RESAMPLATION \ + v0 = (int32)src[(ofs>>FRACTION_BITS)-1]; \ + v1 = (int32)src[(ofs>>FRACTION_BITS)]; \ + v2 = (int32)src[(ofs>>FRACTION_BITS)+1]; \ + v3 = (int32)src[(ofs>>FRACTION_BITS)+2]; \ + if(((ofs-(1L<le)){ \ + *dest++ = (sample_t)(v1 + (((v2-v1) * (ofs & FRACTION_MASK)) >> FRACTION_BITS)); \ + }else{ \ + sp1 = (5*v0 - 11*v1 + 7*v2 - v3)>>2; \ + sp2 = (5*v3 - 11*v2 + 7*v1 - v0)>>2; \ + v1 = 6*v1 - sp1; \ + v2 = 6*v2 - sp2; \ + ofsd = (1L << FRACTION_BITS) - (ofs & FRACTION_MASK); \ + sp1 = sp1*ofsd>>FRACTION_BITS; \ + sp1 = sp1*ofsd>>FRACTION_BITS; \ + v1 = (v1 + sp1)*ofsd; \ + ofsd = ofs & FRACTION_MASK; \ + sp2 = sp2*ofsd>>FRACTION_BITS; \ + sp2 = sp2*ofsd>>FRACTION_BITS; \ + v2 = (v2 + sp2)*ofsd; \ + v1 = (v1 + v2)/(6L< 32767)? 32767: ((v1 < -32768)? -32768: v1); \ + } +#elif defined(LAGRANGE_INTERPOLATION) +# define INTERPVARS int32 ofsd, v0, v1, v2, v3; +# define RESAMPLATION \ + v0 = (int32)src[(ofs>>FRACTION_BITS)-1]; \ + v1 = (int32)src[(ofs>>FRACTION_BITS)]; \ + v2 = (int32)src[(ofs>>FRACTION_BITS)+1]; \ + v3 = (int32)src[(ofs>>FRACTION_BITS)+2]; \ + if(((ofs-(1L<le)){ \ + *dest++ = (sample_t)(v1 + (((v2-v1) * (ofs & FRACTION_MASK)) >> FRACTION_BITS)); \ + }else{ \ + ofsd = (ofs & FRACTION_MASK) + (1L << FRACTION_BITS); \ + v1 = v1*ofsd>>FRACTION_BITS; \ + v2 = v2*ofsd>>FRACTION_BITS; \ + v3 = v3*ofsd>>FRACTION_BITS; \ + ofsd -= (1L << FRACTION_BITS); \ + v0 = v0*ofsd>>FRACTION_BITS; \ + v2 = v2*ofsd>>FRACTION_BITS; \ + v3 = v3*ofsd>>FRACTION_BITS; \ + ofsd -= (1L << FRACTION_BITS); \ + v0 = v0*ofsd>>FRACTION_BITS; \ + v1 = v1*ofsd>>FRACTION_BITS; \ + v3 = v3*ofsd; \ + ofsd -= (1L << FRACTION_BITS); \ + v0 = (v3 - v0*ofsd)/(6L << FRACTION_BITS); \ + v1 = (v1 - v2)*ofsd>>(FRACTION_BITS+1); \ + v1 += v0; \ + *dest++ = (v1 > 32767)? 32767: ((v1 < -32768)? -32768: v1); \ + } +#elif defined(LINEAR_INTERPOLATION) # if defined(LOOKUP_HACK) && defined(LOOKUP_INTERPOLATION) # define RESAMPLATION \ v1=src[ofs>>FRACTION_BITS];\ @@ -115,6 +168,9 @@ int32 ofs=vp->sample_offset, incr=vp->sample_increment, +#if defined(LAGRANGE_INTERPOLATION) || defined(CSPLINE_INTERPOLATION) + ls=0, +#endif /* LAGRANGE_INTERPOLATION */ le=vp->sample->data_length, count=*countptr; #ifdef PRECALC_LOOPS @@ -210,6 +266,9 @@ ofs=vp->sample_offset, incr=vp->sample_increment, le=vp->sample->loop_end, +#if defined(LAGRANGE_INTERPOLATION) || defined(CSPLINE_INTERPOLATION) + ls=vp->sample->loop_start, +#endif /* LAGRANGE_INTERPOLATION */ ll=le - vp->sample->loop_start; sample_t *dest=resample_buffer+resample_buffer_offset, @@ -459,6 +518,9 @@ *dest=resample_buffer+resample_buffer_offset, *src=vp->sample->data; int32 +#if defined(LAGRANGE_INTERPOLATION) || defined(CSPLINE_INTERPOLATION) + ls=0, +#endif /* LAGRANGE_INTERPOLATION */ le=vp->sample->data_length, ofs=vp->sample_offset, incr=vp->sample_increment, @@ -502,6 +564,9 @@ int32 ofs=vp->sample_offset, incr=vp->sample_increment, +#if defined(LAGRANGE_INTERPOLATION) || defined(CSPLINE_INTERPOLATION) + ls=vp->sample->loop_start, +#endif /* LAGRANGE_INTERPOLATION */ le=vp->sample->loop_end, ll=le - vp->sample->loop_start; sample_t diff -ruN TiMidity++-2.0.2/timidity/timidity.c TiMidity++-2.1.0/timidity/timidity.c --- TiMidity++-2.0.2/timidity/timidity.c Sun Apr 25 23:17:45 1999 +++ TiMidity++-2.1.0/timidity/timidity.c Tue May 18 19:39:08 1999 @@ -76,7 +76,7 @@ #include "mid.defs" #include "aq.h" -#define OPTCOMMANDS "A:aB:b:C:c:D:d:eE:Ffg:hI:i:jk:L:n:O:o:P:p:Q:R:rS:s:t:UW:w:x:" +#define OPTCOMMANDS "A:aB:b:C:c:D:d:eE:Ffg:hI:i:jk:L:n:O:o:P:p:Q:R:rS:s:t:UW:w:x:Z:" #define INTERACTIVE_INTERFACE_IDS "kmqagr" /* main interfaces (To be used another main) */ @@ -442,6 +442,7 @@ " mode=r/R : Enable/Disable rcpcv dll", #endif /* __W32__ */ " -W mode Select WRD interface (see below for list)", +" -Z file Load frequency table", NULL }; @@ -2550,6 +2551,12 @@ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "-n option is obsoleted. Please use -EFns="); return 1; + + case 'Z': + if(load_table(optarg)) + return 1; + break; + default: return 1; } diff -ruN TiMidity++-2.0.2/timidity/timidity.h TiMidity++-2.1.0/timidity/timidity.h --- TiMidity++-2.0.2/timidity/timidity.h Fri Mar 19 10:23:28 1999 +++ TiMidity++-2.1.0/timidity/timidity.h Thu Jun 10 21:15:27 1999 @@ -141,6 +141,13 @@ without it sound quality is very poor. */ #define LINEAR_INTERPOLATION +/* These option enable a multi-point interpolation in resampling. + Defining CSPLINE_INTERPOLATION cause 4-point interpolation by cubic + spline curve. Defining LAGRANGE_INTERPOLATION cause 4-point + interpolation by Lagrange method. */ +/* #define CSPLINE_INTERPOLATION */ +/* #define LAGRANGE_INTERPOLATION */ + /* This is an experimental kludge that needs to be done right, but if you've got an 8-bit sound card, or cheap multimedia speakers hooked @@ -384,7 +391,8 @@ #endif /* DEC MMS has 64 bit long words */ -#if defined(DEC) +/* Linux-Axp has also 64 bit long words */ +#if defined(DEC) || defined(__alpha__) typedef unsigned int uint32; typedef int int32; #else