Skip to content

Commit

Permalink
Bumps version
Browse files Browse the repository at this point in the history
  • Loading branch information
Mike Solomon committed Nov 1, 2021
1 parent 5182165 commit 1dd5d0a
Show file tree
Hide file tree
Showing 11 changed files with 99 additions and 84 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.5.8] - 2021-11-01

### Added

- splits `decodeAudioBufferFromUri` into two separate functions and changes the signature from Promise to Aff.

### Fixed

- upgrades to `arraybuffer` 12.0.0 to avoid breaking polyfill.

## [0.5.8] - 2021-10-29

### Fixed
Expand Down
1 change: 0 additions & 1 deletion examples.dhall
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ in conf
, "media-types"
, "web-file"
, "exceptions"
, "nullable"
, "profunctor-lenses"
]
}
3 changes: 1 addition & 2 deletions examples/atari-speaks/AtariSpeaks.purs
Original file line number Diff line number Diff line change
Expand Up @@ -168,8 +168,7 @@ handleAction = case _ of
H.liftAff $ toAffE $ contextResume audioCtx
unitCache <- H.liftEffect makeUnitCache
atar <-
H.liftAff $ toAffE
$ decodeAudioDataFromUri
H.liftAff $ decodeAudioDataFromUri
audioCtx
"https://freesound.org/data/previews/100/100981_1234256-lq.mp3"
let
Expand Down
16 changes: 4 additions & 12 deletions examples/drum-machine/DrumMachine.purs
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,11 @@ module WAGS.Example.DrumMachine where
import Prelude

import Control.Comonad.Cofree (Cofree, deferCofree, head, mkCofree, tail)
import Control.Promise (toAffE)
import Data.Foldable (for_)
import Data.Identity (Identity(..))
import Data.Int (floor, toNumber)
import Data.Maybe (Maybe(..))
import Data.Newtype (unwrap)
import Data.Nullable (null)
import Data.Tuple.Nested ((/\), type (/\))
import Effect (Effect)
import Effect.Aff (launchAff_)
Expand All @@ -24,7 +22,6 @@ import Halogen.Aff (awaitBody, runHalogenAff)
import Halogen.HTML as HH
import Halogen.HTML.Events as HE
import Halogen.VDom.Driver (runUI)
import Type.Proxy (Proxy(..))
import WAGS.Change (ichange)
import WAGS.Control.Functions.Graph (iloop, (@!>))
import WAGS.Control.Types (Frame0, Scene)
Expand Down Expand Up @@ -165,10 +162,9 @@ handleAction = case _ of
audioCtx <- H.liftEffect context
unitCache <- H.liftEffect makeUnitCache
ibuf <-
H.liftAff $ toAffE
$ decodeAudioDataFromUri
audioCtx
(head drumCf)
H.liftAff $ decodeAudioDataFromUri
audioCtx
(head drumCf)
rf <- H.liftEffect (Ref.new (unwrap (tail drumCf)))
bf <- H.liftEffect (Ref.new ibuf)
ivlsub <-
Expand All @@ -177,11 +173,7 @@ handleAction = case _ of
cf <- Ref.read rf
Ref.write (unwrap (tail cf)) rf
launchAff_ do
buf <-
toAffE
$ decodeAudioDataFromUri
audioCtx
(head cf)
buf <- decodeAudioDataFromUri audioCtx (head cf)
H.liftEffect $ Ref.write buf bf
let
ffiAudio =
Expand Down
6 changes: 1 addition & 5 deletions examples/kitchen-sink/KitchenSink.purs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import Prelude

import Control.Comonad.Cofree (Cofree, mkCofree)
import Control.Monad.Error.Class (class MonadThrow, throwError)
import Control.Promise (toAffE)
import Data.Array ((..))
import Data.Foldable (for_)
import Data.Int (toNumber)
Expand Down Expand Up @@ -106,10 +105,7 @@ render state = do

fetchBuffer :: (m Type -> Type). MonadAff m AudioContext String m BrowserAudioBuffer
fetchBuffer audioCtx addr =
H.liftAff $ toAffE
$ decodeAudioDataFromUri
audioCtx
addr
H.liftAff $ decodeAudioDataFromUri audioCtx addr

handleAction :: forall output m. MonadThrow Error m => MonadEffect m => MonadAff m => Action -> H.HalogenM State Action () output m Unit
handleAction = case _ of
Expand Down
4 changes: 1 addition & 3 deletions examples/skip-machine/SkipMachine.purs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import Control.Comonad (extract)
import Control.Comonad.Cofree (Cofree, mkCofree)
import Control.Comonad.Cofree.Class (unwrapCofree)
import Control.Plus (empty)
import Control.Promise (toAffE)
import Data.Array as Array
import Data.Foldable (foldl, for_)
import Data.Int (toNumber)
Expand Down Expand Up @@ -151,8 +150,7 @@ handleAction = case _ of
audioCtx <- H.liftEffect context
unitCache <- H.liftEffect makeUnitCache
hamlet <-
H.liftAff $ toAffE
$ decodeAudioDataFromUri
H.liftAff $ decodeAudioDataFromUri
audioCtx
"https://freesound.org/data/previews/50/50843_489520-hq.mp3"
let
Expand Down
4 changes: 1 addition & 3 deletions examples/subgraph/Subgraph.purs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ module WAGS.Example.Subgraph where
import Prelude

