WAGS.Rebase
- Package
- purescript-wags
- Repository
- mikesol/purescript-wags
#Rebase' Source
class Rebase' plA plB rbp pA ptrA graphA pB ptrB graphB where
Members
rebase' :: forall env audio engine proof m res changeBit skolems. Monad m => AudioInterpret audio engine => Proxy plA -> Proxy plB -> rbp -> Proxy pA -> Proxy ptrA -> Proxy graphA -> Proxy pB -> Proxy ptrB -> Proxy graphB -> FrameT env audio engine proof m res (UniverseC ptrA graphA changeBit skolems) (UniverseC ptrB graphB changeBit skolems) AFT
Instances
Rebase' rblA rblB RebaseProof NoEdge ptrA graphA NoEdge ptrB graphB
(Rebase' rblA rblB RebaseProof (SingleEdge pA) ptrA graphA (SingleEdge pB) ptrB graphB, Rebase' rblA rblB RebaseProof (ManyEdges aA bA) ptrA graphA (ManyEdges aB bB) ptrB graphB) => Rebase' rblA rblB RebaseProof (ManyEdges pA (PtrListCons aA bA)) ptrA graphA (ManyEdges pB (PtrListCons aB bB)) ptrB graphB
(Rebase' rblA rblB RebaseProof (SingleEdge pA) ptrA gA (SingleEdge pB) ptrB gB) => Rebase' rblA rblB RebaseProof (ManyEdges pA PtrListNil) ptrA gA (ManyEdges pB PtrListNil) ptrB gB
(RebaseCheck' rblA rblB RebaseProof (SingleEdge pA) ptrA graphA (SingleEdge pB) ptrB graphB) => Rebase' rblA rblB RebaseProof (SingleEdge pA) ptrA graphA (SingleEdge pB) ptrB graphB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TAllpass pA) eA) ptrA gA (NodeC (TAllpass pB) eB) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TBandpass pA) eA) ptrA gA (NodeC (TBandpass pB) eB) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TConstant pA) NoEdge) ptrA gA (NodeC (TConstant pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TConvolver pA name) eA) ptrA gA (NodeC (TConvolver pB name) eB) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TDelay pA) eA) ptrA gA (NodeC (TDelay pB) eB) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TDynamicsCompressor pA) eA) ptrA gA (NodeC (TDynamicsCompressor pB) eB) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TGain pA) eA) ptrA gA (NodeC (TGain pB) eB) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (THighpass pA) eA) ptrA gA (NodeC (THighpass pB) eB) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (THighshelf pA) eA) ptrA gA (NodeC (THighshelf pB) eB) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TLoopBuf pA) NoEdge) ptrA gA (NodeC (TLoopBuf pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TLowpass pA) eA) ptrA gA (NodeC (TLowpass pB) eB) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TLowshelf pA) eA) ptrA gA (NodeC (TLowshelf pB) eB) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TMicrophone pA) NoEdge) ptrA gA (NodeC (TMicrophone pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TNotch pA) eA) ptrA gA (NodeC (TNotch pB) eB) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TPeaking pA) eA) ptrA gA (NodeC (TPeaking pB) eB) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TPeriodicOsc pA) NoEdge) ptrA gA (NodeC (TPeriodicOsc pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TPlayBuf pA) NoEdge) ptrA gA (NodeC (TPlayBuf pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TRecorder pA name) eA) ptrA gA (NodeC (TRecorder pB name) eB) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TSawtoothOsc pA) NoEdge) ptrA gA (NodeC (TSawtoothOsc pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TSinOsc pA) NoEdge) ptrA gA (NodeC (TSinOsc pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TSpeaker pA) eA) ptrA gA (NodeC (TSpeaker pB) eB) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TSquareOsc pA) NoEdge) ptrA gA (NodeC (TSquareOsc pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TStereoPanner pA) eA) ptrA gA (NodeC (TStereoPanner pB) eB) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TTriangleOsc pA) NoEdge) ptrA gA (NodeC (TTriangleOsc pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TWaveShaper pA name) eA) ptrA gA (NodeC (TWaveShaper pB name) eB) ptrB gB
#RebaseCheck' Source
class RebaseCheck' plA plB rbp pA ptrA graphA pB ptrB graphB where
Members
rebaseCheck' :: forall env audio engine proof m res changeBit skolems. Monad m => AudioInterpret audio engine => Proxy plA -> Proxy plB -> rbp -> Proxy pA -> Proxy ptrA -> Proxy graphA -> Proxy pB -> Proxy ptrB -> Proxy graphB -> FrameT env audio engine proof m res (UniverseC ptrA graphA changeBit skolems) (UniverseC ptrB graphB changeBit skolems) AFT
Instances
(GraphToNodeList gA nlA, LookupNL NodeListNil pA nlA (NodeListCons nodeA NodeListNil), GraphToNodeList gB nlB, LookupNL NodeListNil pB nlB (NodeListCons nodeB NodeListNil), PtrInPtrList False pA rblA tfA, PtrInPtrList False pB rblB tfB, RebaseCont' tfA tfB pA pB rblA rblB RebaseProof nodeA ptrA gA nodeB ptrB gB) => RebaseCheck' rblA rblB RebaseProof (SingleEdge pA) ptrA gA (SingleEdge pB) ptrB gB
#RebaseCont' Source
class RebaseCont' foundA foundB xpA xpB plA plB rbp pA ptrA graphA pB ptrB graphB where
Members
rebaseCont' :: forall env audio engine proof m res changeBit skolems. Monad m => AudioInterpret audio engine => Proxy foundA -> Proxy foundB -> Proxy xpA -> Proxy xpB -> Proxy plA -> Proxy plB -> rbp -> Proxy pA -> Proxy ptrA -> Proxy graphA -> Proxy pB -> Proxy ptrB -> Proxy graphB -> FrameT env audio engine proof m res (UniverseC ptrA graphA changeBit skolems) (UniverseC ptrB graphB changeBit skolems) AFT
Instances
RebaseCont' True True ptrA ptrB rblA rblB RebaseProof a b c d e f
(Rebase' (PtrListCons ptrA a) (PtrListCons ptrB b) RebaseProof d e f g h i) => RebaseCont' False False ptrA ptrB a b RebaseProof d e f g h i
#rebase Source
rebase :: forall env audio engine proof m res changeBit skolems edgeA idxA graphA edgeB idxB graphB. BinToInt idxA => BinToInt idxB => Monad m => AudioInterpret audio engine => TerminalIdentityEdge graphA edgeA => TerminalIdentityEdge graphB edgeB => Rebase' PtrListNil PtrListNil RebaseProof edgeA idxA graphA edgeB idxB graphB => Proxy idxA -> Proxy graphA -> Proxy idxB -> Proxy graphB -> FrameT env audio engine proof m res (UniverseC idxA graphA changeBit skolems) (UniverseC idxB graphB changeBit skolems) Unit
Rebase an Universe from iA
to iB
.
Rebasing is used when you have an audio graph that goes through a series of mutations and winds up in the same state as before but with different pointers to audio nodes. For example, if you remove a node and add a node back in the same place with the same content, the universe will be semantically equivalent to the previous one but the type will be different because the pointers are different. Rebasing takes the type from the output and "resets" it to the input.
As an example, imagine that you have a function that mutates an audio graph through the following stages:
TSpeaker D0 (TSinOsc D1 /\ TSinOsc D2 /\ Unit)
TSpeaker D0 (TSinOsc D2 /\ Unit)
TSpeaker D0 (TSinOsc D3 /\ TSinOsc D2 /\ Unit)
In this case, the output graph is topologically similar to the input graph, but a function that
accepts the input type of TSpeaker D0 (TSinOsc D1 /\ TSinOsc D2 /\ Unit)
would not accept the
input type of TSpeaker D0 (TSinOsc D3 /\ TSinOsc D2 /\ Unit)
because D3
is not the same type as
D1
. In this instance, rebase
will reset the output type back to the input type. If the rebase
operation is attempted on graphs that are not topologically equivalent, a compile-time error will
occur.
Rebasing is useful if you want to call a function recursively. In that case, the input type needs to be the same each time the function is called, and rebase brings an audio graph back to the original type when possible.
Rebasing only makes sense for functions that need to accommodate different loops.
In the case of simpler loops, a similar effect can be achieved by making pointers polymorphic,
ie forall ptr. TSpeaker D0 (TSinOsc ptr /\ TSinOsc D2 /\ Unit)
.
#ResetSig Source
type ResetSig i1 g1 = forall env audio engine proof m res cb e0 i0 g0 e1. BinToInt i0 => BinToInt i1 => Monad m => AudioInterpret audio engine => TerminalIdentityEdge g0 e0 => TerminalIdentityEdge g1 e1 => Rebase' PtrListNil PtrListNil RebaseProof e0 i0 g0 e1 i1 g1 => FrameT env audio engine proof m res (UniverseC i0 g0 cb SkolemListNil) (UniverseC i1 g1 cb SkolemListNil) Unit
Signature for the reset operation for index i1
and graph g1
.
#RebaseProof Source
data RebaseProof
Instances
Rebase' rblA rblB RebaseProof NoEdge ptrA graphA NoEdge ptrB graphB
(Rebase' rblA rblB RebaseProof (SingleEdge pA) ptrA graphA (SingleEdge pB) ptrB graphB, Rebase' rblA rblB RebaseProof (ManyEdges aA bA) ptrA graphA (ManyEdges aB bB) ptrB graphB) => Rebase' rblA rblB RebaseProof (ManyEdges pA (PtrListCons aA bA)) ptrA graphA (ManyEdges pB (PtrListCons aB bB)) ptrB graphB
(Rebase' rblA rblB RebaseProof (SingleEdge pA) ptrA gA (SingleEdge pB) ptrB gB) => Rebase' rblA rblB RebaseProof (ManyEdges pA PtrListNil) ptrA gA (ManyEdges pB PtrListNil) ptrB gB
(RebaseCheck' rblA rblB RebaseProof (SingleEdge pA) ptrA graphA (SingleEdge pB) ptrB graphB) => Rebase' rblA rblB RebaseProof (SingleEdge pA) ptrA graphA (SingleEdge pB) ptrB graphB
(GraphToNodeList gA nlA, LookupNL NodeListNil pA nlA (NodeListCons nodeA NodeListNil), GraphToNodeList gB nlB, LookupNL NodeListNil pB nlB (NodeListCons nodeB NodeListNil), PtrInPtrList False pA rblA tfA, PtrInPtrList False pB rblB tfB, RebaseCont' tfA tfB pA pB rblA rblB RebaseProof nodeA ptrA gA nodeB ptrB gB) => RebaseCheck' rblA rblB RebaseProof (SingleEdge pA) ptrA gA (SingleEdge pB) ptrB gB
RebaseCont' True True ptrA ptrB rblA rblB RebaseProof a b c d e f
(Rebase' (PtrListCons ptrA a) (PtrListCons ptrB b) RebaseProof d e f g h i) => RebaseCont' False False ptrA ptrB a b RebaseProof d e f g h i
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TAllpass pA) eA) ptrA gA (NodeC (TAllpass pB) eB) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TBandpass pA) eA) ptrA gA (NodeC (TBandpass pB) eB) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TConstant pA) NoEdge) ptrA gA (NodeC (TConstant pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TConvolver pA name) eA) ptrA gA (NodeC (TConvolver pB name) eB) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TDelay pA) eA) ptrA gA (NodeC (TDelay pB) eB) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TDynamicsCompressor pA) eA) ptrA gA (NodeC (TDynamicsCompressor pB) eB) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TGain pA) eA) ptrA gA (NodeC (TGain pB) eB) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (THighpass pA) eA) ptrA gA (NodeC (THighpass pB) eB) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (THighshelf pA) eA) ptrA gA (NodeC (THighshelf pB) eB) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TLoopBuf pA) NoEdge) ptrA gA (NodeC (TLoopBuf pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TLowpass pA) eA) ptrA gA (NodeC (TLowpass pB) eB) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TLowshelf pA) eA) ptrA gA (NodeC (TLowshelf pB) eB) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TMicrophone pA) NoEdge) ptrA gA (NodeC (TMicrophone pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TNotch pA) eA) ptrA gA (NodeC (TNotch pB) eB) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TPeaking pA) eA) ptrA gA (NodeC (TPeaking pB) eB) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TPeriodicOsc pA) NoEdge) ptrA gA (NodeC (TPeriodicOsc pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TPlayBuf pA) NoEdge) ptrA gA (NodeC (TPlayBuf pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TRecorder pA name) eA) ptrA gA (NodeC (TRecorder pB name) eB) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TSawtoothOsc pA) NoEdge) ptrA gA (NodeC (TSawtoothOsc pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TSinOsc pA) NoEdge) ptrA gA (NodeC (TSinOsc pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TSpeaker pA) eA) ptrA gA (NodeC (TSpeaker pB) eB) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TSquareOsc pA) NoEdge) ptrA gA (NodeC (TSquareOsc pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TStereoPanner pA) eA) ptrA gA (NodeC (TStereoPanner pB) eB) ptrB gB
(BinToInt pA, BinToInt pB) => Rebase' rblA rblB RebaseProof (NodeC (TTriangleOsc pA) NoEdge) ptrA gA (NodeC (TTriangleOsc pB) NoEdge) ptrB gB
(BinToInt pA, BinToInt pB, Rebase' rblA rblB RebaseProof eA ptrA gA eB ptrB gB) => Rebase' rblA rblB RebaseProof (NodeC (TWaveShaper pA name) eA) ptrA gA (NodeC (TWaveShaper pB name) eB) ptrB gB
- 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