Skip to content

Commit

Permalink
Uses pure instead of bang
Browse files Browse the repository at this point in the history
  • Loading branch information
Mike Solomon committed Aug 10, 2022
1 parent 91f26d7 commit bdf42c9
Show file tree
Hide file tree
Showing 71 changed files with 493 additions and 516 deletions.
6 changes: 2 additions & 4 deletions examples/atari-speaks/AtariSpeaks.purs
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,9 @@ import Effect.Ref as Ref
import FRP.Behavior (sample_)
import FRP.Event (Event, bus, create, filterMap, keepLatest, memoize, sampleOn, subscribe)
import FRP.Event.Animate (animationFrameEvent)
import FRP.Event.Class (bang)
import Ocarina.Clock (WriteHead, fot, writeHead)
import Ocarina.Control (analyser, gain, loopBuf, speaker2)
import Ocarina.Core (Audible, bangOn, opticN)
import Ocarina.Core (opticN, bangOn)
import Ocarina.Example.Utils (RaiseCancellation)
import Ocarina.Interpret (close, context, decodeAudioDataFromUri, effectfulAudioInterpret, getByteFrequencyData, makeFFIAudioSnapshot)
import Ocarina.Properties (loopEnd, loopStart, playbackRate)
Expand Down Expand Up @@ -98,7 +96,7 @@ atariSpeaks
. BrowserAudioBuffer
-> RaiseCancellation
-> Event (Domable Effect lock payload)
atariSpeaks atar rc = keepLatest $ bus \push -> lcmap (alt (bang TurnOn)) \event ->
atariSpeaks atar rc = keepLatest $ bus \push -> lcmap (alt (pure TurnOn)) \event ->
memoize animationFrameEvent \afe ->
DOM.div_
[ DOM.h1_ [ text_ "Atari speaks" ]
Expand Down Expand Up @@ -127,7 +125,7 @@ atariSpeaks atar rc = keepLatest $ bus \push -> lcmap (alt (bang TurnOn)) \event

unsub <- subscribe
( sampleOn
(analyserE.event <|> bang Nothing)
(analyserE.event <|> pure Nothing)
(map Tuple audioE)
)
( \(Tuple audio analyser) -> do
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/Allpass.purs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ module Ocarina.Example.Docs.AudioUnits.Allpass where

import Prelude

import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (makePursx', nut)
import Effect (Effect)
import FRP.Event (Event)
Expand Down
89 changes: 45 additions & 44 deletions examples/docs/AudioUnits/Analyser.purs
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,15 @@ import Data.Vec (Vec, (+>))
import Data.Vec as V
import Deku.Attribute ((:=))
import Deku.Control (text)
import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.DOM as D
import Deku.Pursx (nut, (~~))
import Effect (Effect, foreachE)
import Effect.Ref (modify_, new, read, write)
import FRP.Event (class IsEvent, Event, bus, create, sampleOn_, subscribe)
import FRP.Event.Animate (animationFrameEvent)
import FRP.Event.Class (bang)

import Type.Proxy (Proxy(..))
import Ocarina.Control (analyser_, loopBuf, speaker2)
import Ocarina.Core (Po2(..))
Expand Down Expand Up @@ -101,7 +102,7 @@ analyserEx ccb _ ev = px ~~
in
D.div_
[ D.button
( (bang (D.Style := "cursor: pointer;")) <|>
( (pure (D.Style := "cursor: pointer;")) <|>
( clickCb ccb (Right >>> push)
(\ctx -> decodeAudioDataFromUri ctx "https://freesound.org/data/previews/320/320873_527080-hq.mp3")
( \ctx atar -> do
Expand Down Expand Up @@ -181,47 +182,47 @@ analyserEx ccb _ ev = px ~~
)
]
-- grid-auto-rows: 20px;
, D.div (bang $ D.Style := "display: grid; grid-template-columns: repeat(8, 1fr); grid-auto-rows: 20px;")
[ D.div ((bang $ D.Style := bgWhite) <|> (mkSt d0 d0 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d1 d0 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d2 d0 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d3 d0 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d4 d0 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d5 d0 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d6 d0 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d7 d0 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d0 d1 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d1 d1 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d2 d1 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d3 d1 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d4 d1 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d5 d1 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d6 d1 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d7 d1 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d0 d2 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d1 d2 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d2 d2 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d3 d2 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d4 d2 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d5 d2 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d6 d2 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d7 d2 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d0 d3 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d1 d3 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d2 d3 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d3 d3 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d4 d3 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d5 d3 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d6 d3 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d7 d3 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d0 d4 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d1 d4 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d2 d4 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d3 d4 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d4 d4 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d5 d4 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d6 d4 aEv)) []
, D.div ((bang $ D.Style := bgWhite) <|> (mkSt d7 d4 aEv)) []
, D.div (pure $ D.Style := "display: grid; grid-template-columns: repeat(8, 1fr); grid-auto-rows: 20px;")
[ D.div ((pure $ D.Style := bgWhite) <|> (mkSt d0 d0 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d1 d0 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d2 d0 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d3 d0 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d4 d0 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d5 d0 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d6 d0 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d7 d0 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d0 d1 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d1 d1 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d2 d1 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d3 d1 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d4 d1 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d5 d1 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d6 d1 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d7 d1 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d0 d2 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d1 d2 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d2 d2 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d3 d2 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d4 d2 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d5 d2 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d6 d2 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d7 d2 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d0 d3 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d1 d3 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d2 d3 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d3 d3 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d4 d3 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d5 d3 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d6 d3 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d7 d3 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d0 d4 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d1 d4 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d2 d4 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d3 d4 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d4 d4 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d5 d4 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d6 d4 aEv)) []
, D.div ((pure $ D.Style := bgWhite) <|> (mkSt d7 d4 aEv)) []
]
]
)
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/Bandpass.purs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ module Ocarina.Example.Docs.AudioUnits.Bandpass where

import Prelude

import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (makePursx', nut)
import Effect (Effect)
import FRP.Event (Event)
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/Compression.purs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ module Ocarina.Example.Docs.AudioUnits.Compression where

import Prelude

import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (nut, (~~))
import Effect (Effect)
import FRP.Event (Event)
Expand Down
11 changes: 6 additions & 5 deletions examples/docs/AudioUnits/Constant.purs
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@ import Control.Alt ((<|>))
import Data.Array ((..))
import Data.FunctorWithIndex (mapWithIndex)
import Deku.Control (text_)
import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (nut, (~~))
import Effect (Effect)
import FRP.Event (Event)
import FRP.Event.Class (bang)

import Type.Proxy (Proxy(..))
import Ocarina.Control (gain_, constant)
import Ocarina.Core (AudioEnvelope(..), bangOn)
Expand All @@ -24,7 +25,7 @@ px =
<h2 id="constant">Constant value</h2>
<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/ConstantSourceNode">Constant values</a>, or DC offset, is a way to output an unchanging stream of values. This is only really useful when testing the performance of speakers or microphones and/or when working with a custom audio node that supports constant streaming values. Note that the constant source node in the web audio API can <i>also</i> be used to control audio parameters. Ocarina uses this feature of constant nodes under the hood to optimize certain computations.</p>
<p>The following example abuses a constant audio node by turning it into a gnarly inpulse generator. We'll learn about the tie fighter symbol <code>~tf~</code> and the <code>bang</code> in the next section on Events. Kids, don't try this at home!</p>
<p>The following example abuses a constant audio node by turning it into a gnarly inpulse generator. We'll learn about the tie fighter symbol <code>~tf~</code> and the <code>pure</code> in the next section on Events. Kids, don't try this at home!</p>
<pre><code>~txt~</code></pre>
Expand All @@ -42,7 +43,7 @@ constantEx ccb _ ev = px ~~
[ gain_ 0.5
[ constant 0.0
( bangOn <|>
( bang $ offset $ AudioEnvelope
( pure $ offset $ AudioEnvelope
{ d: 5.0
, o: 0.1
, p: 0 .. 1920 # mapWithIndex
Expand All @@ -60,7 +61,7 @@ constantEx ccb _ ev = px ~~
[ gain_ 0.5
[ constant 0.0
( bangOn <|>
( bang $ offset $ AudioEnvelope
( pure $ offset $ AudioEnvelope
{ d: 5.0
, o: 0.1
, p: 0 .. 1920 # mapWithIndex
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/Convolution.purs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ module Ocarina.Example.Docs.AudioUnits.Convolution where

import Prelude

import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (nut, (~~))
import Effect (Effect)
import FRP.Event (Event)
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/Delay.purs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ module Ocarina.Example.Docs.AudioUnits.Delay where

import Prelude

import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (makePursx', nut)
import Effect (Effect)
import FRP.Event (Event)
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/Gain.purs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ module Ocarina.Example.Docs.AudioUnits.Gain where

import Prelude

import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (nut, (~~))
import Effect (Effect)
import FRP.Event (Event)
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/Highpass.purs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ module Ocarina.Example.Docs.AudioUnits.Highpass where

import Prelude

import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (nut, (~~))
import Effect (Effect)
import FRP.Event (Event)
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/Highshelf.purs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ module Ocarina.Example.Docs.AudioUnits.Highshelf where

import Prelude

import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (nut, (~~))
import Effect (Effect)
import FRP.Event (Event)
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/IIRFilter.purs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import Prelude

import Data.Tuple.Nested ((/\))
import Data.FastVect.FastVect ((:), empty)
import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (nut, (~~))
import Effect (Effect)
import FRP.Event (Event)
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/LoopBuf.purs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ module Ocarina.Example.Docs.AudioUnits.LoopBuf where

import Prelude

import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (makePursx', nut)
import Effect (Effect)
import FRP.Event (Event)
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/Lowpass.purs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ module Ocarina.Example.Docs.AudioUnits.Lowpass where

import Prelude

import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (nut, (~~))
import Effect (Effect)
import FRP.Event (Event)
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/Lowshelf.purs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ module Ocarina.Example.Docs.AudioUnits.Lowshelf where

import Prelude

import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (nut, (~~))
import Effect (Effect)
import FRP.Event (Event)
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/Microphone.purs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ module Ocarina.Example.Docs.AudioUnits.Microphone where
import Prelude

import Data.Maybe (Maybe(..))
import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (makePursx', nut)
import Effect (Effect)
import FRP.Event (Event)
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/Notch.purs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ module Ocarina.Example.Docs.AudioUnits.Notch where

import Prelude

import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (nut, (~~))
import Effect (Effect)
import FRP.Event (Event)
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/Peaking.purs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ module Ocarina.Example.Docs.AudioUnits.Peaking where

import Prelude

import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (nut, (~~))
import Effect (Effect)
import FRP.Event (Event)
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/PeriodicOsc.purs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import Prelude

import Data.Tuple.Nested ((/\))
import Data.Vec (empty, (+>))
import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (nut, (~~))
import Effect (Effect)
import FRP.Event (Event)
Expand Down
3 changes: 2 additions & 1 deletion examples/docs/AudioUnits/PlayBuf.purs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ module Ocarina.Example.Docs.AudioUnits.PlayBuf where

import Prelude

import Deku.Core (Domable, envy)
import Deku.Core (Domable)
import Bolson.Core (envy)
import Deku.Pursx (nut, (~~))
import Effect (Effect)
import FRP.Event (Event)
Expand Down
Loading

0 comments on commit bdf42c9

Please sign in to comment.