import Control.Comonad.Cofree (Cofree, mkCofree)
import Control.Promise (toAffE)
import Data.Foldable (for_)
import Data.Int (toNumber)
import Data.Maybe (Maybe(..))
Expand Down Expand Up @@ -137,8 +136,7 @@ handleAction = case _ of
audioCtx <- H.liftEffect context
unitCache <- H.liftEffect makeUnitCache
atar <-
H.liftAff $ toAffE
$ decodeAudioDataFromUri
H.liftAff $ decodeAudioDataFromUri
audioCtx
"https://freesound.org/data/previews/100/100981_1234256-lq.mp3"
let
Expand Down
4 changes: 1 addition & 3 deletions examples/tumult/Tumult.purs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ module WAGS.Example.Tumult where
import Prelude

import Control.Comonad.Cofree (Cofree, mkCofree)
import Control.Promise (toAffE)
import Data.Foldable (for_)
import Data.Maybe (Maybe(..))
import Data.Typelevel.Num (D1)
Expand Down Expand Up @@ -146,8 +145,7 @@ handleAction = case _ of
audioCtx <- H.liftEffect context
unitCache <- H.liftEffect makeUnitCache
shruti <-
H.liftAff $ toAffE
$ decodeAudioDataFromUri
H.liftAff $ decodeAudioDataFromUri
audioCtx
"https://freesound.org/data/previews/513/513742_153257-hq.mp3"
let
Expand Down
24 changes: 22 additions & 2 deletions packages.dhall
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,29 @@ in upstream
-------------------------------
-}
let upstream =
https://github.com/purescript/package-sets/releases/download/psc-0.14.4-20210919/packages.dhall sha256:03516fdd4f6d1bd6c9eb5e63cf3af3037bc079459117ab93eb85b6eb46e258a7
https://github.com/purescript/package-sets/releases/download/psc-0.14.4-20211030/packages.dhall sha256:5cd7c5696feea3d3f84505d311348b9e90a76c4ce3684930a0ff29606d2d816c

let overrides = {=}
let overrides =
{ arraybuffer =
{ dependencies =
[ "arraybuffer-types"
, "arrays"
, "effect"
, "float32"
, "functions"
, "gen"
, "maybe"
, "nullable"
, "prelude"
, "tailrec"
, "uint"
, "unfoldable"
]
, repo =
"https://github.com/purescript-contrib/purescript-arraybuffer.git"
, version = "v12.0.0"
}
}

