PKGBUILDs/community/x42-plugins/PKGBUILD
2022-11-20 17:40:53 +00:00

275 lines
11 KiB
Bash

# Maintainer: David Runge <dvzrv@archlinux.org>
# Contributor: Lieven Moors <lievenmoors@gmail.com>
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
# - export OPTIMIZATIONS to override Makefiles without x86isms
pkgname=x42-plugins
pkgver=20221119
pkgrel=1
pkgdesc="Collection of LV2 plugins"
arch=(x86_64)
url="https://github.com/x42/x42-plugins"
license=(GPL2 GPL3)
groups=(lv2-plugins pro-audio)
depends=(cairo ftgl gcc-libs glibc hicolor-icon-theme libglvnd libx11 lv2-host)
makedepends=(fftw gendesk glib2 help2man jack liblo libltc libsamplerate
libsndfile lv2 pango ttf-dejavu zita-convolver)
checkdepends=(kxstudio-lv2-extensions lv2lint)
optdepends=(
'jack: for standalone applications'
'liblo: for standalone applications'
)
options=(debug)
source=(
http://gareus.org/misc/$pkgname/$pkgname-$pkgver.tar.xz
$pkgname.png::https://x42-plugins.com/x42/static/img/x42.png
$pkgname.directory
$pkgname.menu
)
sha512sums=('45d40da23326a6aa977e82a6f7b9fb4655395e3ee5b52065656ae84535f2fc3a54cde218637fbaec59ec44618f66d58c1c1cc7f08a7abf6dcc1939f0b5262daa'
'956fdd8e04c846d06a5267d1748916744418e0ddfce0ac2e9dd3a1c1376aea61499177af80709d9fe78f8c0c2ddcbf9f9e5b2e413adc9a7eca9b648a87ad4860'
'fef75b22b2c1fed8586af4dfd01ea291a7c1506e80ce384f05f13dc04c4b7e3e934003c20d89ae94f36ad1021b7ad75097da836ca30ee965b4107b559305b496'
'411015b0feb8a289272cb821afa7e2a284d3e9d994a446baa73b3a6ce0f0ebd1e94c4cb3392a0afb1d741ce6d8b2d14c9bd124a0684b830275b4ba8e14680aa3')
b2sums=('0317bb3eeebc94e221ca29f714f6119565e7a2198e696207baf2a972a7bf96726dd3a5fcaec436f9ca547fb167cca5fcfd8f72fa5012b356036f19846d003d4e'
'35a8cfcdf7f8c57ba655049a6d75b3bf9d253c25702a3f191d3f6cab215887f7de5025d025993861ae88c1b4daae132e9cc1ddf083e5b822f1b53a683c0fcaa3'
'fb6557cd2e8b83dae1cb38503f2a72093085ddcc0a4ba2e5e0375f7063b83b3fb4180091ce10524cd336eeb33cffed45ada93055b960c9189f83d664216b33ee'
'9c695f58099fcbfdce3e693e491d851ff7894a650ea12e079894176ef054b5f592785467c286bd8feaa340fdcdfb53d930b3a44ea890112e3fc1a4d172beb243')
_names=(darc dpl fat1 fil4 matrixmixer8x8 meter mixtri phaserotate scope spectr stepseq tuna)
prepare() {
cd $pkgname-$pkgver
declare -A comments=(
["darc"]="A general purpose audio signal compressor"
["dpl"]="Look-ahead digital peak limiter intended but not limited to the final step of mastering or mixing"
["fat1"]="Auto-tuner based on Fons Adriaensen's zita-at1"
["fil4"]="4 band parametric equalizer with additional low+high shelf filters, Low and High-pass"
["matrixmixer8x8"]="Matrix Mixer 8x8"
["mixtri"]="Matrix mixer and trigger processor"
["phaserotate"]="Audio Phase rotate"
["scope"]="Simple audio oscilloscope with variable time scale, triggering, cursors and numeric readout"
["spectr"]="Spectrum Analyzer"
["stepseq"]="Simple step sequencer for moddevices.com"
)
declare -A generic=(
["darc"]="Dynamic Audio Range Compressor"
["dpl"]="Peak Limiter"
["fat1"]="Auto Tune"
["fil4"]="Parametric Equalizer"
["matrixmixer8x8"]="Matrix Mixer"
["mixtri"]="Mixer'n'Trigger"
["phaserotate"]="Phase Rotation"
["scope"]="Oscilloscope"
["spectr"]="Spectrum Analyzer"
["stepseq"]="Step Sequencer"
)
declare -A meter_types=(
[0]='EBU R128 Meter'
[1]='K20/RMS Meter (Stereo)'
[2]='K14/RMS Meter (Stereo)'
[3]='K12/RMS Meter (Stereo)'
[4]='BBC Meter (Stereo)'
[5]='BBC M-6'
[6]='DIN Meter (Stereo)'
[7]='EBU Meter (Stereo)'
[8]='Nordic Meter (Stereo)'
[9]='VU Meter (Stereo)'
[10]='True-Peak and RMS Meter (Stereo)'
[11]='DR-14 - Crest Factor Loudness Range Meter'
[12]='Stereo Phase-Correlation Meter'
[13]='Goniometer'
[14]='Phase/Frequency Wheel'
[15]='1/3 Octave Spectrum Analyzer'
[16]='Stereo/Frequency Scope'
[17]='Signal Distribution Histogram'
[18]='Bit Meter'
[19]='Surround Level 8'
)
declare -A tuna_types=(
[0]='Instrument Tuner'
[1]='Instrument Tuner (Spectrum)'
)
# XDG desktop files
for name in "${_names[@]}"; do
case "$name" in
meter)
for type in {0..19}; do
gendesk -n -f \
--pkgname "com.x42_plugins.x42_meter_$type" \
--name "x42-meter ${meter_types[$type]}" \
--pkgdesc "${meter_types[$type]}" \
--exec "x42-meter $type" \
--icon "x42-meter" \
--genericname "Audio Meter"
done
;;
tuna)
for type in {0,1}; do
gendesk -n -f \
--pkgname "com.x42_plugins.x42_${name}_$type" \
--name "x42-${name} ${tuna_types[$type]}" \
--pkgdesc "${tuna_types[$type]}" \
--exec "x42-$name $type" \
--icon "x42-$name" \
--genericname "Music Instrument Tuner"
done
;;
*)
gendesk -n -f \
--pkgname "com.x42_plugins.x42_$name" \
--name "x42-$name" \
--pkgdesc "${comments[$name]}" \
--exec "x42-$name" \
--icon "x42-$name" \
--genericname "${generic[$name]}"
;;
esac
done
sed -e '/Categories/d' -i *.desktop
# moving images to correct location so installation is not such a hassle later on
mv -v fat1.lv2/img/x42{_,-}fat1.png
mv -v fil4.lv2/img/x42{_,-}fil4.png
mv -v mixtri.lv2/img/x42{_,-}mixtri.png
mv -v meters.lv2/img/x42-meter{s,}.png
mv -v matrixmixer.lv2/img/x42-matrixmixer{,8x8}.png
}
build() {
cd $pkgname-$pkgver
# replace ttf-freefont with ttf-liberation
export FONTFILE=/usr/share/fonts/TTF/DejaVuSans-Bold.ttf
export OPTIMIZATIONS="-ffast-math -fomit-frame-pointer -O3 -fno-finite-math-only"
make
}
check() {
local _name _version _convolver _controlfilter _default _meter _midifilter _onsettrigger _sisco _tuna
local _controlfilters=(exp invert linearscale lowpass nlog)
local _convolvers=(Mono MonoToStereo Stereo)
local _defaults=(mono stereo)
local _meters=(VUmono VUstereo BBCmono BBCstereo BBCM6 EBUmono EBUstereo
DINmono DINstereo NORmono NORstereo COR EBUr128 goniometer spectr30mono
spectr30stereo dBTPmono dBTPstereo K12mono K12stereo K14mono K14stereo
K20mono K20stereo phasewheel stereoscope dr14mono dr14stereo TPnRMSmono
TPnRMSstereo SigDistHist bitmeter surround8 surround5 surround4 surround3)
local _midifilters=(cctonote channelfilter channelmap chokefilter
enforcescale eventblocker keyrange keysplit mapcc mapkeychannel mapkeyscale
midichord mididelay mididup midistrum miditranspose monolegato
noactivesensing nodup notetocc notetoggle ntapdelay onechannelfilter passthru
quantize randvelocity scalecc sostenuto velocitygamma velocityrange
velocityscale)
local _onsettriggers=(bassdrum_mono bassdrum_stereo)
local _siscos=(Mono Stereo 3chan 4chan)
local _tunas=(one two)
local _zconvolvers=(Mono CfgMono Stereo CfgStereo MonoToStereo
CfgMonoToStereo)
cd $pkgname-$pkgver
while IFS=" " read -r _name _version; do
echo "lv2lint test for $_name $_version"
case "$_name" in
controlfilter.lv2 )
for _controlfilter in "${_controlfilters[@]}"; do
lv2lint -Mpack -I "$_name/build" "http://gareus.org/oss/lv2/${_name//.lv2/}#$_controlfilter"
done
;;
convoLV2 )
for _convolver in "${_convolvers[@]}"; do
lv2lint -Mpack -I "$_name/build" "http://gareus.org/oss/lv2/$_name#$_convolver"
done
;;
darc.lv2|dpl.lv2|fil4.lv2 )
for _default in "${_defaults[@]}"; do
lv2lint -Mpack -I "$_name/build" "http://gareus.org/oss/lv2/${_name//.lv2/}#$_default"
done
;;
matrixmixer.lv2 )
lv2lint -Mpack -I "$_name/build" "http://gareus.org/oss/lv2/${_name//.lv2/}#i8o8"
;;
meters.lv2 )
for _meter in "${_meters[@]}"; do
lv2lint -Mpack -I "$_name/build" "http://gareus.org/oss/lv2/${_name//.lv2/}#$_meter"
done
;;
midifilter.lv2 )
for _midifilter in "${_midifilters[@]}"; do
lv2lint -Mpack -I "$_name/build" "http://gareus.org/oss/lv2/${_name//.lv2/}#$_midifilter"
done
;;
mixtri.lv2 )
lv2lint -Mpack -I "$_name/build" "http://gareus.org/oss/lv2/${_name//.lv2/}#lv2"
;;
onsettrigger.lv2 )
for _onsettrigger in "${_onsettriggers[@]}"; do
lv2lint -Mpack -I "$_name/build" "http://gareus.org/oss/lv2/${_name//.lv2/}#$_onsettrigger"
done
;;
sisco.lv2 )
for _sisco in "${_siscos[@]}"; do
lv2lint -Mpack -I "$_name/build" "http://gareus.org/oss/lv2/${_name//.lv2/}#$_sisco"
done
;;
spectra.lv2 )
lv2lint -Mpack -I "$_name/build" "http://gareus.org/oss/lv2/${_name//.lv2/}#Mono"
;;
stepseq.lv2 )
lv2lint -Mpack -I "$_name/build" "http://gareus.org/oss/lv2/${_name//.lv2/}#s8n8"
;;
tuna.lv2 )
for _tuna in "${_tunas[@]}"; do
lv2lint -Mpack -I "$_name/build" "http://gareus.org/oss/lv2/${_name//.lv2/}#$_tuna"
done
;;
zconvo.lv2 )
for _zconvolver in "${_zconvolvers[@]}"; do
lv2lint -Mpack -I "$_name/build" "http://gareus.org/oss/lv2/zeroconvolv#$_zconvolver"
done
;;
robtk )
echo "Toolkit. Skipping..."
;;
* )
lv2lint -Mpack -I "$_name/build" "http://gareus.org/oss/lv2/${_name//.lv2/}"
;;
esac
done < plugin.versions
}
package() {
depends+=(libfftw3f.so libgobject-2.0.so libltc.so libpango-1.0.so
libpangocairo-1.0.so libsamplerate.so libsndfile.so libzita-convolver.so)
declare -A _dirs=(
["darc"]="darc.lv2"
["dpl"]="dpl.lv2"
["fat1"]="fat1.lv2"
["fil4"]="fil4.lv2"
["matrixmixer8x8"]="matrixmixer.lv2"
["meter"]="meters.lv2"
["mixtri"]="mixtri.lv2"
["phaserotate"]="phaserotate.lv2"
["scope"]="sisco.lv2"
["spectr"]="spectra.lv2"
["stepseq"]="stepseq.lv2"
["tuna"]="tuna.lv2"
)
cd $pkgname-$pkgver
make install DESTDIR="$pkgdir/" PREFIX=/usr
# xdg desktop integration
install -vDm 644 ./*.desktop -t "$pkgdir/usr/share/applications/"
# icons
for name in "${_names[@]}"; do
install -vDm 644 "${_dirs[$name]}/img/x42-$name.png" -t "$pkgdir/usr/share/icons/hicolor/256x256/apps/"
done
install -vDm 644 ../$pkgname.png -t "$pkgdir/usr/share/icons/hicolor/256x256/apps/"
# menu integration
install -vDm 644 ../$pkgname.menu -t "$pkgdir/etc/xdg/menus/applications-merged/"
install -vDm 644 ../$pkgname.directory -t "$pkgdir/usr/share/desktop-directories/"
install -vDm 644 plugin.news -t "$pkgdir/usr/share/doc/$pkgname"
}
# vim:set ts=2 sw=2 et: