PKGBUILDs/extra/x42-plugins/PKGBUILD
2023-05-29 21:48:20 +00:00

467 lines
12 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
pkgbase=x42-plugins
pkgname=(x42-plugins x42-plugins-lv2 x42-plugins-standalone)
pkgver=20230512
pkgrel=1
pkgdesc="Professional audio processing units available as LV2-plugin and JACK-application"
arch=(x86_64)
url="https://x42-plugins.com/x42/"
license=(
GPL2
GPL3
)
makedepends=(
cairo
fftw
ftgl
gendesk
glib2
glu
help2man
jack
liblo
libltc
libsamplerate
libsndfile
lv2
pango
ttf-dejavu
zita-convolver
)
checkdepends=(
kxstudio-lv2-extensions
lv2lint
)
source=(
https://gareus.org/misc/$pkgname/$pkgname-$pkgver.tar.xz
$pkgname.png::https://x42-plugins.com/x42/static/img/x42.png
$pkgname.directory
$pkgname.menu
)
sha512sums=('cec686ad04905c0df6df3519580564381920db78d4be9c4548442d7620537a0a36b8b0d8fe365bbf3be26297ca82491da26fb4157d63137707b268beb1bf8569'
'956fdd8e04c846d06a5267d1748916744418e0ddfce0ac2e9dd3a1c1376aea61499177af80709d9fe78f8c0c2ddcbf9f9e5b2e413adc9a7eca9b648a87ad4860'
'fef75b22b2c1fed8586af4dfd01ea291a7c1506e80ce384f05f13dc04c4b7e3e934003c20d89ae94f36ad1021b7ad75097da836ca30ee965b4107b559305b496'
'411015b0feb8a289272cb821afa7e2a284d3e9d994a446baa73b3a6ce0f0ebd1e94c4cb3392a0afb1d741ce6d8b2d14c9bd124a0684b830275b4ba8e14680aa3')
b2sums=('5d641d9fb447c629a832175ad4db228ee2ea08ddbf091571714b62505691cc65ceeaf79ae4c09d288064d9babb8c33441b92e4d1cebb1f8f35d3ec2aa6d4d25c'
'35a8cfcdf7f8c57ba655049a6d75b3bf9d253c25702a3f191d3f6cab215887f7de5025d025993861ae88c1b4daae132e9cc1ddf083e5b822f1b53a683c0fcaa3'
'fb6557cd2e8b83dae1cb38503f2a72093085ddcc0a4ba2e5e0375f7063b83b3fb4180091ce10524cd336eeb33cffed45ada93055b960c9189f83d664216b33ee'
'9c695f58099fcbfdce3e693e491d851ff7894a650ea12e079894176ef054b5f592785467c286bd8feaa340fdcdfb53d930b3a44ea890112e3fc1a4d172beb243')
_names=(
darc
dpl
fat1
fil4
matrixmixer8x8
meter
mixtri
phaserotate
scope
spectr
stepseq
tuna
)
_pick() {
local p="$1" f d; shift
for f; do
d="$srcdir/$p/${f#$pkgdir/}"
mkdir -p "$(dirname "$d")"
mv "$f" "$d"
rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
done
}
prepare() {
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
cd $pkgname-$pkgver
# 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 $pkgbase-$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
)
local _url="http://gareus.org/oss/lv2/"
cd $pkgbase-$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" "${_url}${_name//.lv2/}#$_controlfilter"
done
;;
convoLV2 )
for _convolver in "${_convolvers[@]}"; do
lv2lint -Mpack -I "$_name/build" "${_url}$_name#$_convolver"
done
;;
darc.lv2|dpl.lv2|fil4.lv2 )
for _default in "${_defaults[@]}"; do
lv2lint -Mpack -I "$_name/build" "${_url}${_name//.lv2/}#$_default"
done
;;
matrixmixer.lv2 )
lv2lint -Mpack -I "$_name/build" "${_url}${_name//.lv2/}#i8o8"
;;
meters.lv2 )
for _meter in "${_meters[@]}"; do
lv2lint -Mpack -I "$_name/build" "${_url}${_name//.lv2/}#$_meter"
done
;;
midifilter.lv2 )
for _midifilter in "${_midifilters[@]}"; do
lv2lint -Mpack -I "$_name/build" "${_url}${_name//.lv2/}#$_midifilter"
done
;;
mixtri.lv2 )
lv2lint -Mpack -I "$_name/build" "${_url}${_name//.lv2/}#lv2"
;;
onsettrigger.lv2 )
for _onsettrigger in "${_onsettriggers[@]}"; do
lv2lint -Mpack -I "$_name/build" "${_url}${_name//.lv2/}#$_onsettrigger"
done
;;
sisco.lv2 )
for _sisco in "${_siscos[@]}"; do
lv2lint -Mpack -I "$_name/build" "${_url}${_name//.lv2/}#$_sisco"
done
;;
spectra.lv2 )
lv2lint -Mpack -I "$_name/build" "${_url}${_name//.lv2/}#Mono"
;;
stepseq.lv2 )
lv2lint -Mpack -I "$_name/build" "${_url}${_name//.lv2/}#s8n8"
;;
tuna.lv2 )
for _tuna in "${_tunas[@]}"; do
lv2lint -Mpack -I "$_name/build" "${_url}${_name//.lv2/}#$_tuna"
done
;;
zconvo.lv2 )
for _zconvolver in "${_zconvolvers[@]}"; do
lv2lint -Mpack -I "$_name/build" "${_url}zeroconvolv#$_zconvolver"
done
;;
robtk )
echo "Toolkit. Skipping..."
;;
* )
lv2lint -Mpack -I "$_name/build" "${_url}${_name//.lv2/}"
;;
esac
done < plugin.versions
}
package_x42-plugins() {
depends=(
"x42-plugins-lv2=$pkgver"
"x42-plugins-standalone=$pkgver"
)
make install DESTDIR="$pkgdir/" PREFIX=/usr -C $pkgbase-$pkgver
(
cd "$pkgdir"
_pick $pkgbase-lv2 usr/lib/lv2
_pick $pkgbase-standalone usr/bin
_pick $pkgbase-standalone usr/share
)
}
package_x42-plugins-lv2() {
pkgdesc+=" - LV2 plugins"
depends=(
cairo
ftgl
fftw libfftw3f.so
gcc-libs
glib2 libgobject-2.0.so
glibc
libglvnd
libltc libltc.so
libsamplerate libsamplerate.so
libsndfile libsndfile.so
libx11
lv2-host
pango libpango-1.0.so libpangocairo-1.0.so
zita-convolver libzita-convolver.so
)
groups=(
lv2-plugins
pro-audio
)
mv -v $pkgname/* "$pkgdir"
}
package_x42-plugins-standalone() {
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"
)
pkgdesc+=" - JACK standalones"
depends=(
cairo
fftw libfftw3f.so
gcc-libs
glib2 libgobject-2.0.so
glibc
hicolor-icon-theme
jack libjack.so
libglvnd
liblo liblo.so
libltc libltc.so
libx11
pango libpango-1.0.so libpangocairo-1.0.so
)
groups=(
pro-audio
)
mv -v $pkgname/* "$pkgdir"
# xdg desktop integration
install -vDm 644 ./*.desktop -t "$pkgdir/usr/share/applications/"
cd $pkgbase-$pkgver
# 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 ../$pkgbase.png -t "$pkgdir/usr/share/icons/hicolor/256x256/apps/"
# menu integration
install -vDm 644 ../$pkgbase.menu -t "$pkgdir/etc/xdg/menus/applications-merged/"
install -vDm 644 ../$pkgbase.directory -t "$pkgdir/usr/share/desktop-directories/"
}
# vim:set ts=2 sw=2 et: