+#
+# Conditional build:
+%bcond_without x # without X based interfaces (implies libX11 deps)
+%bcond_without alsa # without ALSA support
+%bcond_without ao # enable ao support
+%bcond_with arts # enable ARTS support (implies also glib(2) deps)
+%bcond_with esd # enable ESD support
+%bcond_with jack # enable JACK support
+%bcond_with nas # enable NAS support
+%bcond_with vorbis # enable Ogg Vorbis support
+#
Summary: TiMidity++ - MIDI to WAV converter and player
-Name: -
-Version: -
-Release: -
-Group: -
-Copyright: GPL
-Icon: -
-Source0: http://www.goice.co.jp/member/mo/timidity/dist/%{name}-%{version}.tar.bz2
-URL: http://www.goice.co.jp/member/mo/timidity/
-BuildRoot: /tmp/%{name}-%{version}-root
+Summary(pl.UTF-8): TiMidity++ - konwerter do WAV oraz odtwarzacz plików MIDI
+Summary(pt_BR.UTF-8): Sintetizador MIDI por software
+Summary(ru.UTF-8): Проигрыватель MIDI файлов и конвертор их в WAV формат
+Summary(uk.UTF-8): Програвач MIDI-файлів та конвертор їх в WAV формат
+Name: TiMidity++
+Version: 2.15.0
+Release: 1
+License: GPL
+Group: Applications/Sound
+Source0: http://downloads.sourceforge.net/timidity/%{name}-%{version}.tar.xz
+# Source0-md5: d85077febda2c85ffe9f9628023c2667
+Source1: http://archive.cs.umbc.edu/pub/midia/instruments.tar.gz
+# Source1-md5: 4959787a78ee39d44a36185bd303cf20
+Source2: britepno.pat.bz2
+# Source2-md5: 324e265362f812883024b58cf3470d1a
+Source3: pistol.pat.bz2
+# Source3-md5: f961325db679de6e0ea402ebe6a268f9
+Source4: timidity.cfg
+Source5: timidity.init
+Source6: timidity.sysconfig
+Source7: timidity-modules-load.conf
+Source8: timidity.service
+Patch0: %{name}-detach.patch
+Patch2: %{name}-configure.patch
+URL: http://timidity.sourceforge.net/
+%{?with_alsa:BuildRequires: alsa-lib-devel}
+%{?with_arts:BuildRequires: arts-devel}
+BuildRequires: autoconf
+%{?with_esd:BuildRequires: esound-devel}
+%{?with_x:BuildRequires: gtk+-devel}
+%{?with_jack:BuildRequires: jack-audio-connection-kit-devel}
+%{?with_ao:BuildRequires: libao-devel}
+%{?with_vorbis:BuildRequires: libvorbis-devel}
+%{?with_x:BuildRequires: motif-devel}
+%{?with_nas:BuildRequires: nas-devel}
+BuildRequires: ncurses-devel
+BuildRequires: rpmbuild(macros) >= 1.626
+BuildRequires: slang-devel >= 2.0.0
+%{?with_x:BuildRequires: tk-devel >= 8.3.2}
+%{?with_x:Provides: %{name}(X) = %{version}-%{release}}
+Obsoletes: timidity < 2.10.4
+Obsoletes: timidity++ < 2.10.4
+Obsoletes: timidity++-X11 < 2.10.4
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
TiMidity++ is a converter that converts some of MIDI files ( formats :
-Standard MIDI file (*.MID), Recomposer files (*.RCP, *.R36, *.G18, *.G36)
-and Module file (*.mod) ) into formatted audio file (ex. RIFF WAVE).
-TiMidity uses Gravis Ultrasound-compatible patch files or Soundfonts (*.sfx,
-*.sf2) to generate digital audio data from MIDI files. The digital audio
-data generated by TiMidity can be stored in a file for processing, or played
-in real time through an audio device. In real time playing, TiMidity if able
-to show the lylic contained in KAR file or WRD file.
+Standard MIDI file (MID), Recomposer files (RCP, R36, G18, G36) and
+Module file (mod) ) into formatted audio file (ex. RIFF WAVE).
+TiMidity uses Gravis Ultrasound-compatible patch files or Soundfonts
+(sfx, sf2) to generate digital audio data from MIDI files. The digital
+audio data generated by TiMidity can be stored in a file for
+processing, or played in real time through an audio device. In real
+time playing, TiMidity if able to show the lyric contained in KAR file
+or WRD file.
+
+%description -l pl.UTF-8
+TiMidity++ jest konwerterem z niektórych plików MIDI (formaty:
+Standard MIDI (MID), Recomposer (RCP, R36, G18, G36), Module (mod)) do
+plików audio (np. RIFF WAVE). Do generowania danych z plików MIDI
+TiMidity używa patchy takich jak Gravis Ultrasound albo Soundfontów
+(sfx, sf2). Cyfrowe dane audio mogą być zapisane do pliku albo
+odtwarzane w czasie rzeczywistym. Przy odtwarzaniu TiMidity może
+pokazywać słowa zawarte w pliku KAR lub WRD.
+
+%description -l pt_BR.UTF-8
+O TiMidity++ é um sintetizador MIDI por software. Este pacote permite
+ouvir arquivos do tipo MIDI com a mesma qualidade de som que as placas
+que utilizam o recurso de "wavetable" via hardware (como a AWE32),
+mesmo que esta não possua o recurso de "wavetable" (a SB16 por
+exemplo).
+
+%description -l ru.UTF-8
+Проигрыватель MIDI файлов, не требующий поддержки инструментов MIDI
+звуковой платой. Использует файлы инструментов в формате GUS/patch,
+может также использовать данные в формате SoundFont. Обеспечивает
+отличное качество звука MIDI за счет интенсивного использования
+процессора.
+
+%description -l uk.UTF-8
+Програвач MIDI файлів, якому не потрібна підтримка інструментів MIDI
+звуковою платою. Використовує файли інструментів у форматі GUS/patch,
+розуміє також формат SoundFont. Забезпечує відмінну якість звуку MIDI
+за рахунок інтенсивного використання процесора.
+
+%package gspdir
+Summary: Directory for TiMidity++ instruments
+Summary(pl.UTF-8): Katalog na instrumenty TiMidity++
+Group: Applications/Sound
+
+%description gspdir
+Directory where TiMidity++ instruments should be placed in.
+
+%description gspdir -l pl.UTF-8
+Katalog, w którym powinny być instalowane instrumenty dla TiMidity++.
+
+%package instruments
+Summary: Instruments for TiMidity++
+Summary(pl.UTF-8): Instrumenty dla TiMidity++
+Summary(pt_BR.UTF-8): Instrumentos básicos para o TiMidity++
+Group: Applications/Sound
+Requires: %{name}-gspdir = %{version}-%{release}
+Obsoletes: timidity-patches < 2.10.4
+
+%description instruments
+Instruments for TiMidity++.
+
+%description instruments -l pl.UTF-8
+Instrumenty dla TiMidity++.
+
+%description instruments -l pt_BR.UTF-8
+Este pacote inclui um conjunto básico de instrumentos (chamados de
+patches no meio musical) para o TiMidity++.
+
+%package emacs
+Summary: Emacs interface for TiMidity++
+Summary(pl.UTF-8): Interfejs TiMidity++ oparty o Emacsa
+Group: Applications/Sound
+Requires: %{name} = %{version}-%{release}
+Requires: emacs
+
+%description emacs
+Emacs interface for TiMidity++.
+
+%description emacs -l pl.UTF-8
+Interfejs TiMidity++ oparty o Emacsa.
+
+%package gtk
+Summary: GTK+ interface for TiMidity++
+Summary(pl.UTF-8): Interfejs TiMidity++ oparty o bibliotekę GTK+
+Group: Applications/Sound
+Requires: %{name}(X) = %{version}-%{release}
+
+%description gtk
+gtkmidi - GTK+ interface for TiMidity++.
+
+%description gtk -l pl.UTF-8
+gtkmidi - interfejs do TiMidity++ oparty o bibliotekę GTK+.
+
+%package motif
+Summary: Motif interface for TiMidity++
+Summary(pl.UTF-8): Interfejs TiMidity++ oparty o Motif
+Group: Applications/Sound
+Requires: %{name}(X) = %{version}-%{release}
+
+%description motif
+xmmidi - Motif interface for TiMidity++.
+
+%description motif -l pl.UTF-8
+xmmidi - interfejs do TiMidity++ oparty o bibliotekę Motif.
+
+%package slang
+Summary: Slang interface for TiMidity++
+Summary(pl.UTF-8): Interfejs TiMidity++ oparty o bibliotekę Slang
+Group: Applications/Sound
+Requires: %{name} = %{version}-%{release}
+
+%description slang
+Slang interface for TiMidity++.
+
+%description slang -l pl.UTF-8
+Interfejs do TiMidity++ oparty o bibliotekę Slang.
+
+%package tcltk
+Summary: Tcl/Tk interface for TiMidity++
+Summary(pl.UTF-8): Interfejs TiMidity++ oparty o Tcl/Tk
+Group: Applications/Sound
+Requires: %{name}(X) = %{version}-%{release}
+
+%description tcltk
+tkmidi - Tcl/Tk interface for TiMidity++.
+
+%description tcltk -l pl.UTF-8
+tkmidi - interfejs do TiMidity++ oparty o Tcl/Tk.
+
+%package vt100
+Summary: VT100 interface for TiMidity++
+Summary(pl.UTF-8): Interfejs TiMidity++ działający na terminalu VT100
+Group: Applications/Sound
+Requires: %{name} = %{version}-%{release}
+
+%description vt100
+VT100 interface for TiMidity++.
+
+%description vt100 -l pl.UTF-8
+Interfejs do TiMidity++ mogący działać na terminalu VT100.
+
+%package xaw
+Summary: Athena interface for TiMidity++
+Summary(pl.UTF-8): Interfejs TiMidity++ oparty o Athena Widgets
+Group: Applications/Sound
+Requires: %{name}(X) = %{version}-%{release}
+
+%description xaw
+xawmidi - Athena interface for TiMidity++.
+
+%description xaw -l pl.UTF-8
+xawmidi - interfejs do TiMidity++ oparty o biblitekę widgetów Athena.
+
+%package xskin
+Summary: "X Skin" interface for TiMidity++
+Summary(pl.UTF-8): Interfejs TiMidity++ "X Skin"
+Group: Applications/Sound
+Requires: %{name}(X) = %{version}-%{release}
+
+%description xskin
+xskinmidi - "X Skin" interface for TiMidity++.
+
+%description xskin -l pl.UTF-8
+xskinmidi - interfejs do TiMidity++ "X Skin".
+
+%package alsaseq
+Summary: TiMidity++ ALSA sequencer interface
+Summary(pl.UTF-8): TiMidity++ jako interfejs sekwencera ALSA
+Group: Applications/Sound
+Requires(post,preun): /sbin/chkconfig
+Requires(post,preun,postun): systemd-units >= 38
+Requires: %{name} = %{version}-%{release}
+Requires: rc-scripts
+Requires: systemd-units >= 38
+
+%description alsaseq
+The ALSA sequencer interface communicates between ALSA sequencer core
+and timidity. The interface receives events from sequencer and plays
+it in (quasi-)real-time. In this mode, TiMidity works purely as the
+software real-time MIDI render, that is as a software MIDI synth
+engine on ALSA.
+
+%description alsaseq -l pl.UTF-8
+Interfejs sekwencera ALSA komunikuje się między rdzeniem sekwencera
+ALSA a timidity. Interfejs odbiera zdarzenia od sekwencera od odtwarza
+je w czasie (prawie) rzeczywistym. W tym trybie TiMidity działa
+wyłącznie jako programowy odtwarzacz MIDI czasu rzeczywistego, czyli
+jako silnik syntezatora MIDI w architekturze ALSA.
%prep
%setup -q
+%patch0 -p1
+%patch2 -p1
+
+for f in doc/ja_JP.eucJP/README*; do
+ %{__mv} $f ${f}.ja
+done
%build
-(autoheader/autoconf/automake)
-CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="-s" \
-./configure \
- --prefix=/usr
-make
+cp -f /usr/share/automake/config.sub autoconf
+%{__autoconf}
+
+AUDIO=oss%{?with_alsa:,alsa}%{?with_arts:,arts}%{?with_esd:,esd}\
+%{?with_jack:,jack}%{?with_nas:,nas}%{?with_vorbis:,vorbis}%{?with_ao:,ao}
+
+%configure \
+ CPPFLAGS="-DUSE_INTERP_RESULT %{rpmcppflags}" \
+ %{?with_alsa:--enable-alsaseq} \
+ --enable-audio=$AUDIO \
+ --enable-dynamic \
+ --enable-emacs=dynamic \
+ %{?with_x:--enable-gtk=dynamic} \
+ %{?with_x:--enable-motif=dynamic} \
+ --enable-ncurses=dynamic \
+ --enable-network \
+ --enable-server \
+ --enable-slang=dynamic \
+ %{?with_x:--enable-spectrogram} \
+ %{?with_x:--enable-tcltk=dynamic} \
+ --enable-vt100=dynamic \
+ %{?with_x:--enable-xaw=dynamic} \
+ %{?with_x:--enable-xskin=dynamic} \
+ --with-default-path=%{_sysconfdir} \
+ --with-elf \
+ %{!?with_x:--without-x}
+
+%{__make} \
+ SHLIB_DIR=%{_libdir}/timidity
%install
rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_datadir}/GUSpatches,/etc/{rc.d/init.d,sysconfig}} \
+ $RPM_BUILD_ROOT{%{systemdunitdir},/etc/modules-load.d}
+
+%{__make} install \
+ DESTDIR=$RPM_BUILD_ROOT \
+ ELISP_DIR=%{_datadir}/emacs/site-lisp \
+ SHLIB_DIR=%{_libdir}/timidity
+
+# missing in install_tk targets
+%{__make} -C interface install.bitmaps \
+ DESTDIR=$RPM_BUILD_ROOT
-gzip -9nf $RPM_BUILD_ROOT/usr/info/*.info* \
- $RPM_BUILD_ROOT/usr/man/man*/* \
- README ChangeLog
+## based on timidity/timidity.c
+##ln -s timidity $RPM_BUILD_ROOT%{_bindir}/kmidi # does it work?
+ln -sf timidity $RPM_BUILD_ROOT%{_bindir}/gtkmidi
+ln -sf timidity $RPM_BUILD_ROOT%{_bindir}/tkmidi
+ln -sf timidity $RPM_BUILD_ROOT%{_bindir}/xmmidi
+ln -sf timidity $RPM_BUILD_ROOT%{_bindir}/xawmidi
+ln -sf timidity $RPM_BUILD_ROOT%{_bindir}/xskinmidi
-%pre
+install -d $RPM_BUILD_ROOT%{_mandir}/ja/man{1,5}
+install doc/ja_JP.eucJP/timidity.1 $RPM_BUILD_ROOT%{_mandir}/ja/man1
+install doc/ja_JP.eucJP/timidity.cfg.5 $RPM_BUILD_ROOT%{_mandir}/ja/man5
-%preun
+install %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}
-%post
+cd $RPM_BUILD_ROOT%{_datadir}/GUSpatches
+tar xzf %{SOURCE1}
+%{__mv} instruments/* .
+rmdir instruments
+bzip2 -cd %{SOURCE2} > britepno.pat
+bzip2 -cd %{SOURCE3} > pistol.pat
-%postun
+install %{SOURCE5} $RPM_BUILD_ROOT/etc/rc.d/init.d/timidity
+install %{SOURCE6} $RPM_BUILD_ROOT/etc/sysconfig/timidity
+
+install %{SOURCE7} $RPM_BUILD_ROOT/etc/modules-load.d/timidity.conf
+install %{SOURCE8} $RPM_BUILD_ROOT%{systemdunitdir}/timidity.service
%clean
rm -rf $RPM_BUILD_ROOT
+%post alsaseq
+/sbin/chkconfig --add timidity
+%service timidity restart "TiMidity++ ALSA sequencer interface"
+%systemd_post timidity.service
+
+%preun alsaseq
+if [ "$1" = "0" ]; then
+ %service timidity stop
+ /sbin/chkconfig --del timidity
+fi
+%systemd_preun timidity.service
+
+%postun alsaseq
+%systemd_reload
+
+%triggerpostun alsaseq -- %{name}-alsaseq < 2.13.2-8
+%systemd_trigger timidity.service
+
%files
%defattr(644,root,root,755)
+%doc AUTHORS ChangeLog* NEWS README TODO doc/C/{CHANGES*,FAQ,README.[!tx]*}
+%lang(ja) %doc README.ja doc/ja_JP.eucJP/README.[!tx]*.ja
+%attr(755,root,root) %{_bindir}/timidity
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/timidity.cfg
+%dir %{_libdir}/timidity
+%attr(755,root,root) %{_libdir}/timidity/if_ncurses.so
+%{_mandir}/man1/timidity.1*
+%{_mandir}/man5/timidity.cfg.5*
+%lang(ja) %{_mandir}/ja/man1/timidity.1*
+%lang(ja) %{_mandir}/ja/man5/timidity.cfg.5*
+
+%files gspdir
+%defattr(644,root,root,755)
+%dir %{_datadir}/GUSpatches
+
+%files instruments
+%defattr(644,root,root,755)
+%{_datadir}/GUSpatches/*
-%changelog
+%files emacs
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/timidity/if_emacs.so
+%{_datadir}/emacs/site-lisp/timidity.el
+
+%if %{with x}
+%files gtk
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/gtkmidi
+%attr(755,root,root) %{_libdir}/timidity/if_gtk.so
+%endif
+
+%if %{with x}
+%files motif
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/xmmidi
+%attr(755,root,root) %{_libdir}/timidity/if_motif.so
+%endif
+
+%files slang
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/timidity/if_slang.so
+
+%if %{with x}
+%files tcltk
+%defattr(644,root,root,755)
+%doc doc/C/README.tk
+%lang(ja) %doc doc/ja_JP.eucJP/README.tk.ja
+%attr(755,root,root) %{_bindir}/tkmidi
+%attr(755,root,root) %{_libdir}/timidity/if_tcltk.so
+%if "%{_lib}" != "lib"
+%dir %{_prefix}/lib/timidity
+%endif
+%{_prefix}/lib/timidity/tclIndex
+%{_prefix}/lib/timidity/*.tcl
+%{_prefix}/lib/timidity/bitmaps
+%endif
+
+%files vt100
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/timidity/if_vt100.so
+
+%if %{with x}
+%files xaw
+%defattr(644,root,root,755)
+%doc doc/C/README.xaw
+%lang(ja) %doc doc/ja_JP.eucJP/README.xaw.ja
+%attr(755,root,root) %{_bindir}/xawmidi
+%attr(755,root,root) %{_libdir}/timidity/if_xaw.so
+
+%files xskin
+%defattr(644,root,root,755)
+%doc doc/C/README.xskin
+%lang(ja) %doc doc/ja_JP.eucJP/README.xskin.ja
+%attr(755,root,root) %{_bindir}/xskinmidi
+%attr(755,root,root) %{_libdir}/timidity/if_xskin.so
+%endif
+
+%if %{with alsa}
+%files alsaseq
+%defattr(644,root,root,755)
+%attr(754,root,root) /etc/rc.d/init.d/timidity
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/timidity
+%config(noreplace) %verify(not md5 mtime size) /etc/modules-load.d/timidity.conf
+%{systemdunitdir}/timidity.service
+%endif