module Csound.Options(
Options(..),
setDur,
setRates, setBufs, setGain,
setJack, setJackConnect, setAlsa, setCoreAudio, setMme,
setOutput, setInput,
setDac, setAdc, setDacBy, setAdcBy, setThru,
setSilent, setMidiDevice, setMa,
setMessageLevel, noMessages, setTrace,
setCabbage,
setJacko,
Flags(..),
AudioFileOutput(..),
FormatHeader(..), FormatSamples(..), FormatType(..),
Dither(..), IdTags(..),
Rtaudio(..), PulseAudio(..),
MidiIO(..),
MidiRT(..), Rtmidi(..),
Displays(..), DisplayMode(..),
Config(..)
) where
import Data.Default
import Csound.Typed
setRates :: Int -> Int -> Options
setRates :: Int -> Int -> Options
setRates Int
sampleRate Int
blockSize = Options
forall a. Default a => a
def
{ csdSampleRate :: Maybe Int
csdSampleRate = Int -> Maybe Int
forall a. a -> Maybe a
Just Int
sampleRate
, csdBlockSize :: Maybe Int
csdBlockSize = Int -> Maybe Int
forall a. a -> Maybe a
Just Int
blockSize }
setBufs :: Int -> Int -> Options
setBufs :: Int -> Int -> Options
setBufs Int
hw Int
io = Options
forall a. Default a => a
def { csdFlags :: Flags
csdFlags = Flags
forall a. Default a => a
def { config :: Config
config = Config
forall a. Default a => a
def { hwBuf :: Maybe Int
hwBuf = Int -> Maybe Int
forall a. a -> Maybe a
Just Int
hw, ioBuf :: Maybe Int
ioBuf = Int -> Maybe Int
forall a. a -> Maybe a
Just Int
io } } }
setGain :: Double -> Options
setGain :: Double -> Options
setGain Double
d = Options
forall a. Default a => a
def { csdGain :: Maybe Double
csdGain = Double -> Maybe Double
forall a. a -> Maybe a
Just Double
d' }
where d' :: Double
d' = Double -> Double -> Double
forall a. Ord a => a -> a -> a
max Double
0 (Double -> Double) -> Double -> Double
forall a b. (a -> b) -> a -> b
$ Double -> Double -> Double
forall a. Ord a => a -> a -> a
min Double
1 (Double -> Double) -> Double -> Double
forall a b. (a -> b) -> a -> b
$ Double
d
setJack :: String -> Options
setJack :: String -> Options
setJack String
name = Options
forall a. Default a => a
def { csdFlags :: Flags
csdFlags = Flags
forall a. Default a => a
def { rtaudio :: Maybe Rtaudio
rtaudio = Rtaudio -> Maybe Rtaudio
forall a. a -> Maybe a
Just (Rtaudio -> Maybe Rtaudio) -> Rtaudio -> Maybe Rtaudio
forall a b. (a -> b) -> a -> b
$ String -> String -> String -> Rtaudio
Jack String
name String
"input" String
"output" } }
setJacko :: Jacko -> Options
setJacko :: Jacko -> Options
setJacko Jacko
jackoSpec = Options
forall a. Default a => a
def { csdJacko :: Maybe Jacko
csdJacko = Jacko -> Maybe Jacko
forall a. a -> Maybe a
Just Jacko
jackoSpec }
setCoreAudio :: Options
setCoreAudio :: Options
setCoreAudio = Options
forall a. Default a => a
def { csdFlags :: Flags
csdFlags = Flags
forall a. Default a => a
def { rtaudio :: Maybe Rtaudio
rtaudio = Rtaudio -> Maybe Rtaudio
forall a. a -> Maybe a
Just (Rtaudio -> Maybe Rtaudio) -> Rtaudio -> Maybe Rtaudio
forall a b. (a -> b) -> a -> b
$ Rtaudio
CoreAudio } }
setAlsa :: Options
setAlsa :: Options
setAlsa = Options
forall a. Default a => a
def { csdFlags :: Flags
csdFlags = Flags
forall a. Default a => a
def { rtaudio :: Maybe Rtaudio
rtaudio = Rtaudio -> Maybe Rtaudio
forall a. a -> Maybe a
Just (Rtaudio -> Maybe Rtaudio) -> Rtaudio -> Maybe Rtaudio
forall a b. (a -> b) -> a -> b
$ Rtaudio
Alsa } }
setMme :: Options
setMme :: Options
setMme = Options
forall a. Default a => a
def { csdFlags :: Flags
csdFlags = Flags
forall a. Default a => a
def { rtaudio :: Maybe Rtaudio
rtaudio = Rtaudio -> Maybe Rtaudio
forall a. a -> Maybe a
Just (Rtaudio -> Maybe Rtaudio) -> Rtaudio -> Maybe Rtaudio
forall a b. (a -> b) -> a -> b
$ Rtaudio
Mme } }
setDac :: Options
setDac :: Options
setDac = String -> Options
setDacBy String
""
setAdc :: Options
setAdc :: Options
setAdc = String -> Options
setAdcBy String
""
setInput :: String -> Options
setInput :: String -> Options
setInput String
a = Options
forall a. Default a => a
def { csdFlags :: Flags
csdFlags = Flags
forall a. Default a => a
def { audioFileOutput :: AudioFileOutput
audioFileOutput = AudioFileOutput
forall a. Default a => a
def { input :: Maybe String
input = String -> Maybe String
forall a. a -> Maybe a
Just String
a } } }
setOutput :: String -> Options
setOutput :: String -> Options
setOutput String
a = Options
forall a. Default a => a
def { csdFlags :: Flags
csdFlags = Flags
forall a. Default a => a
def { audioFileOutput :: AudioFileOutput
audioFileOutput = AudioFileOutput
forall a. Default a => a
def { output :: Maybe String
output = String -> Maybe String
forall a. a -> Maybe a
Just String
a } } }
setDacBy :: String -> Options
setDacBy :: String -> Options
setDacBy String
port = String -> Options
setOutput String
name
where name :: String
name
| String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
port = String
"dac"
| Bool
otherwise = String
"dac:" String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
port
setAdcBy :: String -> Options
setAdcBy :: String -> Options
setAdcBy String
port = String -> Options
setInput String
name
where name :: String
name
| String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
port = String
"adc"
| Bool
otherwise = String
"adc:" String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
port
setThru :: Options
setThru :: Options
setThru = Options -> Options -> Options
forall a. Monoid a => a -> a -> a
mappend Options
setDac Options
setAdc
setSilent :: Options
setSilent :: Options
setSilent = (Options
forall a. Default a => a
def { csdFlags :: Flags
csdFlags = Flags
forall a. Default a => a
def { audioFileOutput :: AudioFileOutput
audioFileOutput = AudioFileOutput
forall a. Default a => a
def { nosound :: Bool
nosound = Bool
True } } })
setMidiDevice :: String -> Options
setMidiDevice :: String -> Options
setMidiDevice String
a = Options
forall a. Default a => a
def { csdFlags :: Flags
csdFlags = Flags
forall a. Default a => a
def { midiRT :: MidiRT
midiRT = MidiRT
forall a. Default a => a
def { midiDevice :: Maybe String
midiDevice = String -> Maybe String
forall a. a -> Maybe a
Just String
a } } }
setMa :: Options
setMa :: Options
setMa = String -> Options
setMidiDevice String
"a"
setMessageLevel :: Int -> Options
setMessageLevel :: Int -> Options
setMessageLevel Int
n = Options
forall a. Default a => a
def { csdFlags :: Flags
csdFlags = Flags
forall a. Default a => a
def { displays :: Displays
displays = Displays
forall a. Default a => a
def { messageLevel :: Maybe Int
messageLevel = Int -> Maybe Int
forall a. a -> Maybe a
Just Int
n }}}
noMessages :: Options
noMessages :: Options
noMessages = Int -> Options
setMessageLevel Int
0
setTrace :: Options
setTrace :: Options
setTrace = Options
forall a. Default a => a
def { csdTrace :: Maybe Bool
csdTrace = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True }
setCabbage :: Options
setCabbage :: Options
setCabbage = Int -> Int -> Options
setRates Int
48000 Int
64 Options -> Options -> Options
forall a. Semigroup a => a -> a -> a
<> Options
setNoRtMidi Options -> Options -> Options
forall a. Semigroup a => a -> a -> a
<> String -> Options
setMidiDevice String
"0"
where setNoRtMidi :: Options
setNoRtMidi = Options
forall a. Default a => a
def { csdFlags :: Flags
csdFlags = Flags
forall a. Default a => a
def { rtmidi :: Maybe Rtmidi
rtmidi = Rtmidi -> Maybe Rtmidi
forall a. a -> Maybe a
Just Rtmidi
NoRtmidi, audioFileOutput :: AudioFileOutput
audioFileOutput = AudioFileOutput
forall a. Default a => a
def { nosound :: Bool
nosound = Bool
True } }}
setJackConnect :: [(String, String)] -> Options
setJackConnect :: [(String, String)] -> Options
setJackConnect [(String, String)]
connections = Options
forall a. Default a => a
def { csdJackConnect :: Maybe [(String, String)]
csdJackConnect = [(String, String)] -> Maybe [(String, String)]
forall a. a -> Maybe a
Just [(String, String)]
connections }