summaryrefslogtreecommitdiff
path: root/audio/klick
diff options
context:
space:
mode:
Diffstat (limited to 'audio/klick')
-rw-r--r--audio/klick/README23
-rw-r--r--audio/klick/klick.1565
-rw-r--r--audio/klick/klick.SlackBuild86
-rw-r--r--audio/klick/klick.info10
-rw-r--r--audio/klick/setcap.sh1
-rw-r--r--audio/klick/slack-desc19
6 files changed, 704 insertions, 0 deletions
diff --git a/audio/klick/README b/audio/klick/README
new file mode 100644
index 0000000000..c7c51dcd03
--- /dev/null
+++ b/audio/klick/README
@@ -0,0 +1,23 @@
+klick (metronome for jack-audio-connection-kit)
+
+klick is an advanced command-line based metronome for JACK. It allows
+you to define complex tempo maps for entire songs or performances.
+
+Note:
+
+this package is built with liblo support. It allows klick to be
+controlled by other OSC-capable applications. You can disable
+with LIBLO=no in the script's environment. If you plan to use gtklick,
+it requires klick built with liblo support.
+
+Optional dependencies:
+
+rubberband - uses the RubberBand library for pitch adjustment, which
+results in slightly higher audio quality. Disabled by default; enable
+with RUBBERBAND=yes in the script's environment.
+
+This package uses POSIX filesystem capabilities to execute with
+elevated privileges (required for realtime audio processing). This
+may be considered a security/stability risk. Please read
+http://www.slackbuilds.org/caps/ for more information. To disable
+capabilities, pass SETCAP=no to the script.
diff --git a/audio/klick/klick.1 b/audio/klick/klick.1
new file mode 100644
index 0000000000..732e8fa9d2
--- /dev/null
+++ b/audio/klick/klick.1
@@ -0,0 +1,565 @@
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+. if \nF \{
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "KLICK 1"
+.TH KLICK 1 "2014-01-19" "0.12.2" "SlackBuilds.org"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+klick \- an advanced metronome for JACK
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+klick [options] [bars] [meter] tempo[\-tempo2/accel] [pattern]
+.PP
+klick [options] \-f filename
+.PP
+klick [options] \-i
+.PP
+klick [options] \-j
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+.Vb 1
+\& klick [options] [bars] [meter] tempo[\-tempo2/accel] [pattern]
+.Ve
+.PP
+Plays a simple metronome with the given meter and tempo. To play a 3/4 beat at 120 bpm:
+.PP
+.Vb 1
+\& klick 3/4 120
+.Ve
+.PP
+You can also specify a \*(L"target\*(R" tempo and acceleration rate, to use klick
+as a speed trainer. To play a 4/4 beat starting at 80 bpm, gradually
+increasing the tempo by 1 bpm every 10 measures until reaching 120 bpm:
+.PP
+.Vb 1
+\& klick 80\-120/10
+.Ve
+.PP
+Once the final tempo is reached, klick will continue playing at a constant tempo.
+.PP
+.Vb 1
+\& klick [options] \-f filename
+.Ve
+.PP
+Loads a tempo map from a file. This allows for more complex setups
+including meter and tempo changes etc. See \fBTempo Map File Format\fR.
+.PP
+.Vb 1
+\& klick [options] \-i
+.Ve
+.PP
+Runs klick in interactive mode, allowing you to change tempo and meter
+while klick is running. The keyboard commands available in this mode
+are described in Interactive Mode.
+.PP
+.Vb 1
+\& klick [options] \-j
+.Ve
+.PP
+In this mode, klick gets all tempo information from \s-1JACK.\s0 Just run
+a sequencer as \s-1JACK\s0 transport master, and klick will play a simple
+metronome pattern in sync with \s-1JACK\s0 transport.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\-f filename" 4
+.IX Item "-f filename"
+load tempo map from file
+.IP "\-j" 4
+.IX Item "-j"
+no tempo map, just follow jack transport
+.IP "\-n name" 4
+.IX Item "-n name"
+set jack client name
+.IP "\-p port,.." 4
+.IX Item "-p port,.."
+jack port(s) to connect to
+.IP "\-P" 4
+.IX Item "-P"
+automatically connect to hardware ports
+.IP "\-o port" 4
+.IX Item "-o port"
+\&\s-1OSC\s0 port to listen on. Only available when compiled with liblo support.
+.IP "\-i" 4
+.IX Item "-i"
+interactive mode
+.IP "\-W filename" 4
+.IX Item "-W filename"
+export click track to audio file
+.IP "\-r samplerate" 4
+.IX Item "-r samplerate"
+sample rate of export (default: 48000)
+.IP "\-s number" 4
+.IX Item "-s number"
+use built-in sounds:
+.RS 4
+.IP "0" 4
+square wave (default)
+.IP "1" 4
+.IX Item "1"
+sine wave
+.IP "2" 4
+.IX Item "2"
+noise
+.IP "3" 4
+.IX Item "3"
+acoustic bell/click
+.RE
+.RS 4
+.RE
+.IP "\-S file[,file]" 4
+.IX Item "-S file[,file]"
+load sounds from file(s)
+.IP "\-e" 4
+.IX Item "-e"
+no emphasized beats
+.IP "\-E" 4
+.IX Item "-E"
+emphasized beats only
+.IP "\-v mult[,mult]" 4
+.IX Item "-v mult[,mult]"
+adjust playback volume (default: 1.0)
+.IP "\-w mult[,mult]" 4
+.IX Item "-w mult[,mult]"
+adjust playback pitch (default: 1.0)
+.IP "\-t" 4
+.IX Item "-t"
+enable jack transport
+.IP "\-T" 4
+.IX Item "-T"
+become transport master (implies \-t)
+.IP "\-d seconds" 4
+.IX Item "-d seconds"
+delay before starting playback
+.IP "\-c bars" 4
+.IX Item "-c bars"
+pre-roll. use \-c 0 for 2 beats
+.IP "\-l label" 4
+.IX Item "-l label"
+start playback at the given label
+.IP "\-x multiplier" 4
+.IX Item "-x multiplier"
+multiply tempo by the given factor
+.IP "\-h" 4
+.IX Item "-h"
+show this help
+.SH "INTERACTIVE MODE"
+.IX Header "INTERACTIVE MODE"
+The following keyboard commands are available in interactive mode:
+.IP "Arrow up/down" 4
+.IX Item "Arrow up/down"
+increase/reduce tempo by 10 bpm
+.IP "Arrow right/left" 4
+.IX Item "Arrow right/left"
+increase/reduce tempo by 1 bpm
+.IP "0\-9" 4
+.IX Item "0-9"
+set beats per bar (0/1: all beats are even)
+.IP "q/w/e/r" 4
+.IX Item "q/w/e/r"
+set beat type (whole, half, quarter, eighth note)
+.IP "+/=, \-" 4
+increase/reduce volume
+.IP "Space" 4
+.IX Item "Space"
+start/stop metronome
+.IP "Escape" 4
+.IX Item "Escape"
+exit klick
+.SH "TEMPO MAP FILE FORMAT"
+.IX Header "TEMPO MAP FILE FORMAT"
+A tempo map is a plain text file, consisting of an arbitrary number of lines
+which will be played sequentially. Each line must have the following format:
+.PP
+.Vb 1
+\& [label:] bars [meter] tempo [pattern] [volume]
+.Ve
+.PP
+Everything in brackets is optional, and can be omitted to use the default. '#'
+indicates the start of a comment, empty lines are ignored.
+.IP "label" 4
+.IX Item "label"
+An optional name that can be used to refer to this line, and start
+playback at this position.
+.IP "bars" 4
+.IX Item "bars"
+The number of bars for this tempo map entry.
+.IP "meter" 4
+.IX Item "meter"
+The meter, written as beats/denominator. This is optional, the default
+is 4/4. The tempo in beats per minute, with a \*(L"beat\*(R" always referring
+to quarter notes, no matter what the meter actually is.
+.IP "tempo" 4
+.IX Item "tempo"
+.RS 4
+.PD 0
+.IP "tempo" 4
+.IX Item "tempo"
+.PD
+Sets the tempo for the duration of the whole tempo map entry.
+.IP "tempo1\-tempo2" 4
+.IX Item "tempo1-tempo2"
+Specifies the tempo for the start and the end of this
+entry, with a gradual tempo change in between.
+.IP "tempo1,tempo2,..." 4
+.IX Item "tempo1,tempo2,..."
+Sets a different tempo for each beat. The
+number of
+tempo values must be the same as the total number of
+beats for this entry (bars * beats).
+.RE
+.RS 4
+.RE
+.IP "pattern" 4
+.IX Item "pattern"
+This can be used to alter the pattern of accented/normal beats. Use 'X'
+(upper case) for accented beats, 'x' (lower case) for normal beats, and
+\&'.' for silence. So for example, given a 6/8 measure, and you only want
+the 1st and 4th beat to be played, you could use the pattern 'X..x..';
+the default is 'Xxxxxx'.
+.IP "volume" 4
+.IX Item "volume"
+Allows you to set a different volume for each part, default is 1.0.
+.SS "Example Tempo Map"
+.IX Subsection "Example Tempo Map"
+.Vb 10
+\& intro: 8 120 # play 8 measures at 120 bpm (4/4)
+\& verse1: 12 120 X.x. # 12 measures at 120 bpm, playing only the 1st and 3rd beat
+\& 4 120\-140 X.x. # gradually increase tempo to 140 bpm
+\& chorus1: 16 140
+\& bridge: 8 3/4 140 0.5 # change to 3/4 time, reduce volume
+\& 8 3/4 140 # normal volume again
+\& verse2: 12 120 # back to 4/4 (implied)
+\& chorus2: 16 140 # jump to 140 bpm
+\& outro: 6 140
+\& 2 140\-80 # ritardando over the last 2 bars
+.Ve
+.SH "CLICK TRACK EXPORT"
+.IX Header "CLICK TRACK EXPORT"
+By default, klick connects to \s-1JACK\s0 for audio output. To export a click track to
+an audio file instead, use the \-W parameter to specify an output filename. The
+file type is determined by extension, supported formats are \s-1WAV, AIFF, FLAC,\s0 Ogg
+Vorbis (with libsndfile >= 1.0.18).
+The \-r parameter can be used to set the sample rate of the exported audio,
+default is 48000 Hz.
+.SH "OSC MESSAGES"
+.IX Header "OSC MESSAGES"
+klick must be compiled with lilbo support to use \s-1OSC.\s0
+.PP
+klick understands the following \s-1OSC\s0 messages:
+.SS "General"
+.IX Subsection "General"
+.IP "/klick/ping" 4
+.IX Item "/klick/ping"
+.PD 0
+.IP "/klick/ping ,s <return_address>" 4
+.IX Item "/klick/ping ,s <return_address>"
+.PD
+responds: /klick/pong
+.IP "/klick/register_client" 4
+.IX Item "/klick/register_client"
+.PD 0
+.IP "/klick/register_client ,s <address>" 4
+.IX Item "/klick/register_client ,s <address>"
+.PD
+registers a client to receive notifications when any parameter changes
+.IP "/klick/unregister_client" 4
+.IX Item "/klick/unregister_client"
+.PD 0
+.IP "/klick/unregister_client ,s <address>" 4
+.IX Item "/klick/unregister_client ,s <address>"
+.PD
+unregisters a client
+.IP "/klick/query" 4
+.IX Item "/klick/query"
+.PD 0
+.IP "/klick/query ,s <return_address>" 4
+.IX Item "/klick/query ,s <return_address>"
+.PD
+reports current state (same as /klick/*/query)
+.IP "/klick/quit" 4
+.IX Item "/klick/quit"
+terminates klick
+.SS "Configuration"
+.IX Subsection "Configuration"
+.IP "/klick/config/set_sound ,i <number>" 4
+.IX Item "/klick/config/set_sound ,i <number>"
+sets the sound to one of the built-in ones
+.IP "/klick/config/set_sound ,ss <filename> <filename>" 4
+.IX Item "/klick/config/set_sound ,ss <filename> <filename>"
+loads the sound from two audio files
+.IP "/klick/config/set_sound_volume ,ff <emphasis> <normal>" 4
+.IX Item "/klick/config/set_sound_volume ,ff <emphasis> <normal>"
+changes the volume individually for both samples
+.IP "/klick/config/set_sound_pitch ,ff <emphasis> <normal>" 4
+.IX Item "/klick/config/set_sound_pitch ,ff <emphasis> <normal>"
+changes the pitch individually for both samples
+.IP "/klick/config/set_volume ,f <volume>" 4
+.IX Item "/klick/config/set_volume ,f <volume>"
+sets the overall output volume
+.IP "/klick/config/autoconnect" 4
+.IX Item "/klick/config/autoconnect"
+connects klick's output port to the first two hardware ports
+.IP "/klick/config/connect ,s... <port> ..." 4
+.IX Item "/klick/config/connect ,s... <port> ..."
+connects klick's output port to the specified \s-1JACK\s0 ports
+.IP "/klick/config/disconnect_all" 4
+.IX Item "/klick/config/disconnect_all"
+disconnects all connections from klick's output port
+.IP "/klick/config/get_available_ports" 4
+.IX Item "/klick/config/get_available_ports"
+.PD 0
+.IP "/klick/config/get_available_ports ,s <return_address>" 4
+.IX Item "/klick/config/get_available_ports ,s <return_address>"
+.PD
+returns a list of all \s-1JACK\s0 input ports:
+.Sp
+.Vb 1
+\& /klick/config/available_ports ,s... <port> ...
+.Ve
+.IP "/klick/config/query" 4
+.IX Item "/klick/config/query"
+.PD 0
+.IP "/klick/config/query ,s <return_address>" 4
+.IX Item "/klick/config/query ,s <return_address>"
+.PD
+reports current state:
+.Sp
+.Vb 5
+\& /klick/config/sound ,i
+\& /klick/config/sound ,ss
+\& /klick/config/sound_volume ,ff
+\& /klick/config/sound_pitch ,ff
+\& /klick/config/volume ,f
+.Ve
+.SS "Generic Metronome Functions"
+.IX Subsection "Generic Metronome Functions"
+.IP "/klick/metro/set_type ,s <type>" 4
+.IX Item "/klick/metro/set_type ,s <type>"
+sets the metronome type, one of 'simple', 'map', 'jack'
+.IP "/klick/metro/start" 4
+.IX Item "/klick/metro/start"
+starts the metronome
+.IP "/klick/metro/stop" 4
+.IX Item "/klick/metro/stop"
+stops the metronome
+.IP "/klick/metro/query" 4
+.IX Item "/klick/metro/query"
+.PD 0
+.IP "/klick/metro/query ,s <return_address>" 4
+.IX Item "/klick/metro/query ,s <return_address>"
+.PD
+reports current state:
+.Sp
+.Vb 2
+\& /klick/metro/type ,s
+\& /klick/metro/active ,i
+.Ve
+.SS "Simple (Dynamic) Metronome"
+.IX Subsection "Simple (Dynamic) Metronome"
+.IP "/klick/simple/set_tempo ,f <tempo>" 4
+.IX Item "/klick/simple/set_tempo ,f <tempo>"
+sets the metronome's tempo
+.IP "/klick/simple/set_tempo_increment ,f <increment>" 4
+.IX Item "/klick/simple/set_tempo_increment ,f <increment>"
+sets the tempo increment per bar
+.IP "/klick/simple/set_tempo_start ,f <start>" 4
+.IX Item "/klick/simple/set_tempo_start ,f <start>"
+sets the start tempo
+.IP "/klick/simple/set_tempo_limit ,f <limit>" 4
+.IX Item "/klick/simple/set_tempo_limit ,f <limit>"
+sets the maximum tempo
+.IP "/klick/simple/set_meter ,ii <beats> <denom>" 4
+.IX Item "/klick/simple/set_meter ,ii <beats> <denom>"
+sets the metronome's meter
+.IP "/klick/simple/set_pattern ,s <pattern>" 4
+.IX Item "/klick/simple/set_pattern ,s <pattern>"
+sets the beat pattern
+.IP "/klick/simple/tap" 4
+.IX Item "/klick/simple/tap"
+tap tempo
+.IP "/klick/simple/query" 4
+.IX Item "/klick/simple/query"
+.PD 0
+.IP "/klick/simple/query ,s <return_address>" 4
+.IX Item "/klick/simple/query ,s <return_address>"
+.PD
+reports current state:
+.Sp
+.Vb 6
+\& /klick/simple/tempo ,f
+\& /klick/simple/tempo_increment ,f
+\& /klick/simple/tempo_limit ,f
+\& /klick/simple/current_tempo ,f
+\& /klick/simple/meter ,ii
+\& /klick/simple/pattern ,s
+.Ve
+.SS "Tempo Map Metronome"
+.IX Subsection "Tempo Map Metronome"
+.IP "/klick/map/load_file ,s <filename>" 4
+.IX Item "/klick/map/load_file ,s <filename>"
+loads a tempo map from a file
+.IP "/klick/map/set_preroll ,i <bars>" 4
+.IX Item "/klick/map/set_preroll ,i <bars>"
+sets the preroll before the start of the tempo map
+.IP "/klick/map/set_tempo_multiplier ,f <mult>" 4
+.IX Item "/klick/map/set_tempo_multiplier ,f <mult>"
+sets the tempo multiplier
+.IP "/klick/map/query" 4
+.IX Item "/klick/map/query"
+.PD 0
+.IP "/klick/map/query ,s <return_address>" 4
+.IX Item "/klick/map/query ,s <return_address>"
+.PD
+reports current state:
+.Sp
+.Vb 3
+\& /klick/map/filename ,s
+\& /klick/map/preroll ,i
+\& /klick/map/tempo_multiplier ,f
+.Ve
+.SS "\s-1JACK\s0 Transport Metronome"
+.IX Subsection "JACK Transport Metronome"
+.IP "/klick/jack/query" 4
+.IX Item "/klick/jack/query"
+.PD 0
+.IP "/klick/jack/query ,s <return_address>" 4
+.IX Item "/klick/jack/query ,s <return_address>"
+.PD
+currently does nothing
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+klick is opyright (C) 2007\-2009 Dominic Sacre <dominic.sacre@gmx.de>
diff --git a/audio/klick/klick.SlackBuild b/audio/klick/klick.SlackBuild
new file mode 100644
index 0000000000..d7ba8aaa92
--- /dev/null
+++ b/audio/klick/klick.SlackBuild
@@ -0,0 +1,86 @@
+#!/bin/sh
+
+# Slackware build script for klick
+
+# Written by B. Watson (yalhcru@gmail.com)
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+PRGNAM=klick
+VERSION=${VERSION:-0.12.2}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i486 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+OPTS="RUBBERBAND=${RUBBERBAND:-no} OSC=${LIBLO:-yes}"
+
+# hate scons. This mess forces CFLAGS.
+SCONSCFLAGS=$( echo "$SLKCFLAGS" | sed "s/\([^ ]\+\)/'\1', /g" )
+sed -i "s/'-O2', /$SCONSCFLAGS/" SConstruct
+
+scons $OPTS PREFIX=/usr
+scons $OPTS PREFIX=/usr DESTDIR=$PKG install
+strip $PKG/usr/bin/$PRGNAM
+
+# man page written for this SlackBuild (from --help output)
+mkdir -p $PKG/usr/man/man1
+gzip -9c < $CWD/$PRGNAM.1 > $PKG/usr/man/man1/$PRGNAM.1.gz
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a COPYING NEWS README doc/manual.html $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Only add capability stuff if not disabled:
+if [ "${SETCAP:-yes}" = "yes" ]; then
+ cat $CWD/setcap.sh >> $PKG/install/doinst.sh
+ # Only allow execution by audio group
+ chown root:audio $PKG/usr/bin/$PRGNAM
+ chmod 0750 $PKG/usr/bin/$PRGNAM
+fi
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/audio/klick/klick.info b/audio/klick/klick.info
new file mode 100644
index 0000000000..5e4cb2f255
--- /dev/null
+++ b/audio/klick/klick.info
@@ -0,0 +1,10 @@
+PRGNAM="klick"
+VERSION="0.12.2"
+HOMEPAGE="http://das.nasophon.de/klick/"
+DOWNLOAD="http://das.nasophon.de/download/klick-0.12.2.tar.gz"
+MD5SUM="90bc69db650c6edaa08be47df0cfe424"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="scons jack-audio-connection-kit liblo %README%"
+MAINTAINER="B. Watson"
+EMAIL="yalhcru@gmail.com"
diff --git a/audio/klick/setcap.sh b/audio/klick/setcap.sh
new file mode 100644
index 0000000000..f7f2c3f9bd
--- /dev/null
+++ b/audio/klick/setcap.sh
@@ -0,0 +1 @@
+[ -x /sbin/setcap ] && /sbin/setcap cap_ipc_lock,cap_sys_nice=ep usr/bin/klick
diff --git a/audio/klick/slack-desc b/audio/klick/slack-desc
new file mode 100644
index 0000000000..e41bb6d066
--- /dev/null
+++ b/audio/klick/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+klick: klick (metronome for jack-audio-connection-kit)
+klick:
+klick: klick is an advanced command-line based metronome for JACK. It allows
+klick: you to define complex tempo maps for entire songs or performances.
+klick:
+klick:
+klick:
+klick:
+klick:
+klick:
+klick: