# Maintainer: David Runge <dave@sleepmap.de>
# Contributor: Lieven Moors <lievenmoors@gmail.com>

pkgname=x42-plugins
pkgver=20190820
pkgrel=2
pkgdesc="Collection of LV2 plugins"
arch=('x86_64')
url="https://github.com/x42/x42-plugins"
license=('GPL2' 'GPL3')
depends=('ftgl' 'hicolor-icon-theme' 'libltc' 'pango' 'zita-convolver')
makedepends=('gendesk' 'help2man' 'jack' 'liblo' 'lv2' 'ttf-dejavu')
optdepends=('jack: for standalone applications'
            'liblo: for standalone applications')
groups=('lv2-plugins' 'pro-audio')
source=("http://gareus.org/misc/${pkgname}/${pkgname}-${pkgver}.tar.xz"
        "x42-plugins.png::https://x42-plugins.com/x42/static/img/x42.png"
        "${pkgname}.directory"
        "${pkgname}.menu")
sha512sums=('a8a62427c5706cac3eb1ba3e5e5ee6deb81c3ae04ec3a45c44faf2a647e079c245a28a3ef0b85ada62575e43238825a25c460317aa13891694e2d52497facf04'
            '956fdd8e04c846d06a5267d1748916744418e0ddfce0ac2e9dd3a1c1376aea61499177af80709d9fe78f8c0c2ddcbf9f9e5b2e413adc9a7eca9b648a87ad4860'
            'a4f25224da25f0bc9015290d5cc20051bfa02abc8dce54244e7d4a98e3f8bf1ea58afb8adf6f38818126c509f3551f4012417d9e17af701b1ae7f917df8b794d'
            'ce8f056a034e3bccff1087016c2df550dad32d3c03fb72135623322e46c24b6f5ec5fd3a1478ba5c42a90ec757157f951fd40fb00903c9a20f6e631db454e856')

_names=('darc' 'dpl' 'fat1' 'fil4' 'matrixmixer8x8' 'meter' 'mixtri' '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"
    ["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"
    ["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 \
                  --pkgname "x42-meter-${type}" \
                  --name "x42-meter ${meter_types[$type]}" \
                  --pkgdesc "${meter_types[$type]}" \
                  --exec "x42-meter $type" \
                  --icon "x42-meter" \
                  --genericname "Audio Meter" \
                  --categories "x42-plugins"
        done
        ;;
      tuna)
        for type in {0,1}; do
          gendesk -n \
                  --pkgname "x42-${name}-${type}" \
                  --name "x42-${name} ${tuna_types[$type]}" \
                  --pkgdesc "${tuna_types[$type]}" \
                  --exec "x42-${name} $type" \
                  --icon "x42-${name}" \
                  --genericname "Music Instrument Tuner" \
                  --categories "x42-plugins"
        done
        ;;
      *)
        gendesk -n \
                --pkgname "x42-${name}" \
                --name "x42-${name}" \
                --pkgdesc "${comments[$name]}" \
                --genericname "${generic[$name]}" \
                --categories "x42-plugins"
        ;;
    esac
  done
  # moving images to correct location so installation is not such a hassle later on
  mv -v fat1.lv2/img/x42{_,-}fat1.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
  make
}

package() {
  declare -A _dirs=(
      ["darc"]="darc.lv2"
      ["dpl"]="dpl.lv2"
      ["fat1"]="fat1.lv2"
      ["fil4"]="fil4.lv2"
      ["matrixmixer8x8"]="matrixmixer.lv2"
      ["meter"]="meters.lv2"
      ["mixtri"]="mixtri.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
    if [[ "$name" != 'fil4' ]]; then
      install -vDm 644 "${_dirs[$name]}/img/x42-${name}.png" \
        -t "${pkgdir}/usr/share/icons/hicolor/256x256/apps/"
    fi
  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/"
}
# vim:set ts=2 sw=2 et:
