Safe Haskell | None |
---|---|
Language | Haskell2010 |
UIs for live performances
Synopsis
- mixer :: Sigs a => [(String, SE a)] -> Source a
- hmixer :: Sigs a => [(String, SE a)] -> Source a
- mixMono :: String -> Sig -> (String, SE Sig2)
- fxBox :: forall a. Sigs a => String -> ([Sig] -> Fx a) -> Bool -> [(String, Double)] -> Source (Fx a)
- uiBox :: Sigs a => String -> Source (Fx a) -> Bool -> Source (Fx a)
- fxColor :: Color -> Source a -> Source a
- fxVer :: [Source (Fx a)] -> Source (Fx a)
- fxHor :: [Source (Fx a)] -> Source (Fx a)
- fxGrid :: Int -> [Source (Fx a)] -> Source (Fx a)
- fxSca :: Double -> Source (Fx a) -> Source (Fx a)
- fxMap :: Fx a -> Source (Fx a) -> Source (Fx a)
- fxApply :: Source (a -> SE b) -> a -> Source b
- atFx :: Source (Fx a) -> Patch a -> Source (Patch a)
- fxHorMS :: [Source Fx1] -> Maybe (Source (Sig -> SE Sig2)) -> [Source Fx2] -> Source (Sig -> SE Sig2)
- fxVerMS :: [Source Fx1] -> Maybe (Source (Sig -> SE Sig2)) -> [Source Fx2] -> Source (Sig -> SE Sig2)
- fxGridMS :: Int -> [Source Fx1] -> Maybe (Source (Sig -> SE Sig2)) -> [Source Fx2] -> Source (Sig -> SE Sig2)
- fromMonoFx :: Sigs a => (Sig -> Sig) -> Fx a
- hinstrChooser :: Sigs b => [(String, a -> SE b)] -> Int -> Source (a -> SE b)
- vinstrChooser :: Sigs b => [(String, a -> SE b)] -> Int -> Source (a -> SE b)
- hmidiChooser :: Sigs a => [(String, Msg -> SE a)] -> Int -> Source a
- vmidiChooser :: Sigs a => [(String, Msg -> SE a)] -> Int -> Source a
- uiDistort :: Sigs a => Bool -> Double -> Double -> Double -> Source (Fx a)
- uiChorus :: Bool -> Double -> Double -> Double -> Double -> Source Fx2
- uiFlanger :: Sigs a => Bool -> Double -> Double -> Double -> Double -> Source (Fx a)
- uiPhaser :: Sigs a => Bool -> Double -> Double -> Double -> Double -> Source (Fx a)
- uiDelay :: Sigs a => Bool -> Double -> Double -> Double -> Double -> Source (Fx a)
- uiEcho :: Sigs a => Bool -> D -> Double -> Double -> Source (Fx a)
- uiFilter :: Sigs a => Bool -> Double -> Double -> Double -> Source (Fx a)
- uiReverb :: Bool -> Double -> Double -> Source Fx2
- uiGain :: Sigs a => Double -> Source (Fx a)
- uiCompress :: Sigs a => Double -> Double -> Double -> Double -> Double -> Double -> Double -> Source (Fx a)
- uiWhite :: Sigs a => Bool -> Double -> Double -> Source (Fx a)
- uiPink :: Sigs a => Bool -> Double -> Double -> Source (Fx a)
- uiFx :: Sigs a => String -> Fx a -> Bool -> Source (Fx a)
- uiDry :: Sigs a => Source (Fx a)
- uiSig :: Sigs a => String -> Bool -> Source a -> Source (Fx a)
- uiMix :: Sigs a => Bool -> [(String, SE a)] -> Source (Fx a)
- uiMidi :: Sigs a => [(String, Msg -> SE a)] -> Int -> Source (Fx a)
- data AdsrBound = AdsrBound {}
- data AdsrInit = AdsrInit {}
- linAdsr :: String -> AdsrBound -> AdsrInit -> Source Sig
- expAdsr :: String -> AdsrBound -> AdsrInit -> Source Sig
- classicWaves :: String -> Int -> Source (Sig -> Sig)
- masterVolume :: Source Sig
- masterVolumeKnob :: Source Sig
- data LiveClip = LiveClip {}
- data ClipParam = ClipParam {
- clipParamSize :: !Int
- clipParamDel :: !Int
- clipParamTail :: !Int
- clipParamNext :: !Int
- clipParamRetrig :: !Bool
- clipParamVol :: !Double
- liveRow :: [LiveClip] -> D -> D -> Sig -> Sig
- liveRows :: [LiveClip] -> D -> D -> Sig -> Sig2
- ambiRow :: [String] -> Sig -> Sig -> D -> SE Sig2
- ambiRowMp3 :: [String] -> Sig -> Sig -> D -> SE Sig2
Mixer
hmixer :: Sigs a => [(String, SE a)] -> Source a Source #
Widget that represents a mixer with horizontal grouping of elements.
mixMono :: String -> Sig -> (String, SE Sig2) Source #
Transforms the mono signal to the stereo input for the mixer widget.
Effects
fxBox :: forall a. Sigs a => String -> ([Sig] -> Fx a) -> Bool -> [(String, Double)] -> Source (Fx a) Source #
Creates a widget that represents a stereo signal processing function. The parameters of the widget are updated with sliders. For example let's create a simple gain widget. It can be encoded like this:
uiGain :: Double -> Source FxFun uiGain isOn gain = fxBox "Gain" fx isOn [("gain", gain)] where fx :: Sig -> Sig2 -> Sig2 fx = mul
Let's look at the arguments of the function
fxBox name fx isOn args
name
-- is the name of the widgetfx
-- is signal processing function (see the classFxUI
).isOn
-- whether widget in the active stateargs
-- list of initial values for arguments and names of the arguments.
It's cool to set the color of the widget with fxColor
function.
we can make our widgets much more intersting to look at.
fxBox :: forall a. (FxUI a, Num (FxArg a), Tuple (FxArg a)) => String -> a -> Bool -> [(String, Double)] -> Source (Fx (FxArg a))
uiBox :: Sigs a => String -> Source (Fx a) -> Bool -> Source (Fx a) Source #
Creates an FX-box from the given visual representation. It inserts a big On/Off button atop of the GUI.
fxVer :: [Source (Fx a)] -> Source (Fx a) Source #
Groups the signal processing widgets. The functions are composed the visuals are grouped vertically.
fxHor :: [Source (Fx a)] -> Source (Fx a) Source #
Groups the signal processing widgets. The functions are composed the visuals are grouped horizontally.
fxGrid :: Int -> [Source (Fx a)] -> Source (Fx a) Source #
Creates a matrix of fx-boxes.
fxGrid columnsSize fxs
first argument is a number of columns in each row.
fxSca :: Double -> Source (Fx a) -> Source (Fx a) Source #
Scales the gui for signal processing widgets.
fxMap :: Fx a -> Source (Fx a) -> Source (Fx a) Source #
Applies a function to a signal processing function.
fxHorMS :: [Source Fx1] -> Maybe (Source (Sig -> SE Sig2)) -> [Source Fx2] -> Source (Sig -> SE Sig2) Source #
fxHor
for chain that starts with mono effects and proceeds with stereo effects.
The second argument can contain The transition widget (mono to stereo effect) or it can be empty.
If it's empty automatic conversion will be inserted.
fxVerMS :: [Source Fx1] -> Maybe (Source (Sig -> SE Sig2)) -> [Source Fx2] -> Source (Sig -> SE Sig2) Source #
fxVer
for chain that starts with mono effects and proceeds with stereo effects.
The second argument can contain The transition widget (mono to stereo effect) or it can be empty.
If it's empty automatic conversion will be inserted.
fxGridMS :: Int -> [Source Fx1] -> Maybe (Source (Sig -> SE Sig2)) -> [Source Fx2] -> Source (Sig -> SE Sig2) Source #
Creates a matrix of fx-boxes. Stacks a list of mono and stereo FXs.
fxGrid columnsSize monoFxs maybeBridge stereoFxs
first argument is a number of columns in each row.
Instrument choosers
hinstrChooser :: Sigs b => [(String, a -> SE b)] -> Int -> Source (a -> SE b) Source #
Chooses an instrument among several alternatives. It uses the hradio
for GUI groupping.
vinstrChooser :: Sigs b => [(String, a -> SE b)] -> Int -> Source (a -> SE b) Source #
Chooses an instrument among several alternatives. It uses the vradio
for GUI groupping.
hmidiChooser :: Sigs a => [(String, Msg -> SE a)] -> Int -> Source a Source #
Chooses a midi instrument among several alternatives. It uses the hradio
for GUI groupping.
vmidiChooser :: Sigs a => [(String, Msg -> SE a)] -> Int -> Source a Source #
Chooses a midi instrument among several alternatives. It uses the vradio
for GUI groupping.
Fx units
uiDistort :: Sigs a => Bool -> Double -> Double -> Double -> Source (Fx a) Source #
The distortion widget. The arguments are
uiDistort isOn levelOfDistortion drive tone
uiChorus :: Bool -> Double -> Double -> Double -> Double -> Source Fx2 Source #
The chorus widget. The arguments are
uiChorus isOn mix rate depth width
uiFlanger :: Sigs a => Bool -> Double -> Double -> Double -> Double -> Source (Fx a) Source #
The flanger widget. The arguments are
uiFlanger isOn rate depth delay feedback
uiPhaser :: Sigs a => Bool -> Double -> Double -> Double -> Double -> Source (Fx a) Source #
The phaser widget. The arguments are
uiPhaser isOn mix feedback rate depth frequency
uiDelay :: Sigs a => Bool -> Double -> Double -> Double -> Double -> Source (Fx a) Source #
The delay widget. The arguments are
uiDelay isOn mix feedback delayTime tone
uiEcho :: Sigs a => Bool -> D -> Double -> Double -> Source (Fx a) Source #
The simplified delay widget. The arguments are
uiEcho isOn maxDelayTime delayTime feedback
uiFilter :: Sigs a => Bool -> Double -> Double -> Double -> Source (Fx a) Source #
The pair of low and high pass filters
uiFilter isOn lowPassfrequency highPassFrequency gain
uiReverb :: Bool -> Double -> Double -> Source Fx2 Source #
The reverb widget. The arguments are:
uiReverb mix depth
uiGain :: Sigs a => Double -> Source (Fx a) Source #
The gain widget, it's set to on by default. The arguments are
uiGain amountOfGain
uiCompress :: Sigs a => Double -> Double -> Double -> Double -> Double -> Double -> Double -> Source (Fx a) Source #
Compressor
uiCompress thresh loknee hiknee ratio att rel gain
uiWhite :: Sigs a => Bool -> Double -> Double -> Source (Fx a) Source #
The filtered white noize widget. The arguments are
uiWhite isOn centerFreqOfFilter amountOfNoize
uiPink :: Sigs a => Bool -> Double -> Double -> Source (Fx a) Source #
The filtered pink noize widget. The arguments are
uiPink isOn centerFreqOfFilter amountOfNoize
uiFx :: Sigs a => String -> Fx a -> Bool -> Source (Fx a) Source #
The constructor for signal processing functions with no arguments (controlls).
uiSig :: Sigs a => String -> Bool -> Source a -> Source (Fx a) Source #
the widget for mixing in a signal to the signal.
uiMix :: Sigs a => Bool -> [(String, SE a)] -> Source (Fx a) Source #
A mixer widget represented as an effect. The effect sums the signals with given wieghts.
uiMidi :: Sigs a => [(String, Msg -> SE a)] -> Int -> Source (Fx a) Source #
Midi chooser implemented as FX-box.
Static widgets
classicWaves :: String -> Int -> Source (Sig -> Sig) Source #
A widget with four standard waveforms: pure tone, triangle, square and sawtooth. The last parameter is a default waveform (it's set at init time).
masterVolume :: Source Sig Source #
Slider for master volume
masterVolumeKnob :: Source Sig Source #
Knob for master volume
Live row
Clip and it's parameters
LiveClip | |
|
ClipParam | |
|
liveRow :: [LiveClip] -> D -> D -> Sig -> Sig Source #
Live row triggers audio clips in sync.
liveRow clips bpm barSize clipIndex
clips
- contains file path to audio clipsbpm
- the BPM of the trackbarLength
- length of the bar in quater notes. So 4 means 4/4clipIndex
- identity of the clip to launch on the next bar.