ルギア君の戯言

雑多な記事。

LADSPA-Plugins

というわけで spec を書いてテスト目的でいれてみた。

[lugia@lugia-castle ~]$ rpm -qa | grep -P "ladspa-.*-plugins"
ladspa-cmt-plugins-1.16-1m.mo6.i686
ladspa-mcp-plugins-0.4.0-1m.mo6.i686
ladspa-blop-plugins-0.2.8-1m.mo6.i686
ladspa-swh-plugins-0.4.15-1m.mo6.i686
ladspa-amb-plugins-0.4.0-1m.mo6.i686
ladspa-rev-plugins-0.3.1-1m.mo6.i686
ladspa-fil-plugins-0.4.0-1m.mo6.i686
ladspa-tap-plugins-0.7.0-1m.mo6.i686
ladspa-vco-plugins-0.3.0-1m.mo6.i686

Fedora にあるらしかったんだが、SRPM とってきて cpio でどうたらこうたらするのは面倒だったので、spec 書きの練習がてら(?)自分で書いた(ぁ

%global momorel 1                                                                                            
%global swhrel  %(expr %{momorel} + 0)                                                                       
%global cmtrel  %(expr %{momorel} + 0)                                                                       
%global mcprel  %(expr %{momorel} + 0)                                                                       
%global revrel  %(expr %{momorel} + 0)                                                                       
%global vcorel  %(expr %{momorel} + 0)                                                                       
%global ambrel  %(expr %{momorel} + 0)                                                                       
%global filrel  %(expr %{momorel} + 0)                                                                       
%global bloprel %(expr %{momorel} + 0)                                                                       
%global taprel  %(expr %{momorel} + 0)                                                                       

%global swhver  0.4.15
%global cmtver  1.16  
%global mcpver  0.4.0 
%global revver  0.3.1 
%global vcover  0.3.0 
%global ambver  0.4.0 
%global filver  0.1.0 
%global blopver 0.2.8 
%global tapver  0.7.0 
%global tdocver 20040817
%global tedver  r0      

Summary: Plugins for LADSPA
Name: ladspa-plugins       
Version: 0.0.1             
Release: %{momorel}m%{?dist}
License: GPL                
URL: http://ccrma.stanford.edu/planetccrma/software/ladspaworld.html
Group: Development/Libraries                                        

# SWH
Source0:  http://plugin.org.uk/releases/%{swhver}/swh-plugins-%{swhver}.tar.gz
NoSource: 0                                                                   

# CMT
Source1:  http://www.ladspa.org/download/cmt_src_%{cmtver}.tgz
NoSource: 1                                                   

# MCP
Source2:  http://www.kokkinizita.net/linuxaudio/downloads/MCP-plugins-%{mcpver}.tar.bz2
NoSource: 2                                                                            

# REV
Source3:  http://www.kokkinizita.net/linuxaudio/downloads/REV-plugins-%{revver}.tar.bz2
NoSource: 3                                                                            

# VCO
Source4:  http://www.kokkinizita.net/linuxaudio/downloads/VCO-plugins-%{vcover}.tar.bz2
NoSource: 4                                                                            

# AMB
Source5:  http://www.kokkinizita.net/linuxaudio/downloads/AMB-plugins-%{ambver}.tar.bz2
NoSource: 5                                                                            

# FIL
Source6:  http://www.kokkinizita.net/linuxaudio/downloads/FIL-plugins-%{filver}.tar.bz2
NoSource: 6                                                                            

# blop
Source7:  http://dl.sourceforge.net/sourceforge/blop/blop-%{blopver}.tar.gz
NoSource: 7                                                                

# tap
Source8:  http://dl.sourceforge.net/sourceforge/tap-plugins/tap-plugins-%{tapver}.tar.gz
NoSource: 8                                                                             
Source9:  http://dl.sourceforge.net/sourceforge/tap-plugins/tap-plugins-doc-%{tdocver}.tar.gz
NoSource: 9                                                                                  
Source10: http://dl.sourceforge.net/sourceforge/tap-plugins/tap-reverbed-%{tedver}.tar.gz    
NoSource: 10                                                                                 

BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Requires: ladspa                                                         
BuildPreReq: ladspa-devel                                                
BuildPreReq: gettext                                                     
BuildPreReq: fftw-devel                                                  
BuildPreReq: jack-devel                                                  
BuildPreReq: libpng-devel                                                

%description
ladspa-plugins is libraries set for LADSPA.

%package -n ladspa-swh-plugins
Summary: A collection of LADSPA plugins written by Steve Harris.
Version: %{swhver}                                              
Release: %{swhrel}m%{?dist}                                     
License: GPL                                                    
URL: http://plugin.org.uk/                                      
Requires: fftw ladspa                                           

%description -n ladspa-swh-plugins
A collection of LADSPA plugins written by Steve Harris.

%package -n ladspa-cmt-plugins
Summary: Computer Music Toolkit plugins for LADSPA.
Version: %{cmtver}                                 
Release: %{cmtrel}m%{?dist}                        
License: LGPL                                      
URL: http://www.ladspa.org/cmt/                    
Requires: ladspa                                   

%description -n ladspa-cmt-plugins
The Computer Music Toolkit (CMT) is a collection of LADSPA plugins for use with software synthesis and recording packages on Linux. See the license before use.                                                                                       

The CMT is developed primarily by Richard W.E. Furse the principle designer of the LADSPA standard, with additional plugins by Jezar and David Bartold.                                                                                               

%package -n ladspa-mcp-plugins
Summary: A set of audio plugins for LADSPA by Fons Adriaensen.
Version: %{mcpver}                                            
Release: %{mcprel}m%{?dist}                                   
License: GPL                                                  
URL: http://www.kokkinizita.net/linuxaudio/                   
Requires: ladspa                                              

%description -n ladspa-mcp-plugins
A set of audio plugins for LADSPA by Fons Adriaensen.
Currently contains a phaser, a chorus and a moog vcf.

%package -n ladspa-rev-plugins
Summary: A set of audio plugins for LADSPA by Fons Adriaensen.
Version: %{revver}                                            
Release: %{revrel}m%{?dist}                                   
License: GPL                                                  
URL: http://www.kokkinizita.net/linuxaudio/                   
Requires: ladspa                                              

%description -n ladspa-rev-plugins
This reverb is based on gverb by Juhana Sadeharju, but the code (now C++) is entirely original. I added a second input for stereo operation, and some code to prevent FP denormalisation. This is a preliminary release, and this plugin will probably change a lot in future versions.                                                                                          

%package -n ladspa-vco-plugins
Summary: A set of audio plugins for LADSPA by Fons Adriaensen.
Version: %{vcover}                                            
Release: %{vcorel}m%{?dist}                                   
License: GPL                                                  
URL: http://www.kokkinizita.net/linuxaudio/                   
Requires: ladspa                                              

%description -n ladspa-vco-plugins
Pulse-VCO: Anti-aliased dirac pulse oscillator (flat amplitude spectrum) Saw-VCO : Anti-aliased sawtooth oscillator (1/F amplitude spectrum)                                                                                                          

Both oscillators are based on the same principle of using a precomputed interpolated dirac pulse. For the sawtooth version, the 'edge' is made by integrating the anti-aliased pulse. Aliases should be below -80dB for fundamental frequencies below Fsamp / 6 (i.e. up to 8 kHz at Fsamp = 48 kHz). This frequency range includes the fundamental frequencies all known musical instruments.                                                                                                              

%package -n ladspa-amb-plugins
Summary: A set of audio plugins for LADSPA by Fons Adriaensen.
Version: %{ambver}                                            
License: GPL                                                  
URL: http://www.kokkinizita.net/linuxaudio/                   
Requires: ladspa                                              

%description -n ladspa-amb-plugins
A set of first order Ambisonics plugins I use with Ardour. Included are: mono and stereo input panner, horizontal rotation, and square and hexagon horizontal decoders. See the README for more.                                                      

%package -n ladspa-fil-plugins
Summary: A set of audio plugins for LADSPA by Fons Adriaensen.
Version: %{ambver}                                            
Release: %{ambrel}m%{?dist}                                   
License: GPL                                                  
URL: http://www.kokkinizita.net/linuxaudio/                   
Requires: ladspa                                              

%description -n ladspa-fil-plugins
There's one plugin in this first release, a four-band parametric equaliser. Each section has an active/bypass switch, frequency, bandwidth and gain controls. There is also a global bypass switch and gain control.                                  

%package -n ladspa-blop-plugins
Summary: BLOP comprises a set of LADSPA plugins
Version: %{blopver}                            
Release: %{bloprel}m%{?dist}                   
License: GPL                                   
URL: http://blop.sourceforge.net/              
Requires: ladspa                               

%description -n ladspa-blop-plugins
BLOP comprises a set of LADSPA plugins that generate bandlimited sawtooth, square, variable pulse and slope-variable triangle waves, for use in LADSPA hosts, principally for use with one of the many modular software synthesisers available.       

They are wavetable based, and are designed to produce output with harmonic content as high as possible over a wide pitch range.                                                                                                                       

%package -n ladspa-tap-plugins
Summary: TAP-plugins is short for Tom's Audio Processing plugins.
Version: %{tapver}                                               
Release: %{taprel}m%{?dist}                                      
License: GPL                                                     
URL: http://tap-plugins.sourceforge.net/                         
Requires: ladspa                                                 
Requires: jack                                                   
Requires: libpng                                                 

%description -n ladspa-tap-plugins
TAP-plugins is short for Tom's Audio Processing plugins. It is a bunch of LADSPA plugins for digital audio processing, intended for use in a professional DAW environment such as Ardour.                                                             

%prep
%setup -q -a 0 -a 1 -a 2 -a 3 -a 4 -a 5 -a 6 -a 7 -a 8 -a 9 -a 10 -c %{name}-%{version}

%build
cd swh-plugins-%{swhver}
%configure              
%make                   
cd ..                   

cd cmt/src
%make     
cd ../../ 

cd MCP-plugins-%{mcpver}
%make                   
cd ../                  

cd REV-plugins-%{revver}
%make                   
cd ../                  

cd VCO-plugins-%{vcover}
%make                   
cd ../                  

cd AMB-plugins-%{ambver}
%make                   
cd ../                  

cd FIL-plugins-%{filver}
%make                   
cd ../                  

cd blop-%{blopver}
%configure --with-ladspa-prefix=%{_prefix} \
           --with-ladspa-plugin-dir=%{_libdir}/ladspa
%make                                                
cd ../                                               

cd tap-plugins-%{tapver}
%make                   
cd ../                  

cd tap-reverbed-%{tedver}
%configure               
%make                    
cd ../                   

%install
mkdir -p %{buildroot}
cd swh-plugins-%{swhver}
make DESTDIR=%{buildroot} install
cd ..                            

cd cmt/plugins
install -m 755 cmt.so %{buildroot}%{_libdir}/ladspa
cd ../../                                          

cd MCP-plugins-%{mcpver}
install -m 755 *.so   %{buildroot}%{_libdir}/ladspa
cd ..                                              

cd REV-plugins-%{revver}
install -m 755 *.so   %{buildroot}%{_libdir}/ladspa
cd ..                                              

cd VCO-plugins-%{vcover}
install -m 755 *.so   %{buildroot}%{_libdir}/ladspa
cd ..                                              

cd AMB-plugins-%{ambver}
install -m 755 *.so   %{buildroot}%{_libdir}/ladspa
cd ..                                              

cd FIL-plugins-%{filver}
install -m 755 *.so   %{buildroot}%{_libdir}/ladspa
cd ..                                              

cd blop-%{blopver}
make DESTDIR=%{buildroot} install
cd ..                            

cd tap-plugins-%{tapver}
install -m 755 *.so   %{buildroot}%{_libdir}/ladspa
cd ..                                              

cd tap-reverbed-%{tedver}
%makeinstall             
cd ..                    

%files -n ladspa-swh-plugins
%{_libdir}/ladspa/alias_1407.so
%{_libdir}/ladspa/allpass_1895.so
%{_libdir}/ladspa/am_pitchshift_1433.so
%{_libdir}/ladspa/amp_1181.so          
%{_libdir}/ladspa/analogue_osc_1416.so 
%{_libdir}/ladspa/bandpass_a_iir_1893.so
%{_libdir}/ladspa/bandpass_iir_1892.so  
%{_libdir}/ladspa/bode_shifter_1431.so  
%{_libdir}/ladspa/bode_shifter_cv_1432.so
%{_libdir}/ladspa/butterworth_1902.so    
%{_libdir}/ladspa/chebstortion_1430.so   
%{_libdir}/ladspa/comb_1190.so           
%{_libdir}/ladspa/comb_1887.so           
%{_libdir}/ladspa/comb_splitter_1411.so  
%{_libdir}/ladspa/const_1909.so          
%{_libdir}/ladspa/crossover_dist_1404.so 
%{_libdir}/ladspa/dc_remove_1207.so      
%{_libdir}/ladspa/decay_1886.so          
%{_libdir}/ladspa/decimator_1202.so      
%{_libdir}/ladspa/declip_1195.so         
%{_libdir}/ladspa/delay_1898.so          
%{_libdir}/ladspa/delayorama_1402.so     
%{_libdir}/ladspa/diode_1185.so          
%{_libdir}/ladspa/divider_1186.so        
%{_libdir}/ladspa/dj_eq_1901.so          
%{_libdir}/ladspa/dj_flanger_1438.so     
%{_libdir}/ladspa/dyson_compress_1403.so 
%{_libdir}/ladspa/fad_delay_1192.so      
%{_libdir}/ladspa/fast_lookahead_limiter_1913.so
%{_libdir}/ladspa/flanger_1191.so               
%{_libdir}/ladspa/fm_osc_1415.so                
%{_libdir}/ladspa/foldover_1213.so              
%{_libdir}/ladspa/foverdrive_1196.so            
%{_libdir}/ladspa/freq_tracker_1418.so          
%{_libdir}/ladspa/gate_1410.so                  
%{_libdir}/ladspa/giant_flange_1437.so          
%{_libdir}/ladspa/gong_1424.so                  
%{_libdir}/ladspa/gong_beater_1439.so           
%{_libdir}/ladspa/gsm_1215.so                   
%{_libdir}/ladspa/gverb_1216.so                 
%{_libdir}/ladspa/hard_limiter_1413.so          
%{_libdir}/ladspa/harmonic_gen_1220.so          
%{_libdir}/ladspa/hermes_filter_1200.so         
%{_libdir}/ladspa/highpass_iir_1890.so          
%{_libdir}/ladspa/hilbert_1440.so               
%{_libdir}/ladspa/imp_1199.so                   
%{_libdir}/ladspa/impulse_1885.so               
%{_libdir}/ladspa/inv_1429.so                   
%{_libdir}/ladspa/karaoke_1409.so               
%{_libdir}/ladspa/latency_1914.so               
%{_libdir}/ladspa/lcr_delay_1436.so             
%{_libdir}/ladspa/lowpass_iir_1891.so           
%{_libdir}/ladspa/ls_filter_1908.so             
%{_libdir}/ladspa/matrix_ms_st_1421.so          
%{_libdir}/ladspa/matrix_spatialiser_1422.so    
%{_libdir}/ladspa/matrix_st_ms_1420.so          
%{_libdir}/ladspa/mbeq_1197.so                  
%{_libdir}/ladspa/mod_delay_1419.so             
%{_libdir}/ladspa/multivoice_chorus_1201.so     
%{_libdir}/ladspa/notch_iir_1894.so             
%{_libdir}/ladspa/phasers_1217.so               
%{_libdir}/ladspa/pitch_scale_1193.so           
%{_libdir}/ladspa/pitch_scale_1194.so           
%{_libdir}/ladspa/plate_1423.so                 
%{_libdir}/ladspa/pointer_cast_1910.so          
%{_libdir}/ladspa/rate_shifter_1417.so          
%{_libdir}/ladspa/retro_flange_1208.so          
%{_libdir}/ladspa/revdelay_1605.so              
%{_libdir}/ladspa/ringmod_1188.so               
%{_libdir}/ladspa/satan_maximiser_1408.so       
%{_libdir}/ladspa/sc1_1425.so                   
%{_libdir}/ladspa/sc2_1426.so                   
%{_libdir}/ladspa/sc3_1427.so                   
%{_libdir}/ladspa/sc4_1882.so                   
%{_libdir}/ladspa/sc4m_1916.so                  
%{_libdir}/ladspa/se4_1883.so                   
%{_libdir}/ladspa/shaper_1187.so                
%{_libdir}/ladspa/sifter_1210.so                
%{_libdir}/ladspa/sin_cos_1881.so               
%{_libdir}/ladspa/single_para_1203.so           
%{_libdir}/ladspa/sinus_wavewrapper_1198.so     
%{_libdir}/ladspa/smooth_decimate_1414.so       
%{_libdir}/ladspa/split_1406.so                 
%{_libdir}/ladspa/step_muxer_1212.so            
%{_libdir}/ladspa/surround_encoder_1401.so      
%{_libdir}/ladspa/svf_1214.so                   
%{_libdir}/ladspa/tape_delay_1211.so            
%{_libdir}/ladspa/transient_1206.so             
%{_libdir}/ladspa/triple_para_1204.so           
%{_libdir}/ladspa/valve_1209.so                 
%{_libdir}/ladspa/valve_rect_1405.so            
%{_libdir}/ladspa/vynil_1905.so                 
%{_libdir}/ladspa/wave_terrain_1412.so          
%{_libdir}/ladspa/xfade_1915.so                 
%{_libdir}/ladspa/zm1_1428.so                   
%{_datadir}/ladspa/rdf/swh-aux.rdf              
%{_datadir}/ladspa/rdf/swh-plugins.rdf          
%{_datadir}/ladspa/rdf/swh-scales.rdf           
%{_datadir}/locale/*/LC_MESSAGES/swh-plugins.mo 

%files -n ladspa-cmt-plugins
%{_libdir}/ladspa/cmt.so    

%files -n ladspa-mcp-plugins
%{_libdir}/ladspa/cs_chorus.so
%{_libdir}/ladspa/cs_phaser.so
%{_libdir}/ladspa/mvchpf24.so 
%{_libdir}/ladspa/mvclpf24.so 

%files -n ladspa-rev-plugins
%{_libdir}/ladspa/g2reverb.so

%files -n ladspa-vco-plugins
%{_libdir}/ladspa/blvco.so  

%files -n ladspa-amb-plugins
%{_libdir}/ladspa/ambisonic1.so
%{_libdir}/ladspa/ambisonic2.so

%files -n ladspa-fil-plugins
%{_libdir}/ladspa/filters.so

%files -n ladspa-blop-plugins
%{_libdir}/ladspa/adsr_1653.so
%{_libdir}/ladspa/adsr_1680.so
%{_libdir}/ladspa/amp_1654.so 
%{_libdir}/ladspa/blop_files/parabola_1649_data.so
%{_libdir}/ladspa/blop_files/sawtooth_1641_data.so
%{_libdir}/ladspa/blop_files/square_1643_data.so  
%{_libdir}/ladspa/branch_1673.so                  
%{_libdir}/ladspa/dahdsr_2021.so                  
%{_libdir}/ladspa/difference_2030.so              
%{_libdir}/ladspa/fmod_1656.so                    
%{_libdir}/ladspa/interpolator_1660.so            
%{_libdir}/ladspa/lp4pole_1671.so                 
%{_libdir}/ladspa/product_1668.so                 
%{_libdir}/ladspa/pulse_1645.so                   
%{_libdir}/ladspa/quantiser100_2029.so            
%{_libdir}/ladspa/quantiser20_2027.so             
%{_libdir}/ladspa/quantiser50_2028.so             
%{_libdir}/ladspa/random_1661.so                  
%{_libdir}/ladspa/ratio_2034.so                   
%{_libdir}/ladspa/sawtooth_1641.so                
%{_libdir}/ladspa/sequencer16_1677.so             
%{_libdir}/ladspa/sequencer32_1676.so             
%{_libdir}/ladspa/sequencer64_1675.so             
%{_libdir}/ladspa/square_1643.so                  
%{_libdir}/ladspa/sum_1665.so                     
%{_libdir}/ladspa/sync_pulse_2023.so              
%{_libdir}/ladspa/sync_square_1678.so             
%{_libdir}/ladspa/tracker_2025.so                 
%{_libdir}/ladspa/triangle_1649.so                
%{_datadir}/locale/*/LC_MESSAGES/blop.mo          

%files -n ladspa-tap-plugins
%{_bindir}/reverbed         
%{_libdir}/ladspa/tap_autopan.so                          
%{_libdir}/ladspa/tap_chorusflanger.so                    
%{_libdir}/ladspa/tap_deesser.so                          
%{_libdir}/ladspa/tap_doubler.so                          
%{_libdir}/ladspa/tap_dynamics_m.so                       
%{_libdir}/ladspa/tap_dynamics_st.so
%{_libdir}/ladspa/tap_echo.so
%{_libdir}/ladspa/tap_eq.so
%{_libdir}/ladspa/tap_eqbw.so
%{_libdir}/ladspa/tap_limiter.so
%{_libdir}/ladspa/tap_pinknoise.so
%{_libdir}/ladspa/tap_pitch.so
%{_libdir}/ladspa/tap_reflector.so
%{_libdir}/ladspa/tap_reverb.so
%{_libdir}/ladspa/tap_rotspeak.so
%{_libdir}/ladspa/tap_sigmoid.so
%{_libdir}/ladspa/tap_tremolo.so
%{_libdir}/ladspa/tap_tubewarmth.so
%{_libdir}/ladspa/tap_vibrato.so

%clean
rm -rf --preserve-root %{buildroot}

%changelog

%defattr と %doc が無いのは仕様です(ぉぃ
っていうか書くのが面倒(ぉぃ


OmoiKondara でちゃんとビルドできますし、Momonga 謹製の(?) speclint も通りますが、ギモンなのは、1つの spec 上で

  • 「1つのソースから複数のパッケージを作る」は○ (本体と devel パッケージ)
  • 「複数のソースから1つのパッケージを作る」も○ (qtbsch3v など)
    • 「複数のソースをとってきてそれぞれ別にパッケージを作る」の場合は spec を分けるべきなのか?
  • 1つにする利点
    • 1つ momorel をあげれば全部の Release が 1 増える
    • 1つのファイルしか含まない (%doc を除いて) RPM を作成するのに spec 1つ割くのはなんか妙
    • 一度にビルドできる
  • 1つにする欠点
    • 全てのソースが get できなければビルドできない
    • ビルド工程が複雑になる
    • %files のメンテナンスに慎重を要する
      • ファイルが増えた場合どこから来たのかわかりにくい


ちなみにこれだけたくさんビルドしても僕のパソコンですら 5 分足らずでビルドできます。それぐらいひとつひとつは豆粒みたいなものですね。

[lugia@lugia-castle ladspa-plugins]$ rpm --eval "%(expr 1 + 1)"
2
[lugia@lugia-castle ladspa-plugins]$ rpm --eval "%(echo $((1 + 1)))"
2

上の2つは両方共おなじ意味です。

  • 上は遅いですが、bash だけでなく、(t)csh や zsh でも使えます。
  • 下は早い替わりに、bashzsh では使えますが、(t)csh では使えません。

どっちをとる?