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
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 <[email protected]>
# 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 \
timgm6mb-gus.tgz
Description: Binary data
