Safe Haskell | None |
---|---|
Language | Haskell2010 |
- newtype SE a = SE {
- unSE :: Dep a
- data LocalHistory :: * = LocalHistory {
- expDependency :: E
- newLineNum :: Int
- newLocalVarId :: Int
- runSE :: SE a -> GE a
- execSE :: SE () -> GE InstrBody
- evalSE :: SE a -> GE a
- execGEinSE :: SE (GE a) -> SE a
- hideGEinDep :: GE (Dep a) -> Dep a
- fromDep :: Dep a -> SE (GE a)
- fromDep_ :: Dep () -> SE ()
- geToSe :: GE a -> SE a
- newLocalVar :: Rate -> GE E -> SE Var
- newLocalVars :: [Rate] -> GE [E] -> SE [Var]
- newGlobalVars :: [Rate] -> GE [E] -> SE [Var]
- newClearableGlobalVars :: [Rate] -> GE [E] -> SE [Var]
- data Ref a
- writeRef :: Tuple a => Ref a -> a -> SE ()
- readRef :: Tuple a => Ref a -> SE a
- newRef :: Tuple a => a -> SE (Ref a)
- mixRef :: (Num a, Tuple a) => Ref a -> a -> SE ()
- modifyRef :: Tuple a => Ref a -> (a -> a) -> SE ()
- sensorsSE :: Tuple a => a -> SE (SE a, a -> SE ())
- newGlobalRef :: Tuple a => a -> SE (Ref a)
- newCtrlRef :: Tuple a => a -> SE (Ref a)
- newGlobalCtrlRef :: Tuple a => a -> SE (Ref a)
- globalSensorsSE :: Tuple a => a -> SE (SE a, a -> SE ())
- newClearableGlobalRef :: Tuple a => a -> SE (Ref a)
- newTab :: D -> SE Tab
- newGlobalTab :: Int -> SE Tab
- instr0 :: Tuple a => SE a -> SE a
- getIns :: Sigs a => SE a
- setDur :: Sigs a => D -> a -> a
- freshId :: SE D
- data Mix a
- sco :: (Arg a, Sigs b) => (a -> SE b) -> Sco a -> Sco (Mix b)
- eff :: (Sigs a, Sigs b) => (a -> SE b) -> Sco (Mix a) -> Sco (Mix b)
- mix :: Sigs a => Sco (Mix a) -> a
- mixBy :: (Arg a, Sigs b) => (a -> Sco (Mix b)) -> a -> b
- sco_ :: Arg a => (a -> SE ()) -> Sco a -> Sco (Mix Unit)
- mix_ :: Sco (Mix Unit) -> SE ()
- mixBy_ :: Arg a => (a -> Sco (Mix Unit)) -> a -> SE ()
- type Sco a = Track D a
- type CsdEventList a = Track D a
- type CsdEvent = (Double, Double, Note)
- data Msg
- type Channel = Int
- midi :: (Num a, Sigs a) => (Msg -> SE a) -> SE a
- midin :: (Num a, Sigs a) => Channel -> (Msg -> SE a) -> SE a
- pgmidi :: (Num a, Sigs a) => Maybe Int -> Channel -> (Msg -> SE a) -> SE a
- midi_ :: (Msg -> SE ()) -> SE ()
- midin_ :: Channel -> (Msg -> SE ()) -> SE ()
- pgmidi_ :: Maybe Int -> Channel -> (Msg -> SE ()) -> SE ()
- initMidiCtrl :: D -> D -> D -> SE ()
- trigByName :: (Arg a, Sigs b) => String -> (a -> SE b) -> SE b
- trigByName_ :: Arg a => String -> (a -> SE ()) -> SE ()
- trigByNameMidi :: (Arg a, Sigs b) => String -> ((D, D, a) -> SE b) -> SE b
- trigByNameMidi_ :: forall a. Arg a => String -> ((D, D, a) -> SE ()) -> SE ()
- namedMonoMsg :: D -> D -> String -> SE (Sig, Sig)
- data OscRef
- type OscHost = String
- type OscPort = Int
- type OscAddress = String
- type OscType = String
- initOsc :: OscPort -> SE OscRef
- listenOsc :: forall a. Tuple a => OscRef -> OscAddress -> OscType -> Evt a
- sendOsc :: forall a. Tuple a => OscHost -> OscPort -> OscAddress -> OscType -> Evt a -> SE ()
- chnGetD :: Str -> SE D
- chnGetSig :: Str -> SE Sig
- chnGetCtrl :: Str -> SE Sig
- chnGetStr :: Str -> SE Str
- chnSetD :: D -> Str -> SE ()
- chnSetSig :: Sig -> Str -> SE ()
- chnSetCtrl :: Sig -> Str -> SE ()
- chnSetStr :: Str -> Str -> SE ()
- data Sf
- unSf :: Sf -> GE E
- sched :: (Arg a, Sigs b) => (a -> SE b) -> Evt (Sco a) -> b
- sched_ :: Arg a => (a -> SE ()) -> Evt (Sco a) -> SE ()
- schedBy :: (Arg a, Sigs b, Arg c) => (a -> SE b) -> (c -> Evt (Sco a)) -> c -> b
- schedHarp :: (Arg a, Sigs b) => D -> (a -> SE b) -> Evt [a] -> b
- schedHarpBy :: (Arg a, Sigs b, Arg c) => D -> (a -> SE b) -> (c -> Evt [a]) -> c -> b
- retrigs :: (Arg a, Sigs b) => (a -> SE b) -> Evt [a] -> b
- evtLoop :: (Num a, Tuple a, Sigs a) => Maybe (Evt Unit) -> [SE a] -> [Evt Unit] -> a
- evtLoopOnce :: (Num a, Tuple a, Sigs a) => Maybe (Evt Unit) -> [SE a] -> [Evt Unit] -> a
- saw :: Sig -> Sig
- isaw :: Sig -> Sig
- pulse :: Sig -> Sig
- tri :: Sig -> Sig
- sqr :: Sig -> Sig
- blosc :: Tab -> Sig -> Sig
- saw' :: D -> Sig -> Sig
- isaw' :: D -> Sig -> Sig
- pulse' :: D -> Sig -> Sig
- tri' :: D -> Sig -> Sig
- sqr' :: D -> Sig -> Sig
- blosc' :: Tab -> D -> Sig -> Sig
- data SyncSmooth
- sawSync :: Sig -> Sig -> Sig
- isawSync :: Sig -> Sig -> Sig
- pulseSync :: Sig -> Sig -> Sig
- triSync :: Sig -> Sig -> Sig
- sqrSync :: Sig -> Sig -> Sig
- bloscSync :: Tab -> Sig -> Sig -> Sig
- sawSync' :: D -> Sig -> Sig -> Sig
- isawSync' :: D -> Sig -> Sig -> Sig
- pulseSync' :: D -> Sig -> Sig -> Sig
- triSync' :: D -> Sig -> Sig -> Sig
- sqrSync' :: D -> Sig -> Sig -> Sig
- bloscSync' :: Tab -> D -> Sig -> Sig -> Sig
- sawSyncAbs :: Sig -> Sig -> Sig
- isawSyncAbs :: Sig -> Sig -> Sig
- pulseSyncAbs :: Sig -> Sig -> Sig
- triSyncAbs :: Sig -> Sig -> Sig
- sqrSyncAbs :: Sig -> Sig -> Sig
- bloscSyncAbs :: Tab -> Sig -> Sig -> Sig
- sawSyncAbs' :: D -> Sig -> Sig -> Sig
- isawSyncAbs' :: D -> Sig -> Sig -> Sig
- pulseSyncAbs' :: D -> Sig -> Sig -> Sig
- triSyncAbs' :: D -> Sig -> Sig -> Sig
- sqrSyncAbs' :: D -> Sig -> Sig -> Sig
- bloscSyncAbs' :: Tab -> D -> Sig -> Sig -> Sig
- sawSyncBy :: SyncSmooth -> Sig -> Sig -> Sig
- isawSyncBy :: SyncSmooth -> Sig -> Sig -> Sig
- pulseSyncBy :: SyncSmooth -> Sig -> Sig -> Sig
- triSyncBy :: SyncSmooth -> Sig -> Sig -> Sig
- sqrSyncBy :: SyncSmooth -> Sig -> Sig -> Sig
- bloscSyncBy :: SyncSmooth -> Tab -> Sig -> Sig -> Sig
- sawSyncBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig
- isawSyncBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig
- pulseSyncBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig
- triSyncBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig
- sqrSyncBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig
- bloscSyncBy' :: SyncSmooth -> Tab -> D -> Sig -> Sig -> Sig
- sawSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig
- isawSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig
- pulseSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig
- triSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig
- sqrSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig
- bloscSyncAbsBy :: SyncSmooth -> Tab -> Sig -> Sig -> Sig
- sawSyncAbsBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig
- isawSyncAbsBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig
- pulseSyncAbsBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig
- triSyncAbsBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig
- sqrSyncAbsBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig
- bloscSyncAbsBy' :: SyncSmooth -> Tab -> D -> Sig -> Sig -> Sig
SE
The Csound's IO
-monad. All values that produce side effects are wrapped
in the SE
-monad.
Monad SE Source # | |
Functor SE Source # | |
Applicative SE Source # | |
Procedure (SE ()) Source # | |
DirtySingle (SE (GE E)) Source # | |
DirtySingle (SE Tab) Source # | |
DirtySingle (SE Wspec) Source # | |
DirtySingle (SE Spec) Source # | |
DirtySingle (SE Str) Source # | |
DirtySingle (SE D) Source # | |
DirtySingle (SE Sig) Source # | |
data LocalHistory :: * #
LocalHistory | |
|
hideGEinDep :: GE (Dep a) -> Dep a Source #
SE reference
newRef :: Tuple a => a -> SE (Ref a) Source #
Allocates a new local (it is visible within the instrument) mutable value and initializes it with value. A reference can contain a tuple of variables.
mixRef :: (Num a, Tuple a) => Ref a -> a -> SE () Source #
Adds the given signal to the value that is contained in the reference.
modifyRef :: Tuple a => Ref a -> (a -> a) -> SE () Source #
Modifies the Ref value with given function.
sensorsSE :: Tuple a => a -> SE (SE a, a -> SE ()) Source #
An alias for the function newRef
. It returns not the reference
to mutable value but a pair of reader and writer functions.
newGlobalRef :: Tuple a => a -> SE (Ref a) Source #
Allocates a new global mutable value and initializes it with value. A reference can contain a tuple of variables.
newCtrlRef :: Tuple a => a -> SE (Ref a) Source #
Allocates a new local (it is visible within the instrument) mutable value and initializes it with value. A reference can contain a tuple of variables. It contains control signals (k-rate) and constants for numbers (i-rates).
newGlobalCtrlRef :: Tuple a => a -> SE (Ref a) Source #
Allocates a new global mutable value and initializes it with value. A reference can contain a tuple of variables. It contains control signals (k-rate) and constants for numbers (i-rates).
globalSensorsSE :: Tuple a => a -> SE (SE a, a -> SE ()) Source #
An alias for the function newRef
. It returns not the reference
to mutable value but a pair of reader and writer functions.
newClearableGlobalRef :: Tuple a => a -> SE (Ref a) Source #
Allocates a new clearable global mutable value and initializes it with value. A reference can contain a tuple of variables. The variable is set to zero at the end of every iteration. It's useful for accumulation of audio values from several instruments.
newTab :: D -> SE Tab Source #
Creates a new table. The Tab could be used while the instrument is playing. When the instrument is retriggered the new tab is allocated.
newTab size
newGlobalTab :: Int -> SE Tab Source #
Creates a new global table. It's generated only once. It's persisted between instrument calls.
newGlobalTab identifier size
Global settings
setDur :: Sigs a => D -> a -> a Source #
Sets the global duration of the file or output signal to the given value.
It should be used only once! The proper place is in the top-most
expression before sending to dac
or writeWav
.
Misc
Score
Special type that represents a scores of sound signals. If an instrument is triggered with the scores the result is wrapped in the value of this type.
sco :: (Arg a, Sigs b) => (a -> SE b) -> Sco a -> Sco (Mix b) Source #
Plays a bunch of notes with the given instrument.
res = sco instrument scores
eff :: (Sigs a, Sigs b) => (a -> SE b) -> Sco (Mix a) -> Sco (Mix b) Source #
Applies an effect to the sound. Effect is applied to the sound on the give track.
res = eff effect sco
effect
- a function that takes a tuple of signals and produces a tuple of signals.sco
- something that is constructed withsco
oreff
.
With the function eff
you can apply a reverb or adjust the
level of the signal. It functions like a mixing board but unlike mixing
board it produces the value that you can arrange with functions from your
favorite Score-generation library. You can delay it or mix with some other track and
apply some another effect on top of it!
mix :: Sigs a => Sco (Mix a) -> a Source #
Renders a scores to the sound signals. we can use it inside the other instruments.
mixBy :: (Arg a, Sigs b) => (a -> Sco (Mix b)) -> a -> b Source #
Imitates a closure for a bunch of notes to be played within another instrument.
sco_ :: Arg a => (a -> SE ()) -> Sco a -> Sco (Mix Unit) Source #
Invokes a procedure for the given bunch of events.
mix_ :: Sco (Mix Unit) -> SE () Source #
Converts a bunch of procedures scheduled with scores to a single procedure.
mixBy_ :: Arg a => (a -> Sco (Mix Unit)) -> a -> SE () Source #
Imitates a closure for a bunch of procedures to be played within another instrument.
type CsdEventList a = Track D a Source #
type CsdEvent = (Double, Double, Note) #
The Csound note. It's a triple of
(startTime, duration, parameters)
Midi
DirtyMulti b => DirtyMulti (Msg -> b) Source # | |
PureMulti b => PureMulti (Msg -> b) Source # | |
Procedure b => Procedure (Msg -> b) Source # | |
DirtySingle b => DirtySingle (Msg -> b) Source # | |
PureSingle b => PureSingle (Msg -> b) Source # | |
midi :: (Num a, Sigs a) => (Msg -> SE a) -> SE a Source #
Triggers a midi-instrument (aka Csound's massign) for all channels. It's useful to test a single instrument.
midin :: (Num a, Sigs a) => Channel -> (Msg -> SE a) -> SE a Source #
Triggers a midi-instrument (aka Csound's massign) on the specified channel.
pgmidi :: (Num a, Sigs a) => Maybe Int -> Channel -> (Msg -> SE a) -> SE a Source #
Triggers a midi-instrument (aka Csound's pgmassign) on the specified programm bank.
midi_ :: (Msg -> SE ()) -> SE () Source #
Triggers a midi-procedure (aka Csound's massign) for all channels.
midin_ :: Channel -> (Msg -> SE ()) -> SE () Source #
Triggers a midi-procedure (aka Csound's pgmassign) on the given channel.
pgmidi_ :: Maybe Int -> Channel -> (Msg -> SE ()) -> SE () Source #
Triggers a midi-procedure (aka Csound's pgmassign) on the given programm bank.
Named instruments (API)
trigByName :: (Arg a, Sigs b) => String -> (a -> SE b) -> SE b Source #
Creates an instrument that can be triggered by name with Csound API.
The arguments are determined from the structure of the input for the instrument.
If we have a tuple of arguments: (D, D, Tab)
The would be rendered to instrument arguments that strts from p4
.
p1
is the name of teh instrument, p2
is the start time of the note,
p3
is the duration of the note. Then p4
and p5
are going to be doubles and p6
is an integer that denotes a functional table.
trigByName_ :: Arg a => String -> (a -> SE ()) -> SE () Source #
Creates an instrument that can be triggered by name with Csound API. The arguments are determined from the structure of the input for the instrument.
With Csound API we can send messages
i "name" time duration arg1 arg2 arg3
trigByNameMidi :: (Arg a, Sigs b) => String -> ((D, D, a) -> SE b) -> SE b Source #
Creates an instrument that can be triggered by name with Csound API.
It's intended to be used like a midi instrument. It simulates a simplified midi protocol. We can trigger notes:
i "givenName" delay duration 1 pitchKey volumeKey auxParams -- note on i "givenName" delay duration 0 pitchKey volumeKey auxParams -- note off
The arguments are
trigByNameMidi name instrument
The instrument takes a triplet of (pitchKey, volumeKey, auxilliaryTuple)
.
The order does matter. Please don't pass the volumeKey
as the first argument.
The instrument expects the pitch key to be a first argument.
trigByNameMidi_ :: forall a. Arg a => String -> ((D, D, a) -> SE ()) -> SE () Source #
It behaves just like the function trigByNameMidi
. Only it doesn't produce an audio
signal. It performs some procedure on note on and stops doing the precedure on note off.
OSC
type OscAddress = String Source #
Path-like string ("foobar/baz")
type OscType = String Source #
The string specifies the type of expected arguments. The string can contain the characters "bcdfilmst" which stand for Boolean, character, double, float, 32-bit integer, 64-bit integer, MIDI, string and timestamp.
initOsc :: OscPort -> SE OscRef Source #
Initializes host client. The process starts to run in the background.
listenOsc :: forall a. Tuple a => OscRef -> OscAddress -> OscType -> Evt a Source #
Listens for the OSC-messages. The first argument is OSC-reference.
We can create it with the function oscInit
. The next two arguments are strings.
The former specifies the path-like address to listen the messages. It can be:
/foo/bar/baz
The latter specifies the type of expected arguments. The string can contain the characters "bcdfilmst" which stand for Boolean, character, double, float, 32-bit integer, 64-bit integer, MIDI, string and timestamp.
The result is an event of messages. We can run a callback on it
with standard function runEvt
:
runEvt :: Evt a -> (a -> SE ()) -> SE ()
sendOsc :: forall a. Tuple a => OscHost -> OscPort -> OscAddress -> OscType -> Evt a -> SE () Source #
Sends OSC-messages. It takes in a name of the host computer (empty string is alocal machine), port on which the target machine is listening, OSC-addres and type. The last argument produces the values for OSC-messages.
Channel
Getters
chnGetCtrl :: Str -> SE Sig Source #
Reads a control signal. The control signals are updated at the lower rate.
Setters
chnSetCtrl :: Sig -> Str -> SE () Source #
Writes a control signal. The control signals are updated at the lower rate.
Sf2
The sf2 sound font preset. It is defined with file name, bank and program integers.
Events
sched_ :: Arg a => (a -> SE ()) -> Evt (Sco a) -> SE () Source #
Triggers a procedure on the event stream.
schedBy :: (Arg a, Sigs b, Arg c) => (a -> SE b) -> (c -> Evt (Sco a)) -> c -> b Source #
A closure to trigger an instrument inside the body of another instrument.
schedHarp :: (Arg a, Sigs b) => D -> (a -> SE b) -> Evt [a] -> b Source #
An instrument is triggered with event stream and delay time is set to zero (event fires immediately) and duration is set to inifinite time. The note is held while the instrument is producing something. If the instrument is silent for some seconds (specified in the first argument) then it's turned off.
schedHarpBy :: (Arg a, Sigs b, Arg c) => D -> (a -> SE b) -> (c -> Evt [a]) -> c -> b Source #
A closure to trigger an instrument inside the body of another instrument.
retrigs :: (Arg a, Sigs b) => (a -> SE b) -> Evt [a] -> b Source #
Retriggers an instrument every time an event happens. The note is held until the next event happens.
Band-limited oscillators
blosc :: Tab -> Sig -> Sig Source #
A band-limited oscillator with user defined waveform (it's stored in the table).
blosc' :: Tab -> D -> Sig -> Sig Source #
A band-limited oscillator with user defined waveform (it's stored in the table).
Hard sync
data SyncSmooth Source #
Type of smooth shape to make smooth transitions on retrigger. Available types are:
- No smooth:
RawSync
- Ramp smooth:
SawSync
- Triangular smooth:
TriSync
- User defined shape:
UserSync
sawSync :: Sig -> Sig -> Sig Source #
Sawtooth oscillator with hard-sync. The first argument is a ration between slave and master oscillators.
sawSync ratio cps
isawSync :: Sig -> Sig -> Sig Source #
Integrated sawtooth oscillator with hard-sync. The first argument is a ration between slave and master oscillators.
isawSync ratio cps
pulseSync :: Sig -> Sig -> Sig Source #
Pulse oscillator with hard-sync. The first argument is a ration between slave and master oscillators.
pulseSync ratio cps
triSync :: Sig -> Sig -> Sig Source #
Triangle oscillator with hard-sync. The first argument is a ration between slave and master oscillators.
triSync ratio cps
sqrSync :: Sig -> Sig -> Sig Source #
Square oscillator with hard-sync. The first argument is a ration between slave and master oscillators.
sqrSync ratio cps
bloscSync :: Tab -> Sig -> Sig -> Sig Source #
Band-limited oscillator with hard-sync. The first argument is a ration between slave and master oscillators.
bloscSync tab ratio cps
sawSync' :: D -> Sig -> Sig -> Sig Source #
Sawtooth oscillator with hard-sync with phase. The second argument is a ration between slave and master oscillators.
sawSync' phase ratio cps
isawSync' :: D -> Sig -> Sig -> Sig Source #
Integrated sawtooth oscillator with hard-sync with phase. The second argument is a ration between slave and master oscillators.
isawSync' phase ratio cps
pulseSync' :: D -> Sig -> Sig -> Sig Source #
Pulse oscillator with hard-sync with phase. The second argument is a ration between slave and master oscillators.
pulseSync' phase ratio cps
triSync' :: D -> Sig -> Sig -> Sig Source #
Triangle oscillator with hard-sync with phase. The second argument is a ration between slave and master oscillators.
triSync' phase ratio cps
sqrSync' :: D -> Sig -> Sig -> Sig Source #
Square oscillator with hard-sync with phase. The second argument is a ration between slave and master oscillators.
sqrSync' phase ratio cps
bloscSync' :: Tab -> D -> Sig -> Sig -> Sig Source #
Band-limited oscillator with hard-sync with phase. The second argument is a ration between slave and master oscillators.
bloscSync' phase tab ratio cps
Hard sync with absolute frequency for slave oscillator
sawSyncAbs :: Sig -> Sig -> Sig Source #
Sawtooth oscillator with hard-sync.
The freq
argument is an absolute frequency of a slave oscillator.
sawSyncAbs freq slaveCps masterCps
isawSyncAbs :: Sig -> Sig -> Sig Source #
Integrated sawtooth oscillator with hard-sync.
The freq
argument is an absolute frequency of a slave oscillator.
isawSyncAbs freq slaveCps masterCps
pulseSyncAbs :: Sig -> Sig -> Sig Source #
Pulse oscillator with hard-sync.
The freq
argument is an absolute frequency of a slave oscillator.
pulseSyncAbs freq slaveCps masterCps
triSyncAbs :: Sig -> Sig -> Sig Source #
Triangle oscillator with hard-sync.
The freq
argument is an absolute frequency of a slave oscillator.
triSyncAbs freq slaveCps masterCps
sqrSyncAbs :: Sig -> Sig -> Sig Source #
Square oscillator with hard-sync.
The freq
argument is an absolute frequency of a slave oscillator.
sqrSyncAbs freq slaveCps masterCps
bloscSyncAbs :: Tab -> Sig -> Sig -> Sig Source #
Bandlimited table oscillator with hard-sync.
The freq
argument is an absolute frequency of a slave oscillator.
bloscSyncAbs tab freq slaveCps masterCps
sawSyncAbs' :: D -> Sig -> Sig -> Sig Source #
Sawtooth oscillator with hard-sync with phase.
The freq
argument is an absolute frequency of a slave oscillator.
sawSyncAbs' phase freq slaveCps masterCps
isawSyncAbs' :: D -> Sig -> Sig -> Sig Source #
Integrated sawtooth oscillator with hard-sync with phase.
The freq
argument is an absolute frequency of a slave oscillator.
isawSyncAbs' phase freq slaveCps masterCps
pulseSyncAbs' :: D -> Sig -> Sig -> Sig Source #
Pulse oscillator with hard-sync with phase.
The freq
argument is an absolute frequency of a slave oscillator.
pulseSyncAbs' phase freq slaveCps masterCps
triSyncAbs' :: D -> Sig -> Sig -> Sig Source #
Triangle oscillator with hard-sync with phase.
The freq
argument is an absolute frequency of a slave oscillator.
triSyncAbs' phase freq slaveCps masterCps
sqrSyncAbs' :: D -> Sig -> Sig -> Sig Source #
Square oscillator with hard-sync with phase.
The freq
argument is an absolute frequency of a slave oscillator.
sqrSyncAbs' phase freq slaveCps masterCps
bloscSyncAbs' :: Tab -> D -> Sig -> Sig -> Sig Source #
Bandlimited table oscillator with hard-sync with phase.
The freq
argument is an absolute frequency of a slave oscillator.
bloscSyncAbs' phase tab freq slaveCps masterCps
Hard sync with custom smoothing algorythm
sawSyncBy :: SyncSmooth -> Sig -> Sig -> Sig Source #
Sawtooth oscillator with hard-sync. We can specify the smoothness type.
The ratio
argument is a ration between slave and master oscillators.
sawSyncBy spec ratio cps
isawSyncBy :: SyncSmooth -> Sig -> Sig -> Sig Source #
Integrated sawtooth oscillator with hard-sync. We can specify the smoothness type. The first argument is a ration between slave and master oscillators.
isawSyncB specy ratio cps
pulseSyncBy :: SyncSmooth -> Sig -> Sig -> Sig Source #
Pulse oscillator with hard-sync. We can specify the smoothness type.
The ratio
argument is a ration between slave and master oscillators.
pulseSyncBy spec ratio cps
triSyncBy :: SyncSmooth -> Sig -> Sig -> Sig Source #
Triangle oscillator with hard-sync. We can specify the smoothness type.
The ratio
argument is a ration between slave and master oscillators.
triSyncBy spec ratio cps
sqrSyncBy :: SyncSmooth -> Sig -> Sig -> Sig Source #
Square oscillator with hard-sync. We can specify the smoothness type.
The ratio
argument is a ration between slave and master oscillators.
sawSyncBy spec ratio cps
bloscSyncBy :: SyncSmooth -> Tab -> Sig -> Sig -> Sig Source #
Bandlimited table oscillator with hard-sync. We can specify the smoothness type.
The ratio
argument is a ration between slave and master oscillators.
bloscSyncBy spec tab ratio cps
sawSyncBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig Source #
Sawtooth oscillator with hard-sync with phase. We can specify the smoothness type.
The ratio
argument is a ration between slave and master oscillators.
sawSyncBy' spec phase ratio cps
isawSyncBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig Source #
Integrated sawtooth oscillator with hard-sync with phase. We can specify the smoothness type.
The ratio
argument is a ration between slave and master oscillators.
isawSyncBy' spec phase ratio cps
pulseSyncBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig Source #
Pulse oscillator with hard-sync with phase. We can specify the smoothness type.
The ratio
argument is a ration between slave and master oscillators.
pulseSyncBy' spec phase ratio cps
triSyncBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig Source #
Triangle oscillator with hard-sync with phase. We can specify the smoothness type.
The ratio
argument is a ration between slave and master oscillators.
triSyncBy' spec phase ratio cps
sqrSyncBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig Source #
Square oscillator with hard-sync with phase. We can specify the smoothness type.
The ratio
argument is a ration between slave and master oscillators.
sawSyncBy' spec phase ratio cps
bloscSyncBy' :: SyncSmooth -> Tab -> D -> Sig -> Sig -> Sig Source #
Bandlimited table oscillator with hard-sync with phase. We can specify the smoothness type.
The ratio
argument is a ration between slave and master oscillators.
bloscSyncBy' spec phase tab ratio cps
Hard sync with absolute frequency for slave oscillator
sawSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig Source #
A hard sync for sawtooth with absolute slave frequency.
sawSyncAbs syncType salveCps masterCps
isawSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig Source #
A hard sync for integrated sawtooth: 4 * x * (1 - x) with absolute slave frequency.
isawSyncAbs syncType salveCps masterCps
pulseSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig Source #
A hard sync for pulse wave with absolute slave frequency.
pulseSyncAbs syncType salveCps masterCps
triSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig Source #
A hard sync for triangle wave with absolute slave frequency.
triSyncAbs syncType salveCps masterCps
sqrSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig Source #
A hard sync for square wave with absolute slave frequency.
sqrSyncAbs syncType salveCps masterCps
bloscSyncAbsBy :: SyncSmooth -> Tab -> Sig -> Sig -> Sig Source #
A hard sync for band-limited oscillator with user defined waveform (it's stored in the table) woth absolute frequency.
bloscSyncAbs syncType ftable salveCps masterCps
sawSyncAbsBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig Source #
A sawtooth.
isawSyncAbsBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig Source #
Integrated sawtooth: 4 * x * (1 - x).
pulseSyncAbsBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig Source #
Pulse (not normalized).
triSyncAbsBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig Source #
A triangle wave.
sqrSyncAbsBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig Source #
A square wave.
bloscSyncAbsBy' :: SyncSmooth -> Tab -> D -> Sig -> Sig -> Sig Source #
A band-limited oscillator with user defined waveform (it's stored in the table).