let additions =
{ typelevel-peano =
Expand Down
80 changes: 38 additions & 42 deletions src/WAGS/Interpret.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
exports.context = function () {
return new (window.AudioContext || window.webkitAudioContext)();
};
exports.contextState = function(audioCtx) {
return function() {
exports.contextState = function (audioCtx) {
return function () {
return audioCtx.state;
}
}
exports.contextResume = function(audioCtx) {
return function() {
exports.contextResume = function (audioCtx) {
return function () {
return audioCtx.resume();
}
}
Expand Down Expand Up @@ -38,15 +38,15 @@ var workletSetter = function (unit, paramName, timeToSet, param) {
} else {
unit.parameters
.get(paramName)
[
param.transition === "NoRamp"
? "setValueAtTime"
: param.transition === "LinearRamp"
[
param.transition === "NoRamp"
? "setValueAtTime"
: param.transition === "LinearRamp"
? "linearRampToValueAtTime"
: param.transition === "ExponentialRamp"
? "exponentialRampToValueAtTime"
: "linearRampToValueAtTime"
](param.param, timeToSet + param.timeOffset);
? "exponentialRampToValueAtTime"
: "linearRampToValueAtTime"
](param.param, timeToSet + param.timeOffset);
}
}
};
Expand All @@ -65,10 +65,10 @@ var genericSetter = function (unit, name, timeToSet, param) {
param.transition === "NoRamp"
? "setValueAtTime"
: param.transition === "LinearRamp"
? "linearRampToValueAtTime"
: param.transition === "ExponentialRamp"
? "exponentialRampToValueAtTime"
: "linearRampToValueAtTime"
? "linearRampToValueAtTime"
: param.transition === "ExponentialRamp"
? "exponentialRampToValueAtTime"
: "linearRampToValueAtTime"
](param.param, timeToSet + param.timeOffset);
}
}
Expand Down Expand Up @@ -1557,33 +1557,29 @@ exports.decodeAudioDataFromBase64EncodedString = function (ctx) {
};
};
};
exports.decodeAudioDataFromUri = function (ctx) {
return function (s) {
return function () {
{
return fetch(s)
.then(
function (b) {
return b.arrayBuffer();
},
function (e) {
console.error("Error fetching buffer", e);
return Promise.reject(e);
}
)
.then(
function (b) {
return ctx.decodeAudioData(b);
},
function (e) {
console.error("Error decoding buffer", e);
return Promise.reject(e);
}
);
}
};
exports.fetchArrayBuffer = function (s) {
return function () {
{
return fetch(s)
.then(
function (b) {
return b.arrayBuffer();
},
function (e) {
console.error("Error fetching buffer", e);
return Promise.reject(e);
}
)
}
};
};
exports.decodeAudioDataFromArrayBuffer = function (ctx) {
return function (b) {
return function () {
return ctx.decodeAudioData(b);
}
}
};
exports.audioWorkletAddModule_ = function (ctx) {
return function (s) {
return function () {
Expand Down Expand Up @@ -1804,12 +1800,12 @@ exports.bufferNumberOfChannels = function (buffer) {
return buffer.numberOfChannels;
};
exports.constant0Hack = function (context) {
return function() {
return function () {
var constant = context.createConstantSource();
constant.offset.value = 0.0;
constant.connect(context.destination);
constant.start();
return function() {
return function () {
constant.stop();
constant.disconnect(context.destination);
}
Expand Down
31 changes: 20 additions & 11 deletions src/WAGS/Interpret.purs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ module WAGS.Interpret
, contextResume
, decodeAudioDataFromBase64EncodedString
, decodeAudioDataFromUri
, fetchArrayBuffer
, decodeAudioDataFromArrayBuffer
, defaultFFIAudio
, destroyUnit
, disconnectXFromY
Expand Down Expand Up @@ -122,7 +124,7 @@ import Prelude
import Control.Plus (empty)
import Control.Promise (Promise, toAffE)
import Data.Array as Array
import Data.ArrayBuffer.Types (Float32Array, Uint8Array)
import Data.ArrayBuffer.Types (Float32Array, Uint8Array, ArrayBuffer)
import Data.Either (Either(..))
import Data.FunctorWithIndex (mapWithIndex)
import Data.Lazy (defer)
Expand Down Expand Up @@ -202,7 +204,13 @@ foreign import mediaRecorderToUrl :: String -> (String -> Effect Unit) -> WebAPI
foreign import isTypeSupported :: String -> Effect Boolean

-- | Given an audio context and a URI, decode the content of the URI to an audio buffer.
foreign import decodeAudioDataFromUri :: WebAPI.AudioContext -> String -> Effect (Promise WebAPI.BrowserAudioBuffer)
decodeAudioDataFromUri :: WebAPI.AudioContext -> String -> Aff WebAPI.BrowserAudioBuffer
decodeAudioDataFromUri ctx s =
toAffE (fetchArrayBuffer s) >>= (toAffE <<< decodeAudioDataFromArrayBuffer ctx)

foreign import fetchArrayBuffer :: String -> Effect (Promise ArrayBuffer)

foreign import decodeAudioDataFromArrayBuffer :: WebAPI.AudioContext -> ArrayBuffer -> Effect (Promise WebAPI.BrowserAudioBuffer)

-- | Given an audio context and a base-64-encoded audio file, decode the content of the string to an audio buffer.
foreign import decodeAudioDataFromBase64EncodedString :: WebAPI.AudioContext -> String -> Effect (Promise WebAPI.BrowserAudioBuffer)
Expand Down Expand Up @@ -858,8 +866,8 @@ interpretInstruction = case _ of
SetBuffer ptr a -> setBuffer ptr a
SetConvolverBuffer ptr a -> setConvolverBuffer ptr a
SetPeriodicOsc ptr a -> case a of
Left a' -> setPeriodicOsc ptr a'
Right a' -> setPeriodicOscV ptr a'
Left a' -> setPeriodicOsc ptr a'
Right a' -> setPeriodicOscV ptr a'
SetOnOff ptr a -> setOnOff ptr a
SetBufferOffset ptr a -> setBufferOffset ptr a
SetLoopStart ptr a -> setLoopStart ptr a
Expand Down Expand Up @@ -1007,13 +1015,14 @@ instance safeToFFI_Oversample :: SafeToFFI Oversample String where
instance safeToFFI_FFIAudio :: SafeToFFI FFIAudioSnapshot FFIAudioSnapshot' where
safeToFFI (FFIAudioSnapshot x) = x

type AudioWorkletNodeOptionsFFI_ = { name :: String
, numberOfInputs :: Int
, numberOfOutputs :: Int
, outputChannelCount :: Array Int
, parameterData :: Object FFINumericAudioParameter
, processorOptions :: Foreign
}
type AudioWorkletNodeOptionsFFI_ =
{ name :: String
, numberOfInputs :: Int
, numberOfOutputs :: Int
, outputChannelCount :: Array Int
, parameterData :: Object FFINumericAudioParameter
, processorOptions :: Foreign
}

instance safeToFFI_AudioWorkletNodeOptions_ ::
SafeToFFI AudioWorkletNodeOptions_ AudioWorkletNodeOptionsFFI_ where
Expand Down

0 comments on commit 1dd5d0a

Please sign in to comment.