WAGS.Change
- Package
- purescript-wags
- Repository
- mikesol/purescript-wags
#Change Source
class Change (p :: EdgeProfile) (a :: Type) (graph :: Graph) (b :: Type) | p a graph -> b whereChange all of the audio nodes in edge profile p using the template laid out by type a for graph.
myCursor <- cursor (Speaker (Gain 1.0 (SinOsc 440.0 /\ Focus (SinOsc 330.0) /\ Unit)))
change' (asEdgeProfile myCursor) (SinOsc 332.0)
Note that change' increments the changeBit in the universe by 1, aka Succ.
This use of inductive types in an indexed bind operation guarantees that we never go
"back in time" after having changed an audio graph.
Members
change' :: forall env audio engine proof m res ptr changeBit skolems. Monad m => AudioInterpret audio engine => Proxy p -> a -> FrameT env audio engine proof m res (UniverseC ptr graph changeBit skolems) (UniverseC ptr graph (Succ changeBit) skolems) b
Instances
Change NoEdge g igraph gChange (SingleEdge p) (Proxy skolem) igraph (Proxy skolem)(Change (SingleEdge p) x igraph y) => Change (SingleEdge p) (Identity x) igraph (Identity y)(Change (SingleEdge p) x igraph y) => Change (SingleEdge p) (Proxy s -> x) igraph (Proxy s -> y)(Change (ManyEdges p p') x igraph y) => Change (ManyEdges p p') (Proxy s -> x) igraph (Proxy s -> y)Change (SingleEdge p) IgnoreMe igraph IgnoreMeChange (SingleEdge p) This igraph This(Change (SingleEdge p) x igraph y) => Change (SingleEdge p) (Focus x) igraph (Focus y)(Change (SingleEdge p) x igraph x', Change (ManyEdges a b) y igraph y') => Change (ManyEdges p (PtrListCons a b)) (Tuple x y) igraph (Tuple x' y')(Change (SingleEdge p) a igraph b) => Change (ManyEdges p PtrListNil) (Tuple a Unit) igraph (Tuple b Unit)(Create a D0 InitialGraph (SkolemListCons (SkolemPairC skolem D0) skolems) outptr graph (SkolemListCons (SkolemPairC skolem D0) skolems) ignore, BinToInt p, BinToInt outptr, BinToInt continuation, BinSub p outptr continuation, Change (SingleEdge p) b igraph b', Change (SingleEdge continuation) a igraph a') => Change (SingleEdge p) (Dup a (Proxy skolem -> b)) igraph (Dup a' (Proxy skolem -> b'))(SetterVal argA, SetterVal argB, BinToInt p, Modify (Allpass argA argB argC) p igraph nextP, Change nextP argC igraph outInner) => Change (SingleEdge p) (Allpass argA argB argC) igraph (Allpass AudioParameter AudioParameter outInner)(SetterVal argA, SetterVal argB, BinToInt p, Modify (Bandpass argA argB argC) p igraph nextP, Change nextP argC igraph outInner) => Change (SingleEdge p) (Bandpass argA argB argC) igraph (Bandpass AudioParameter AudioParameter outInner)(SetterVal argA, BinToInt p, Modify (Constant argA) p igraph nextP) => Change (SingleEdge p) (Constant argA) igraph (Constant AudioParameter)(SetterVal argA, BinToInt p, Modify (Delay argA argB) p igraph nextP, Change nextP argB igraph outInner) => Change (SingleEdge p) (Delay argA argB) igraph (Delay AudioParameter outInner)(SetterVal argA, SetterVal argB, SetterVal argC, SetterVal argD, SetterVal argE, BinToInt p, Modify (DynamicsCompressor argA argB argC argD argE argF) p igraph nextP, Change nextP argF igraph outInner) => Change (SingleEdge p) (DynamicsCompressor argA argB argC argD argE argF) igraph (DynamicsCompressor AudioParameter AudioParameter AudioParameter AudioParameter AudioParameter outInner)(SetterVal argA, SetterVal argB, BinToInt p, Modify (Highpass argA argB argC) p igraph nextP, Change nextP argC igraph outInner) => Change (SingleEdge p) (Highpass argA argB argC) igraph (Highpass AudioParameter AudioParameter outInner)(SetterVal argA, SetterVal argB, BinToInt p, Modify (Highshelf argA argB argC) p igraph nextP, Change nextP argC igraph outInner) => Change (SingleEdge p) (Highshelf argA argB argC) igraph (Highshelf AudioParameter AudioParameter outInner)(SetterVal argB, BinToInt p, Modify (LoopBuf argB) p igraph nextP) => Change (SingleEdge p) (LoopBuf argB) igraph (LoopBuf AudioParameter)(SetterVal argA, SetterVal argB, BinToInt p, Modify (Lowpass argA argB argC) p igraph nextP, Change nextP argC igraph outInner) => Change (SingleEdge p) (Lowpass argA argB argC) igraph (Lowpass AudioParameter AudioParameter outInner)(SetterVal argA, SetterVal argB, BinToInt p, Modify (Lowshelf argA argB argC) p igraph nextP, Change nextP argC igraph outInner) => Change (SingleEdge p) (Lowshelf argA argB argC) igraph (Lowshelf AudioParameter AudioParameter outInner)Change (SingleEdge p) Microphone igraph Microphone(SetterVal argA, SetterVal argB, BinToInt p, Modify (Notch argA argB argC) p igraph nextP, Change nextP argC igraph outInner) => Change (SingleEdge p) (Notch argA argB argC) igraph (Notch AudioParameter AudioParameter outInner)(SetterVal argA, SetterVal argB, SetterVal argC, BinToInt p, Modify (Peaking argA argB argC argD) p igraph nextP, Change nextP argD igraph outInner) => Change (SingleEdge p) (Peaking argA argB argC argD) igraph (Peaking AudioParameter AudioParameter AudioParameter outInner)(SetterVal argB, BinToInt p, Modify (PeriodicOsc argB) p igraph nextP) => Change (SingleEdge p) (PeriodicOsc argB) igraph (PeriodicOsc AudioParameter)(SetterVal argB, BinToInt p, Modify (PlayBuf argB) p igraph nextP) => Change (SingleEdge p) (PlayBuf argB) igraph (PlayBuf AudioParameter)(SetterVal argA, BinToInt p, Modify (SawtoothOsc argA) p igraph nextP) => Change (SingleEdge p) (SawtoothOsc argA) igraph (SawtoothOsc AudioParameter)(SetterVal argA, BinToInt p, Modify (SinOsc argA) p igraph nextP) => Change (SingleEdge p) (SinOsc argA) igraph (SinOsc AudioParameter)(SetterVal argA, BinToInt p, Modify (SquareOsc argA) p igraph nextP) => Change (SingleEdge p) (SquareOsc argA) igraph (SquareOsc AudioParameter)(SetterVal argA, BinToInt p, Modify (StereoPanner argA argB) p igraph nextP, Change nextP argB igraph outInner) => Change (SingleEdge p) (StereoPanner argA argB) igraph (StereoPanner AudioParameter outInner)(SetterVal argA, BinToInt p, Modify (TriangleOsc argA) p igraph nextP) => Change (SingleEdge p) (TriangleOsc argA) igraph (TriangleOsc AudioParameter)(SetterVal a, BinToInt p, Modify (Gain a b) p igraph nextP, Change nextP b igraph outInner) => Change (SingleEdge p) (Gain a b) igraph (Gain AudioParameter outInner)(BinToInt p, Modify (Speaker a) p igraph nextP, Change nextP a igraph outInner) => Change (SingleEdge p) (Speaker a) igraph (Speaker outInner)(BinToInt p, Modify (WaveShaper sym overshape argB) p igraph nextP, Change nextP argB igraph outInner) => Change (SingleEdge p) (WaveShaper sym overshape argB) igraph (WaveShaper sym overshape outInner)(BinToInt p, GetSkolemFromRecursiveArgument fa skolem, ToSkolemizedFunction fa skolem a, Modify (Recorder sym a) p igraph nextP, Change nextP a igraph outInner) => Change (SingleEdge p) (Recorder sym fa) igraph (Recorder sym outInner)
#ChangeP Source
class (Change (SingleEdge p) a graph b) <= ChangeP (p :: Ptr) (a :: Type) (graph :: Graph) (b :: Type) | p a graph -> b whereInternal helper class used for changing audio nodes.
Members
changeP :: forall env audio engine proof m res ptr changeBit skolems. Monad m => AudioInterpret audio engine => Proxy p -> a -> FrameT env audio engine proof m res (UniverseC ptr graph changeBit skolems) (UniverseC ptr graph (Succ changeBit) skolems) b
Instances
(Change (SingleEdge p) a graph b) => ChangeP p a graph b
#gets Source
gets :: forall m res a' a b currentIdx g changeBit skolems env audio engine proof. Monad m => AudioInterpret audio engine => AsGetter a' a => Changes a g b => a' -> FrameT env audio engine proof m res (UniverseC currentIdx g changeBit skolems) (UniverseC currentIdx g changeBit skolems) bRolls multiple gets into a single function.
#Changes Source
class Changes (a :: Type) (g :: Graph) (b :: Type) | a g -> b whereRolls multiple changes into a single increment of the changeBit. This is useful when writing loops. A loop may have many or no changes, and this allows all of them to be executed in a single transaction. As an example, see examples/wtk/WTK/TLP.purs. In the playKeys function, each finger may potentially change, and each change is rolled into the a value that is ultimately passed to changes.
Members
changes :: forall env audio engine proof m res ptr changeBit skolems. Monad m => AudioInterpret audio engine => a -> FrameT env audio engine proof m res (UniverseC ptr g changeBit skolems) (UniverseC ptr g (Succ changeBit) skolems) b
Instances
#ChangeInstructions Source
class (AudioInterpret audio engine) <= ChangeInstructions (audio :: Type) (engine :: Type) (g :: Type) (h :: Type) | g -> h whereInternal class used to make term-level instructions for audio unit changes.
Members
changeInstructions :: Partial => Int -> g -> AnAudioUnit -> h /\ (Array (audio -> engine)) /\ AnAudioUnit
Instances
(AudioInterpret audio engine, SetterVal argA, SetterVal argB) => ChangeInstructions audio engine (Allpass argA argB argC) (Allpass AudioParameter AudioParameter Unit)(AudioInterpret audio engine, SetterVal argA, SetterVal argB) => ChangeInstructions audio engine (Bandpass argA argB argC) (Bandpass AudioParameter AudioParameter Unit)(AudioInterpret audio engine, SetterVal argA) => ChangeInstructions audio engine (Constant argA) (Constant AudioParameter)(AudioInterpret audio engine) => ChangeInstructions audio engine (Convolver argA argB) (Convolver argA Unit)(AudioInterpret audio engine, SetterVal argA) => ChangeInstructions audio engine (Delay argA argB) (Delay AudioParameter Unit)(AudioInterpret audio engine, SetterVal argA, SetterVal argB, SetterVal argC, SetterVal argD, SetterVal argE) => ChangeInstructions audio engine (DynamicsCompressor argA argB argC argD argE argF) (DynamicsCompressor AudioParameter AudioParameter AudioParameter AudioParameter AudioParameter Unit)(AudioInterpret audio engine, SetterVal argA) => ChangeInstructions audio engine (Gain argA argB) (Gain AudioParameter Unit)(AudioInterpret audio engine, SetterVal argA, SetterVal argB) => ChangeInstructions audio engine (Highpass argA argB argC) (Highpass AudioParameter AudioParameter Unit)(AudioInterpret audio engine, SetterVal argA, SetterVal argB) => ChangeInstructions audio engine (Highshelf argA argB argC) (Highshelf AudioParameter AudioParameter Unit)(AudioInterpret audio engine, SetterVal argB) => ChangeInstructions audio engine (LoopBuf argB) (LoopBuf AudioParameter)(AudioInterpret audio engine, SetterVal argA, SetterVal argB) => ChangeInstructions audio engine (Lowpass argA argB argC) (Lowpass AudioParameter AudioParameter Unit)(AudioInterpret audio engine, SetterVal argA, SetterVal argB) => ChangeInstructions audio engine (Lowshelf argA argB argC) (Lowshelf AudioParameter AudioParameter Unit)(AudioInterpret audio engine) => ChangeInstructions audio engine Microphone Microphone(AudioInterpret audio engine, SetterVal argA, SetterVal argB) => ChangeInstructions audio engine (Notch argA argB argC) (Notch AudioParameter AudioParameter Unit)(AudioInterpret audio engine, SetterVal argA, SetterVal argB, SetterVal argC) => ChangeInstructions audio engine (Peaking argA argB argC argD) (Peaking AudioParameter AudioParameter AudioParameter Unit)(AudioInterpret audio engine, SetterVal argB) => ChangeInstructions audio engine (PeriodicOsc argB) (PeriodicOsc AudioParameter)(AudioInterpret audio engine, SetterVal argC) => ChangeInstructions audio engine (PlayBuf argC) (PlayBuf AudioParameter)(AudioInterpret audio engine) => ChangeInstructions audio engine (Recorder argA argB) (Recorder argA Unit)(AudioInterpret audio engine, SetterVal argA) => ChangeInstructions audio engine (SawtoothOsc argA) (SawtoothOsc AudioParameter)(AudioInterpret audio engine, SetterVal argA) => ChangeInstructions audio engine (SinOsc argA) (SinOsc AudioParameter)(AudioInterpret audio engine) => ChangeInstructions audio engine (Speaker argA) (Speaker Unit)(AudioInterpret audio engine, SetterVal argA) => ChangeInstructions audio engine (SquareOsc argA) (SquareOsc AudioParameter)(AudioInterpret audio engine, SetterVal argA) => ChangeInstructions audio engine (StereoPanner argA argB) (StereoPanner AudioParameter Unit)(AudioInterpret audio engine, SetterVal argA) => ChangeInstructions audio engine (TriangleOsc argA) (TriangleOsc AudioParameter)(AudioInterpret audio engine) => ChangeInstructions audio engine (WaveShaper argA argB argC) (WaveShaper argA argB Unit)
#ChangeInstruction Source
data ChangeInstruction a bConstructors
Instances
(Change p a graph b) => Changes (ChangeInstruction (Proxy p) a) graph (ChangeInstruction (Proxy p) b)
#Modify Source
class Modify (tag :: Type) (p :: Ptr) (i :: Graph) (nextP :: EdgeProfile) | tag p i -> nextPInternal helper class used for changing audio nodes.
Instances
(GraphToNodeList ig il, Modify' tag p il (NodeListCons x NodeListNil) nextP) => Modify tag p ig nextP
#Modify' Source
class Modify' (tag :: Type) (p :: Ptr) (i :: NodeList) (mod :: NodeList) (nextP :: EdgeProfile) | tag p i -> mod nextPInternal helper class used for changing audio nodes.
Instances
Modify' tag p NodeListNil NodeListNil NoEdge(ModifyRes tag p head headResAsList headPlist, Modify' tag p tail tailResAsList tailPlist, NodeListAppend headResAsList tailResAsList o, AltEdgeProfile headPlist tailPlist plist) => Modify' tag p (NodeListCons head tail) o plist
#ModifyRes Source
class ModifyRes (tag :: Type) (p :: Ptr) (i :: Node) (mod :: NodeList) (plist :: EdgeProfile) | tag p i -> mod plistInternal helper class used for changing audio nodes.
Instances
ModifyRes (Allpass a b c) ptr (NodeC (TAllpass ptr) edge) (NodeListCons (NodeC (TAllpass ptr) edge) NodeListNil) edgeModifyRes (Bandpass a b c) ptr (NodeC (TBandpass ptr) edge) (NodeListCons (NodeC (TBandpass ptr) edge) NodeListNil) edgeModifyRes (Constant a) ptr (NodeC (TConstant ptr) edge) (NodeListCons (NodeC (TConstant ptr) edge) NodeListNil) edgeModifyRes (Convolver a b) ptr (NodeC (TConvolver ptr name) edge) (NodeListCons (NodeC (TConvolver ptr name) edge) NodeListNil) edgeModifyRes (Delay a b) ptr (NodeC (TDelay ptr) edge) (NodeListCons (NodeC (TDelay ptr) edge) NodeListNil) edgeModifyRes (DynamicsCompressor a b c d e f) ptr (NodeC (TDynamicsCompressor ptr) edge) (NodeListCons (NodeC (TDynamicsCompressor ptr) edge) NodeListNil) edgeModifyRes (Gain a b) ptr (NodeC (TGain ptr) edge) (NodeListCons (NodeC (TGain ptr) edge) NodeListNil) edgeModifyRes (Highpass a b c) ptr (NodeC (THighpass ptr) edge) (NodeListCons (NodeC (THighpass ptr) edge) NodeListNil) edgeModifyRes (Highshelf a b c) ptr (NodeC (THighshelf ptr) edge) (NodeListCons (NodeC (THighshelf ptr) edge) NodeListNil) edgeModifyRes (LoopBuf a) ptr (NodeC (TLoopBuf ptr) edge) (NodeListCons (NodeC (TLoopBuf ptr) edge) NodeListNil) edgeModifyRes (Lowpass a b c) ptr (NodeC (TLowpass ptr) edge) (NodeListCons (NodeC (TLowpass ptr) edge) NodeListNil) edgeModifyRes (Lowshelf a b c) ptr (NodeC (TLowshelf ptr) edge) (NodeListCons (NodeC (TLowshelf ptr) edge) NodeListNil) edgeModifyRes Microphone ptr (NodeC (TMicrophone ptr) edge) (NodeListCons (NodeC (TMicrophone ptr) edge) NodeListNil) edgeModifyRes (Notch a b c) ptr (NodeC (TNotch ptr) edge) (NodeListCons (NodeC (TNotch ptr) edge) NodeListNil) edgeModifyRes (Peaking a b c d) ptr (NodeC (TPeaking ptr) edge) (NodeListCons (NodeC (TPeaking ptr) edge) NodeListNil) edgeModifyRes (PeriodicOsc a) ptr (NodeC (TPeriodicOsc ptr) edge) (NodeListCons (NodeC (TPeriodicOsc ptr) edge) NodeListNil) edgeModifyRes (PlayBuf a) ptr (NodeC (TPlayBuf ptr) edge) (NodeListCons (NodeC (TPlayBuf ptr) edge) NodeListNil) edgeModifyRes (Recorder a b) ptr (NodeC (TRecorder ptr name) edge) (NodeListCons (NodeC (TRecorder ptr name) edge) NodeListNil) edgeModifyRes (SawtoothOsc a) ptr (NodeC (TSawtoothOsc ptr) edge) (NodeListCons (NodeC (TSawtoothOsc ptr) edge) NodeListNil) edgeModifyRes (SinOsc a) ptr (NodeC (TSinOsc ptr) edge) (NodeListCons (NodeC (TSinOsc ptr) edge) NodeListNil) edgeModifyRes (Speaker a) ptr (NodeC (TSpeaker ptr) edge) (NodeListCons (NodeC (TSpeaker ptr) edge) NodeListNil) edgeModifyRes (SquareOsc a) ptr (NodeC (TSquareOsc ptr) edge) (NodeListCons (NodeC (TSquareOsc ptr) edge) NodeListNil) edgeModifyRes (StereoPanner a b) ptr (NodeC (TStereoPanner ptr) edge) (NodeListCons (NodeC (TStereoPanner ptr) edge) NodeListNil) edgeModifyRes (TriangleOsc a) ptr (NodeC (TTriangleOsc ptr) edge) (NodeListCons (NodeC (TTriangleOsc ptr) edge) NodeListNil) edgeModifyRes (WaveShaper a b c) ptr (NodeC (TWaveShaper ptr name) edge) (NodeListCons (NodeC (TWaveShaper ptr name) edge) NodeListNil) edgeModifyRes tag p n NodeListNil NoEdge
#SetterVal Source
class SetterVal a whereA term that can be coerced to an setter for a control-rate audio parameter.
Members
setterVal :: a -> AudioParameter -> AudioParameter
Instances
#change Source
change :: forall edge m res a b currentIdx graph changeBit skolems env audio engine proof. Monad m => AudioInterpret audio engine => TerminalIdentityEdge graph edge => Change edge a graph b => a -> FrameT env audio engine proof m res (UniverseC currentIdx graph changeBit skolems) (UniverseC currentIdx graph (Succ changeBit) skolems) bSimilar to change', but starting from the top-level node, which is usually a Speaker.
#get Source
get :: forall edge m res a' a b currentIdx graph changeBit skolems env audio engine proof. Monad m => AudioInterpret audio engine => TerminalIdentityEdge graph edge => AsGetter a' a => Change edge a graph b => a' -> FrameT env audio engine proof m res (UniverseC currentIdx graph changeBit skolems) (UniverseC currentIdx graph changeBit skolems) bSimilar to get', but starting from the top-level node, which is usually a Speaker.
#get' Source
get' :: forall edge m res a' a b currentIdx graph changeBit skolems env audio engine proof. Monad m => AudioInterpret audio engine => AsGetter a' a => Change edge a graph b => Proxy edge -> a' -> FrameT env audio engine proof m res (UniverseC currentIdx graph changeBit skolems) (UniverseC currentIdx graph changeBit skolems) bUses the incoming graph as a getter. Its values will be discarded and filled with the current values.
#changeAt Source
changeAt :: forall ptr a b env audio engine proof m res currentIdx graph changeBit skolems. Monad m => AudioInterpret audio engine => Change (SingleEdge ptr) a graph b => AudioUnitRef ptr -> a -> FrameT env audio engine proof m res (UniverseC currentIdx graph changeBit skolems) (UniverseC currentIdx graph (Succ changeBit) skolems) bSimilar to change', but starting from an AudioReference ptr (the result of cursor) instead of starting from an edge profile.
#getAt Source
getAt :: forall ptr a' a b env audio engine proof m res currentIdx graph changeBit skolems. Monad m => AudioInterpret audio engine => AsGetter a' a => Change (SingleEdge ptr) a graph b => AudioUnitRef ptr -> a' -> FrameT env audio engine proof m res (UniverseC currentIdx graph changeBit skolems) (UniverseC currentIdx graph changeBit skolems) bSimilar to get', but starting from an AudioReference ptr (the result of cursor) instead of starting from an edge profile.
- Modules
- FRP.
Event. MIDI - WAGS.
Change - WAGS.
Connect - WAGS.
Control. Functions - WAGS.
Control. MemoizedState - WAGS.
Control. Qualified - WAGS.
Control. Thunkable - WAGS.
Control. Types - WAGS.
Create - WAGS.
Cursor - WAGS.
Debug - WAGS.
Destroy - WAGS.
Disconnect - WAGS.
Graph. Constructors - WAGS.
Graph. Decorators - WAGS.
Graph. Getter - WAGS.
Graph. Optionals - WAGS.
Graph. Parameter - WAGS.
Interpret - WAGS.
Move - WAGS.
MoveNode - WAGS.
Rebase - WAGS.
Rendered - WAGS.
Run - WAGS.
Universe. AudioUnit - WAGS.
Universe. Bin - WAGS.
Universe. BinN - WAGS.
Universe. EdgeProfile - WAGS.
Universe. Graph - WAGS.
Universe. Node - WAGS.
Universe. Skolems - WAGS.
Universe. Universe - WAGS.
Util - WAGS.
Validation