aboutsummaryrefslogtreecommitdiff
path: root/audio/bristol/launch-bristol
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2021-12-01 13:09:00 -0500
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2021-12-10 08:37:32 +0700
commitd96183adb70df76e574ad55f440eca20519a90b6 (patch)
tree97571a3eecc95c1c6446c575c58e13e6659773ce /audio/bristol/launch-bristol
parent2232e8f31abec010ec4e03fcc2a2ab0063218e5e (diff)
audio/bristol: Fix build, add launcher.
Signed-off-by: B. Watson <yalhcru@gmail.com> Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'audio/bristol/launch-bristol')
-rw-r--r--audio/bristol/launch-bristol114
1 files changed, 114 insertions, 0 deletions
diff --git a/audio/bristol/launch-bristol b/audio/bristol/launch-bristol
new file mode 100644
index 000000000000..bfe72064bf28
--- /dev/null
+++ b/audio/bristol/launch-bristol
@@ -0,0 +1,114 @@
+#!/bin/sh
+
+# launch-bristol.sh - by B. Watson <yalhcru@gmail.com>, licensed
+# under the WTFPL. Part of the SlackBuilds.org bristol build.
+
+# Simple KDialog-based launcher for Bristol synth. Bristol is a
+# GUI application once it's running, but it emulates 40+ different
+# synths, and the only way to choose the synth is by passing an
+# argument to startBristol (e.g. -mini or -prophet).
+
+# We want to be able to launch it from a .desktop file, which means
+# one of three things:
+
+# 1. The .desktop file would have a synth type hardcoded, other emulations
+# would require CLI startup.
+# 2. There would have to be 40+ .desktop files, one per synth type (ugh).
+# 3. The .desktop file would launch some kind of selector to let the user
+# pick the synth type. That's what this script is for.
+
+# This works, but doesn't offer a way to set any of the other CLI
+# options. We have "-jack" hardcoded here, since I doubt many people
+# ever use "-alsa" with bristol...
+
+# If this file exists, it contains the last choice the user made,
+# last time this script was run and its OK button pressed.
+# Pressing Cancel doesn't create or alter this file.
+file=~/.launch-bristol
+
+# This is more complex than it should be, because kdialog's --default
+# option requires the *text* of the selected item (e.g. 'moog mini'),
+# but kdialog doesn't print this text (it prints the ID of the option,
+# e.g. '-mini'). So this script greps itself to find the item text
+# that goes with the saved item ID.
+if [ -e $file ]; then
+ dflt="$( cat $file )"
+ dflttxt="$( grep "^ $dflt" $0 | cut -d"'" -f2 )"
+else
+ dflttxt='hammond B3 (default)'
+fi
+
+# Try to center the window. Unfortunately kdialog's not smart enough
+# to auto-size, I have to hardcode a width and height to avoid having
+# a tiny window that requires a ton of scrolling. Also I have no idea
+# how (or if) the font and font-size are chosen...
+xpos=0; ypos=0
+width=400; height=800
+x="$( xwininfo -root | grep Width | sed 's,.* ,,' )"
+y="$( xwininfo -root | grep Height | sed 's,.* ,,' )"
+if [ "$x" -gt "$width" -a "$y" -gt "$height" ]; then
+ xpos=$(( $x / 2 - $width / 2 ))
+ ypos=$(( $y / 2 - $height / 2 ))
+fi
+
+# The list of synths came from "startBristol --help".
+kdialog --title 'Bristol Launcher' --menu 'Select Synth Emulation' \
+ --geometry ${width}x${height}+${xpos}+${ypos} \
+ --default "$dflttxt" -- \
+ -b3 'hammond B3 (default)' \
+ -mini 'moog mini' \
+ -explorer 'moog voyager' \
+ -voyager 'moog voyager electric blue' \
+ -memory 'moog memory' \
+ -sonic6 'moog sonic 6' \
+ -mg1 'moog/realistic mg-1 concertmate' \
+ -hammond 'hammond module (deprecated, use -b3)' \
+ -prophet 'sequential circuits prophet-5' \
+ -pro52 'sequential circuits prophet-5/fx' \
+ -pro10 'sequential circuits prophet-10' \
+ -pro1 'sequential circuits pro-one' \
+ -rhodes 'fender rhodes mark-I stage 73' \
+ -rhodesbass 'fender rhodes bass piano' \
+ -roadrunner 'crumar roadrunner electric piano' \
+ -bitone 'crumar bit 01' \
+ -bit99 'crumar bit 99' \
+ -bit100 'crumar bit + mods' \
+ -stratus 'crumar stratus synth/organ combo' \
+ -trilogy 'crumar trilogy synth/organ/string combo' \
+ -obx 'oberheim OB-X' \
+ -obxa 'oberheim OB-Xa' \
+ -axxe 'arp axxe' \
+ -odyssey 'arp odyssey' \
+ -arp2600 'arp 2600' \
+ -solina 'arp/solina string ensemble' \
+ -polysix 'korg polysix' \
+ -poly800 'korg poly-800' \
+ -monopoly 'korg mono/poly' \
+ -ms20 'korg ms20 (unfinished: -libtest only)' \
+ -vox 'vox continental' \
+ -voxM2 'vox continental super/300/II' \
+ -juno 'roland juno-60' \
+ -jupiter 'roland jupiter-8' \
+ -bme700 'baumann bme-700' \
+ -bm 'bristol bassmaker sequencer' \
+ -dx 'yamaha dx-7' \
+ -cs80 'yamaha cs-80 (unfinished)' \
+ -sidney 'commodore-64 SID chip synth' \
+ -melbourne 'commodore-64 SID polysynth (unfinished)' \
+ -granular 'granular synthesiser (unfinished)' \
+ -aks 'ems synthi-a (unfinished)' \
+ -mixer '16 track mixer (unfinished: -libtest only)' \
+ > $file.new
+
+opt="$( cat $file.new )"
+if [ "$opt" = "" ]; then
+ rm -f $file.new
+ exit 0
+fi
+
+mv $file.new $file
+if [ "$1" = "--fake" ]; then
+ echo "exec startBristol -jack $opt"
+else
+ exec startBristol -jack $opt
+fi