Wednesday, August 02, 2017

IMPROVE MORE: timidity, sdl-mixer, sdl2-mixer, and GUS patchsets

Index: audio/timidity/Makefile
===================================================================
RCS file: /cvs/ports/audio/timidity/Makefile,v
retrieving revision 1.47
diff -u -p -u -p -r1.47 Makefile
--- audio/timidity/Makefile 2 Aug 2017 15:21:48 -0000 1.47
+++ audio/timidity/Makefile 2 Aug 2017 20:49:35 -0000
@@ -5,20 +5,15 @@ COMMENT= MIDI to WAV renderer and player
V= 2.13.2
DISTNAME= TiMidity++-${V}
PKGNAME= timidity-${V}
-REVISION= 6
+REVISION= 7
CATEGORIES= audio

MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=timidity/}
-MASTER_SITES0= https://devio.us/~bcallah/source/
-TIINS=
TimGM6mb-20170802.tar.gz
-DISTFILES= ${TIINS}:0 ${DISTNAME}.tar.gz

HOMEPAGE= http://timidity.sourceforge.net/
MAINTAINER= Brian Callahan <bcallah@openbsd.org>

# timidity: GPLv2+
-# TimGM6mb: https://musescore.org/en/handbook/soundfonts#list
-# "License: GNU GPL, version 2; Courtesy of Tim Brechbill"
PERMIT_PACKAGE_CDROM= Yes

WANTLIB= c m ncurses sndio
@@ -57,6 +52,8 @@ WANTLIB+= ICE SM X11 Xaw Xext Xmu Xt
CONFIGURE_ARGS+=--without-x
.endif

+RUN_DEPENDS= audio/timgm6mb-gus
+
USE_GMAKE= Yes
NO_TEST= Yes

