#
# Conditional build:
+%bcond_without X # without X based interfaces (implies libX11 deps)
%bcond_without alsa # without ALSA 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
-Summary(pl): TiMidity++ - konwerter do WAV oraz odtwarzacz plików MIDI
-Summary(pt_BR): Sintetizador MIDI por software
-Summary(ru): ðÒÏÉÇÒÙ×ÁÔÅÌØ MIDI ÆÁÊÌÏ× É ËÏÎ×ÅÒÔÏÒ ÉÈ × WAV ÆÏÒÍÁÔ
-Summary(uk): ðÒÏÇÒÁ×ÁÞ MIDI-ÆÁÊÌ¦× ÔÁ ËÏÎ×ÅÒÔÏÒ §È × WAV ÆÏÒÍÁÔ
+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.13.0
-Release: 1
+Version: 2.13.2
+Release: 3
License: GPL
-Vendor: Masanao Izumo <mo@goice.co.jp>
Group: Applications/Sound
Source0: http://dl.sourceforge.net/timidity/%{name}-%{version}.tar.bz2
-# Source0-md5: 63284981e1ac81fce2b53cc4b1f4c468
+# Source0-md5: a82ceeb2245e22f4de2b41da21eaee32
Source1: http://archive.cs.umbc.edu/pub/midia/instruments.tar.gz
# Source1-md5: 4959787a78ee39d44a36185bd303cf20
Source2: britepno.pat.bz2
Source3: pistol.pat.bz2
# Source3-md5: f961325db679de6e0ea402ebe6a268f9
Source4: timidity.cfg
-Patch0: %{name}-config.patch
+Source5: timidity.init
+Source6: timidity.sysconfig
+Patch0: %{name}-detach.patch
+Patch1: %{name}-gcc4.patch
+Patch2: %{name}-configure.patch
URL: http://timidity.sourceforge.net/
%{?with_alsa:BuildRequires: alsa-lib-devel}
+%{?with_arts:BuildRequires: arts-devel}
BuildRequires: autoconf
-BuildRequires: gtk+-devel
-BuildRequires: motif-devel
+%{?with_esd:BuildRequires: esound-devel}
+%{?with_X:BuildRequires: gtk+-devel}
+%{?with_jack:BuildRequires: jack-audio-connection-kit-devel}
+%{?with_vorbis:BuildRequires: libvorbis-devel}
+%{?with_X:BuildRequires: motif-devel}
+%{?with_nas:BuildRequires: nas-devel}
BuildRequires: ncurses-devel
-BuildRequires: slang-devel
-BuildRequires: tk-devel >= 8.3.2
+BuildRequires: rpmbuild(macros) >= 1.268
+BuildRequires: slang-devel >= 2.0.0
+%{?with_X:BuildRequires: tk-devel >= 8.3.2}
+%{?with_X:Provides: %{name}(X) = %{version}-%{release}}
Obsoletes: timidity
Obsoletes: timidity++
Obsoletes: timidity++-X11
time playing, TiMidity if able to show the lyric contained in KAR file
or WRD file.
-%description -l pl
-TiMidity++ jest konwerterem z niektórych plików MIDI (formaty:
+%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
-O TiMidity++ é um sintetizador MIDI por software. Este pacote permite
+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
+mesmo que esta não possua o recurso de "wavetable" (a SB16 por
exemplo).
-%description -l ru
-ðÒÏÉÇÒÙ×ÁÔÅÌØ MIDI ÆÁÊÌÏ×, ÎÅ ÔÒÅÂÕÀÝÉÊ ÐÏÄÄÅÒÖËÉ ÉÎÓÔÒÕÍÅÎÔÏ× MIDI
-Ú×ÕËÏ×ÏÊ ÐÌÁÔÏÊ. éÓÐÏÌØÚÕÅÔ ÆÁÊÌÙ ÉÎÓÔÒÕÍÅÎÔÏ× × ÆÏÒÍÁÔÅ GUS/patch,
-ÍÏÖÅÔ ÔÁËÖÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÁÎÎÙÅ × ÆÏÒÍÁÔÅ SoundFont.
-ïÂÅÓÐÅÞÉ×ÁÅÔ ÏÔÌÉÞÎÏÅ ËÁÞÅÓÔ×Ï Ú×ÕËÁ MIDI ÚÁ ÓÞÅÔ ÉÎÔÅÎÓÉ×ÎÏÇÏ
-ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÐÒÏÃÅÓÓÏÒÁ.
+%description -l ru.UTF-8
+Проигрыватель MIDI файлов, не требующий поддержки инструментов MIDI
+звуковой платой. Использует файлы инструментов в формате GUS/patch,
+может также использовать данные в формате SoundFont. Обеспечивает
+отличное качество звука MIDI за счет интенсивного использования
+процессора.
-%description -l uk
-ðÒÏÇÒÁ×ÁÞ 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): Katalog na instrumenty TiMidity++
+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
-Katalog, w którym powinny byæ instalowane instrumenty dla TiMidity++.
+%description gspdir -l pl.UTF-8
+Katalog, w którym powinny być instalowane instrumenty dla TiMidity++.
%package instruments
Summary: Instruments for TiMidity++
-Summary(pl): Instrumenty dla TiMidity++
-Summary(pt_BR): Instrumentos básicos para o 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
%description instruments
Instruments for TiMidity++.
-%description instruments -l pl
+%description instruments -l pl.UTF-8
Instrumenty dla TiMidity++.
-%description instruments -l pt_BR
-Este pacote inclui um conjunto básico de instrumentos (chamados de
+%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 gtk
Summary: GTK+ interface for TiMidity++
-Summary(pl): Interfejs TiMidity++ oparty o bibliotekê gtk+
+Summary(pl.UTF-8): Interfejs TiMidity++ oparty o bibliotekę GTK+
Group: Applications/Sound
-Requires: %{name} = %{version}-%{release}
+Requires: %{name}(X) = %{version}-%{release}
%description gtk
gtkmidi - GTK+ interface for TiMidity++.
-%description gtk -l pl
-gtkmidi - interfejs do TiMidity++ oparty o bibliotekê gtk+.
+%description gtk -l pl.UTF-8
+gtkmidi - interfejs do TiMidity++ oparty o bibliotekę GTK+.
%package motif
Summary: Motif interface for TiMidity++
-Summary(pl): Interfejs TiMidity++ oparty o Motif
+Summary(pl.UTF-8): Interfejs TiMidity++ oparty o Motif
Group: Applications/Sound
-Requires: %{name} = %{version}-%{release}
+Requires: %{name}(X) = %{version}-%{release}
%description motif
xmmidi - Motif interface for TiMidity++.
-%description motif -l pl
-xmmidi - interfejs do TiMidity++ oparty o bibliotekê Motif.
+%description motif -l pl.UTF-8
+xmmidi - interfejs do TiMidity++ oparty o bibliotekę Motif.
%package slang
Summary: Slang interface for TiMidity++
-Summary(pl): Interfejs TiMidity++ oparty o bibliotekê Slang
+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
-Interfejs do TiMidity++ oparty o bibliotekê Slang.
+%description slang -l pl.UTF-8
+Interfejs do TiMidity++ oparty o bibliotekę Slang.
%package tcltk
Summary: Tcl/Tk interface for TiMidity++
-Summary(pl): Interfejs TiMidity++ oparty o Tcl/Tk
+Summary(pl.UTF-8): Interfejs TiMidity++ oparty o Tcl/Tk
Group: Applications/Sound
-Requires: %{name} = %{version}-%{release}
+Requires: %{name}(X) = %{version}-%{release}
%description tcltk
tkmidi - Tcl/Tk interface for TiMidity++.
-%description tcltk -l pl
+%description tcltk -l pl.UTF-8
tkmidi - interfejs do TiMidity++ oparty o Tcl/Tk.
%package vt100
Summary: VT100 interface for TiMidity++
-Summary(pl): Interfejs TiMidity++ dzia³aj±cy na terminalu VT100
+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
-Interfejs do TiMidity++ mog±cy dzia³aæ na terminalu VT100.
+%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): Interfejs TiMidity++ oparty o Athena Widgets
+Summary(pl.UTF-8): Interfejs TiMidity++ oparty o Athena Widgets
Group: Applications/Sound
-Requires: %{name} = %{version}-%{release}
+Requires: %{name}(X) = %{version}-%{release}
%description xaw
xawmidi - Athena interface for TiMidity++.
-%description xaw -l pl
-xawmidi - interfejs do TiMidity++ oparty o biblitekê widgetów Athena.
+%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}
+Obsoletes: TiMidity++ < 2.13.0-3
+
+%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: %{name} = %{version}-%{release}
+Requires: rc-scripts
+
+%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
+%patch1 -p1
+%patch2 -p0
for f in doc/ja_JP.eucJP/README*; do
mv -f $f ${f}.ja
done
%build
-cp -f /usr/share/automake/config.sub .
+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}
+
%configure \
- --with-elf \
+ %{?with_alsa:--enable-alsaseq} \
+ --enable-audio=$AUDIO \
--enable-dynamic \
- --enable-ncurses=dynamic \
- --enable-slang=dynamic \
- --enable-motif=dynamic \
- --enable-tcltk=dynamic \
+ %{?with_X:--enable-gtk=dynamic} \
--enable-emacs=dynamic \
- --enable-xaw=dynamic \
- --enable-xskin=dynamic \
- --enable-gtk=dynamic \
- --enable-vt100=dynamic \
+ %{?with_X:--enable-motif=dynamic} \
+ --enable-ncurses=dynamic \
--enable-network \
--enable-server \
- --enable-spectrogram \
- --enable-audio=default,oss,%{?with_alsa:alsa,}esd \
- %{?with_alsa:--enable-alsaseq=dynamic} \
- --enable-default-output=default
+ --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}
+%{__make} \
+ SHLIB_DIR=%{_libdir}/timidity
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_datadir}/GUSpatches}
+install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_datadir}/GUSpatches,/etc/{rc.d/init.d,sysconfig}}
%{__make} install \
- DESTDIR=$RPM_BUILD_ROOT
+ DESTDIR=$RPM_BUILD_ROOT \
+ SHLIB_DIR=%{_libdir}/timidity
## based on timidity/timidity.c
##ln -s timidity $RPM_BUILD_ROOT%{_bindir}/kmidi # does it work?
bzip2 -cd %{SOURCE2} > britepno.pat
bzip2 -cd %{SOURCE3} > pistol.pat
+install %{SOURCE5} $RPM_BUILD_ROOT/etc/rc.d/init.d/timidity
+install %{SOURCE6} $RPM_BUILD_ROOT/etc/sysconfig/timidity
+
%clean
rm -rf $RPM_BUILD_ROOT
+%post alsaseq
+/sbin/chkconfig --add timidity
+%service timidity restart "TiMidity++ ALSA sequencer interface"
+
+%preun alsaseq
+if [ "$1" = "0" ]; then
+ %service timidity stop
+ /sbin/chkconfig --del timidity
+fi
+
%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 size mtime md5) %{_sysconfdir}/timidity.cfg
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/timidity.cfg
%dir %{_libdir}/timidity
%attr(755,root,root) %{_libdir}/timidity/interface_e.so
%attr(755,root,root) %{_libdir}/timidity/interface_n.so
%{_libdir}/timidity/interface_e.txt
%{_libdir}/timidity/interface_n.txt
-%{_libdir}/timidity/bitmaps
+%if "%{_lib}" != "lib"
+%dir %{_prefix}/lib/timidity
+%endif
+%{?with_X:%{_prefix}/lib/timidity/bitmaps}
%{_mandir}/man1/timidity.1*
%{_mandir}/man5/timidity.cfg.5*
%lang(ja) %{_mandir}/ja/man1/timidity.1*
%lang(ja) %{_mandir}/ja/man5/timidity.cfg.5*
-%if %{with alsa}
-# could be separated, but audio modules are always compiled in,
-# so timidity is linked with alsa-lib anyway
-%attr(755,root,root) %{_libdir}/timidity/interface_A.so
-%{_libdir}/timidity/interface_A.txt
-%endif
-# xskin interface could be separated to, but timidity depends on X anyway
-%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/interface_i.so
-%{_libdir}/timidity/interface_i.txt
%files gspdir
%defattr(644,root,root,755)
%defattr(644,root,root,755)
%{_datadir}/GUSpatches/*
+%if %{with X}
%files gtk
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/gtkmidi
%attr(755,root,root) %{_libdir}/timidity/interface_g.so
%{_libdir}/timidity/interface_g.txt
+%endif
+%if %{with X}
%files motif
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/xmmidi
%attr(755,root,root) %{_libdir}/timidity/interface_m.so
%{_libdir}/timidity/interface_m.txt
+%endif
%files slang
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/timidity/interface_s.so
%{_libdir}/timidity/interface_s.txt
+%if %{with X}
%files tcltk
%defattr(644,root,root,755)
%doc doc/C/README.tk
%attr(755,root,root) %{_bindir}/tkmidi
%attr(755,root,root) %{_libdir}/timidity/interface_k.so
%{_libdir}/timidity/interface_k.txt
-%{_libdir}/timidity/tclIndex
-%{_libdir}/timidity/*.tcl
+%{_prefix}/lib/timidity/tclIndex
+%{_prefix}/lib/timidity/*.tcl
+%endif
%files vt100
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/timidity/interface_T.so
%{_libdir}/timidity/interface_T.txt
+%if %{with X}
%files xaw
%defattr(644,root,root,755)
%doc doc/C/README.xaw
%attr(755,root,root) %{_bindir}/xawmidi
%attr(755,root,root) %{_libdir}/timidity/interface_a.so
%{_libdir}/timidity/interface_a.txt
+
+%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/interface_i.so
+%{_libdir}/timidity/interface_i.txt
+%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
+%endif