packages feed

tidal-1.8.0: test/Sound/Tidal/ControlTest.hs

{-# LANGUAGE OverloadedStrings #-}

module Sound.Tidal.ControlTest where

import TestUtils
import Test.Microspec

import Prelude hiding ((<*), (*>))

import Sound.Tidal.Control
import Sound.Tidal.Core
import Sound.Tidal.Params
import Sound.Tidal.Pattern

run :: Microspec ()
run =
  describe "Sound.Tidal.Control" $ do

    describe "echo" $ do
      it "should echo the event by the specified time and multiply the gain factor" $ do
        compareP (Arc 0 1)
          (echo 2 0.25 0.5 $ s "bd" # gain "1")
          (stack [rotR 0 "bd" # gain 1, rotR 0.25 "bd" # gain 0.5])

    describe "echoWith" $ do
      it "should echo the event by the specified time and apply the specified function" $ do
        compareP (Arc 0 1)
          (echoWith 2 0.25 (|* speed 2) $ s "bd" # speed "1")
          (stack [rotR 0 "bd" # speed 1, rotR 0.25 "bd" # speed 2])

    describe "stutWith" $ do
      it "can mimic stut" $ do
        comparePD (Arc 0 1)
          (filterOnsets $ stutWith 4 0.25 (# gain 1) $ sound "bd")
          (filterOnsets $ stut 4 1 0.25 $ sound "bd")
        
    describe "splice" $ do
      it "can beatslice" $ do
        comparePD (Arc 0 1)
          (splice "4 8" "0 1" $ sound "bev")
          (begin "0 0.125" # end "0.25 0.25" # speed "0.5 0.25" # sound "bev" # unit "c")