@@ -73,13 +70,5 @@ pre-configure:
cd ${WRKSRC}; AUTOCONF_VERSION=${AUTOCONF_VERSION} \
AUTOMAKE_VERSION=${AUTOMAKE_VERSION} automake \
--foreign --add-missing --copy
-
-post-install:
- ${INSTALL_DATA_DIR} ${PREFIX}/share/timidity/TimGM6mb
- ${INSTALL_DATA} ${WRKDIST}/TimGM6mb/* \
- ${PREFIX}/share/timidity/TimGM6mb
- ${INSTALL_DATA_DIR} ${PREFIX}/share/examples/timidity
- ${SUBST_CMD} -c -m 644 ${WRKDIR}/timidity.cfg \
- ${PREFIX}/share/examples/timidity/timidity.cfg

.include <bsd.port.mk>
Index: audio/timidity/distinfo
===================================================================
RCS file: /cvs/ports/audio/timidity/distinfo,v
retrieving revision 1.6
diff -u -p -u -p -r1.6 distinfo
--- audio/timidity/distinfo 2 Aug 2017 15:21:48 -0000 1.6
+++ audio/timidity/distinfo 2 Aug 2017 20:49:35 -0000
@@ -1,4 +1,2 @@
SHA256 (TiMidity++-2.13.2.tar.gz) = 8AclLp8/fzwEOh1RWJghRqRu4ybDsXoiJa/HM8MzK0c=
-SHA256 (TimGM6mb-20170802.tar.gz) = tyxC4aU+yDs5vXpT6ftWcbkcOekt/DUFtZk5hVzCcUQ=
SIZE (TiMidity++-2.13.2.tar.gz) = 1849553
-SIZE (TimGM6mb-20170802.tar.gz) = 9032726
Index: audio/timidity/patches/patch-timidity_cfg
===================================================================
RCS file: audio/timidity/patches/patch-timidity_cfg
diff -N audio/timidity/patches/patch-timidity_cfg
--- audio/timidity/patches/patch-timidity_cfg 2 Aug 2017 15:21:48 -0000 1.3
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-$OpenBSD: patch-timidity_cfg,v 1.3 2017/08/02 15:21:48 bcallah Exp $
-Index: timidity.cfg
---- timidity.cfg.orig
-+++ timidity.cfg
-@@ -0,0 +1,7 @@
-+#
-+# Instrument configuration for timidity
-+# see timidity.cfg(5) for further details
-+#
-+
-+dir ${TRUEPREFIX}/share/timidity/TimGM6mb
-+source TimGM6mb.cfg
Index: audio/timidity/pkg/PLIST
===================================================================
RCS file: /cvs/ports/audio/timidity/pkg/PLIST,v
retrieving revision 1.8
diff -u -p -u -p -r1.8 PLIST
--- audio/timidity/pkg/PLIST 2 Aug 2017 15:21:48 -0000 1.8
+++ audio/timidity/pkg/PLIST 2 Aug 2017 20:49:35 -0000
@@ -2,191 +2,4 @@
@bin bin/timidity
@man man/man1/timidity.1
@man man/man5/timidity.cfg.5
-share/examples/timidity/
-share/examples/timidity/timidity.cfg
-@sample ${SYSCONFDIR}/timidity.cfg
-share/timidity/
-share/timidity/TimGM6mb/
-share/timidity/TimGM6mb/5thSawWave.pat
-share/timidity/TimGM6mb/808Click.pat
-share/timidity/TimGM6mb/808Hat.pat
-share/timidity/TimGM6mb/808Snare.pat
-share/timidity/TimGM6mb/Accordion.pat
-share/timidity/TimGM6mb/AcousticBass.pat
-share/timidity/TimGM6mb/AcousticTom.pat
-share/timidity/TimGM6mb/Agogo.pat
-share/timidity/TimGM6mb/AgogoBell.pat
-share/timidity/TimGM6mb/AltoSax-TBv2.3.pat
-share/timidity/TimGM6mb/Applause.pat
-share/timidity/TimGM6mb/Atmosphere.pat
-share/timidity/TimGM6mb/Bagpipe.pat
-share/timidity/TimGM6mb/Bandoneon.pat
-share/timidity/TimGM6mb/Banjo.pat
-share/timidity/TimGM6mb/BariSax-TBv2.3.pat
-share/timidity/TimGM6mb/BassDrumNew.pat
-share/timidity/TimGM6mb/BassLead.pat
-share/timidity/TimGM6mb/Bassoon.pat
-share/timidity/TimGM6mb/BellTree.pat
-share/timidity/TimGM6mb/Bird.pat
-share/timidity/TimGM6mb/BottleChiff.pat
-share/timidity/TimGM6mb/BowedGlass.pat
-share/timidity/TimGM6mb/Brass.pat
-share/timidity/TimGM6mb/BrassTambourine.pat
-share/timidity/TimGM6mb/BreathNoise.pat
-share/timidity/TimGM6mb/Brightness.pat
-share/timidity/TimGM6mb/BrushSnare.pat
-share/timidity/TimGM6mb/Cabasa.pat
-share/timidity/TimGM6mb/Castanets.pat
-share/timidity/TimGM6mb/Celesta.pat
-share/timidity/TimGM6mb/Cello.pat
-share/timidity/TimGM6mb/Charang.pat
-share/timidity/TimGM6mb/ChifferLead.pat
-share/timidity/TimGM6mb/ChinaCrashCymb.pat
-share/timidity/TimGM6mb/ChoirAahs.pat
-share/timidity/TimGM6mb/ChurchOrgan.pat
-share/timidity/TimGM6mb/Claps808ish.pat
-share/timidity/TimGM6mb/Clarinet.pat
-share/timidity/TimGM6mb/Clavinet.pat
-share/timidity/TimGM6mb/CleanGuitar.pat
-share/timidity/TimGM6mb/Contrabass.pat
-share/timidity/TimGM6mb/Cowbell.pat
-share/timidity/TimGM6mb/Cowbell808.pat
-share/timidity/TimGM6mb/Crystal.pat
-share/timidity/TimGM6mb/DistortionGuitar.pat
-share/timidity/TimGM6mb/DrumStick.pat
-share/timidity/TimGM6mb/Dulcimer.pat
-share/timidity/TimGM6mb/E.Piano1.pat
-share/timidity/TimGM6mb/E.Piano2.pat
-share/timidity/TimGM6mb/EBongoRim.pat
-share/timidity/TimGM6mb/ESnare.pat
-share/timidity/TimGM6mb/EchoDrops.pat
-share/timidity/TimGM6mb/EnglishHorn.pat
-share/timidity/TimGM6mb/Fantasia.pat
-share/timidity/TimGM6mb/Fiddle.pat
-share/timidity/TimGM6mb/FilterSnap.pat
-share/timidity/TimGM6mb/FingeredBass.pat
-share/timidity/TimGM6mb/FluteTB.pat
-share/timidity/TimGM6mb/FrenchHorns.pat
-share/timidity/TimGM6mb/FretNoise.pat
-share/timidity/TimGM6mb/FretlessBass.pat
-share/timidity/TimGM6mb/Glockenspiel.pat
-share/timidity/TimGM6mb/Goblin.pat
-share/timidity/TimGM6mb/GuiroDown.pat
-share/timidity/TimGM6mb/GuiroUp.pat
-share/timidity/TimGM6mb/GuitarHarmonics.pat
-share/timidity/TimGM6mb/GuitarMutes.pat
-share/timidity/TimGM6mb/GunShot.pat
-share/timidity/TimGM6mb/HaloPad.pat
-share/timidity/TimGM6mb/Harmonica.pat
-share/timidity/TimGM6mb/HarpLP.pat
-share/timidity/TimGM6mb/Harpsichord.pat
-share/timidity/TimGM6mb/Helicopter.pat
-share/timidity/TimGM6mb/HighHatClosed.pat
-share/timidity/TimGM6mb/HighHatFoot.pat
-share/timidity/TimGM6mb/HonkyTonk.pat
-share/timidity/TimGM6mb/IceRain.pat
-share/timidity/TimGM6mb/JazzGuitar.pat
-share/timidity/TimGM6mb/Kalimba.pat
-share/timidity/TimGM6mb/Koto.pat
-share/timidity/TimGM6mb/LowTumbaTone.pat
-share/timidity/TimGM6mb/MBongoTone.pat
-share/timidity/TimGM6mb/Maracas.pat
-share/timidity/TimGM6mb/Marimba.pat
-share/timidity/TimGM6mb/MedCrashCymbal.pat
-share/timidity/TimGM6mb/MelodicTom.pat
-share/timidity/TimGM6mb/MetClick.pat
-share/timidity/TimGM6mb/MetalPad.pat
-share/timidity/TimGM6mb/MusicBox.pat
-share/timidity/TimGM6mb/MuteTriangle.pat
-share/timidity/TimGM6mb/MuteTrumpet.pat
-share/timidity/TimGM6mb/NoiseSlap.pat
-share/timidity/TimGM6mb/NylonGuitar.pat
-share/timidity/TimGM6mb/Oboe-Orch.pat
-share/timidity/TimGM6mb/Ocarina.pat
-share/timidity/TimGM6mb/OceanWave.pat
-share/timidity/TimGM6mb/OpenHighHat.pat
-share/timidity/TimGM6mb/OrchestraHit.pat
-share/timidity/TimGM6mb/Organ1.pat
-share/timidity/TimGM6mb/Organ2.pat
-share/timidity/TimGM6mb/Organ3.pat
-share/timidity/TimGM6mb/OverdriveGuitar.pat
-share/timidity/TimGM6mb/PanFlute.pat
-share/timidity/TimGM6mb/Piano1.pat
-share/timidity/TimGM6mb/Piano2.pat
-share/timidity/TimGM6mb/Piano3.pat
-share/timidity/TimGM6mb/Piccolo.pat
-share/timidity/TimGM6mb/PickedBass.pat
-share/timidity/TimGM6mb/Pizzicato.pat
-share/timidity/TimGM6mb/PolySynth.pat
-share/timidity/TimGM6mb/QuicaDownstroke.pat
-share/timidity/TimGM6mb/QuicaHiTone.pat
-share/timidity/TimGM6mb/QuintoClosedSlap.pat
-share/timidity/TimGM6mb/QuintoTone.pat
-share/timidity/TimGM6mb/Recorder.pat
-share/timidity/TimGM6mb/ReedOrgan.pat
-share/timidity/TimGM6mb/ReverseCymbal.pat
-share/timidity/TimGM6mb/RideBell.pat
-share/timidity/TimGM6mb/RidePing.pat
-share/timidity/TimGM6mb/RimShot.pat
-share/timidity/TimGM6mb/RosewoodClaves.pat
-share/timidity/TimGM6mb/SambaWhistle.pat
-share/timidity/TimGM6mb/SawWave.pat
-share/timidity/TimGM6mb/Scratch.pat
-share/timidity/TimGM6mb/Seashore.pat
-share/timidity/TimGM6mb/Shakuhachi.pat
-share/timidity/TimGM6mb/Shamisen.pat
-share/timidity/TimGM6mb/Shenai.pat
-share/timidity/TimGM6mb/SineWave.pat
-share/timidity/TimGM6mb/Sinetick.pat
-share/timidity/TimGM6mb/Sitar.pat
-share/timidity/TimGM6mb/SlapBass1.pat
-share/timidity/TimGM6mb/SlapBass2.pat
-share/timidity/TimGM6mb/SleighBells.pat
-share/timidity/TimGM6mb/SlowStringsLP.pat
-share/timidity/TimGM6mb/Snare1.pat
-share/timidity/TimGM6mb/Snare2.pat
-share/timidity/TimGM6mb/SoloTrumpet.pat
-share/timidity/TimGM6mb/SoloVox.pat
-share/timidity/TimGM6mb/SopSax-TBv2.3.pat
-share/timidity/TimGM6mb/Soundtrack.pat
-share/timidity/TimGM6mb/SpaceVoice.pat
-share/timidity/TimGM6mb/SquareWave.pat
-share/timidity/TimGM6mb/StarTheme.pat
-share/timidity/TimGM6mb/SteelDrum.pat
-share/timidity/TimGM6mb/SteelGuitar.pat
-share/timidity/TimGM6mb/Strings-Tremelo.pat
-share/timidity/TimGM6mb/StringsCLP.pat
-share/timidity/TimGM6mb/SweepPad.pat
-share/timidity/TimGM6mb/SynDrumWave.pat
-share/timidity/TimGM6mb/SynthBass1.pat
-share/timidity/TimGM6mb/SynthBass2.pat
-share/timidity/TimGM6mb/SynthBrass1.pat
-share/timidity/TimGM6mb/SynthBrass2.pat
-share/timidity/TimGM6mb/SynthCalliope.pat
-share/timidity/TimGM6mb/SynthDrum.pat
-share/timidity/TimGM6mb/SynthStrings1.pat
-share/timidity/TimGM6mb/SynthStrings2.pat
-share/timidity/TimGM6mb/SynthVox.pat
-share/timidity/TimGM6mb/TaikoDrum.pat
-share/timidity/TimGM6mb/Telephone.pat
-share/timidity/TimGM6mb/TenorSax-TBv2.3.pat
-share/timidity/TimGM6mb/TimGM6mb.cfg
-share/timidity/TimGM6mb/TimbaleRimshot.pat
-share/timidity/TimGM6mb/TimbaleStrike.pat
-share/timidity/TimGM6mb/TimpDrumA1.pat
-share/timidity/TimGM6mb/Timpani.pat
-share/timidity/TimGM6mb/TinkerBell.pat
-share/timidity/TimGM6mb/TriangleWaveDb5.pat
-share/timidity/TimGM6mb/Trombone.pat
-share/timidity/TimGM6mb/Tuba.pat
-share/timidity/TimGM6mb/TubularBells.pat
-share/timidity/TimGM6mb/VibraLoop.pat
-share/timidity/TimGM6mb/Vibraphone.pat
-share/timidity/TimGM6mb/Viola.pat
-share/timidity/TimGM6mb/Violin.pat
-share/timidity/TimGM6mb/VoiceOohs.pat
-share/timidity/TimGM6mb/WarmPad.pat
-share/timidity/TimGM6mb/Whistle.pat
-share/timidity/TimGM6mb/WoodBlock.pat
-share/timidity/TimGM6mb/Xylophone.pat
%%xaw%%
Index: devel/sdl-mixer/Makefile
===================================================================
RCS file: /cvs/ports/devel/sdl-mixer/Makefile,v
retrieving revision 1.49
diff -u -p -u -p -r1.49 Makefile
--- devel/sdl-mixer/Makefile 26 Apr 2016 21:21:22 -0000 1.49
+++ devel/sdl-mixer/Makefile 2 Aug 2017 20:49:35 -0000
@@ -4,7 +4,7 @@ COMMENT= SDL multi-channel audio mixer l

DISTNAME= SDL_mixer-1.2.12
PKGNAME= ${DISTNAME:L:S/_/-/}
-REVISION= 4
+REVISION= 5
CATEGORIES= devel audio
MASTER_SITES= ${HOMEPAGE}release/

@@ -24,6 +24,8 @@ LIB_DEPENDS= audio/flac \
audio/libvorbis \
devel/sdl \
devel/smpeg
+
+RUN_DEPENDS= audio/timgm6mb-gus

USE_GMAKE= Yes
CONFIGURE_STYLE= gnu
Index: devel/sdl2-mixer/Makefile
===================================================================
RCS file: /cvs/ports/devel/sdl2-mixer/Makefile,v
retrieving revision 1.8
diff -u -p -u -p -r1.8 Makefile
--- devel/sdl2-mixer/Makefile 11 Mar 2016 20:28:25 -0000 1.8
+++ devel/sdl2-mixer/Makefile 2 Aug 2017 20:49:35 -0000
@@ -4,6 +4,7 @@ V = 2.0.1
COMMENT = SDL2 multi-channel audio mixer library
DISTNAME = SDL2_mixer-${V}
PKGNAME = sdl2-mixer-${V}
+REVISION = 0
CATEGORIES = devel audio

SHARED_LIBS = SDL2_mixer 0.0 # 0.0
@@ -25,6 +26,8 @@ LIB_DEPENDS = audio/flac \
audio/libvorbis \
devel/sdl2 \
devel/smpeg2
+
+RUN_DEPENDS = audio/timgm6mb-gus

CONFIGURE_STYLE = gnu
CONFIGURE_ARGS += --disable-music-flac-shared \
Hi ports --

I did some digging into sdl-mixer and sdl2-mixer. It turns out that for
the vast majority of users, MIDI output for these packages has never
worked. Both sdl-mixer and sdl2-mixer contain their own internal
timidity. What sdl-mixer and sdl2-mixer do is look for an
/etc/timidity.cfg to point it to a GUS patchset so that it can play MIDI
music. Currently, this is only available through the audio/timidity
port. Which means that until this morning, it was only ever available to
users who compiled timidity themselves.

sdl-mixer and sdl2-mixer do not use the timidity binary that you get
from the audio/timidity port.

Now that we have a freely redistributable GUS patchset, I propose we do
the following:

Split the audio/timidity port into two ports: audio/timidity and
audio/timgm6mb-gus. audio/timidity will only provide the timidity binary
and timidity.cfg manual page. audio/timgm6mb-gus will provide the GUS
patchset and a /etc/timidity.cfg that will work with all 3:
audio/timidity, devel/sdl-mixer, and devel/sdl2-mixer.

Add an RDEP on audio/timgm6mb-gus for all 3. Unlike fluidsynth, the 3
timidities are useless without a patchset.

If you're asking "why not just add an RDEP on audio/timidity where it
makes sense," the reason is audio/timidity has three FLAVORs, all of
which conflict with one another. So if a user installs for example
audio/timidity,gtk2 and we add RDEPs on audio/timidity in places, then
things will hit conflicts. And that seems to be a step backwards.
Additionally, I think the more 1997 code we can keep off peoples'
computers, the better. And if we decide to remove timidity from the
ports tree one day, it won't cause the MIDI playback of sdl-mixer and
sdl2-mixer to suddenly stop working.

Attached is a new port, audio/timgm6mb-gus, which contains the patchset
and the /etc/timidity.cfg. A diff is also attached that makes
audio/timidity, devel/sdl-mixer, and devel/sdl2-mixer work with this new
port. With this configuration, prboom (which uses sdl-mixer) and
CorsixTH (which uses sdl2-mixer) are able to play their game music
without timidity installed. And then if you want the standalone timidity
binary, that will just work too, regardless of whether or not sdl-mixer
and sdl2-mixer are installed.

I will then sweep the tree and figure out what things actually really
use the timidity binary, if anything.

OK?

~Brian

No comments:

Post a Comment