Skip to content

Instantly share code, notes, and snippets.

@lennart
Last active November 29, 2015 21:13
Show Gist options
  • Save lennart/5d04f06b45dffad360a9 to your computer and use it in GitHub Desktop.
Save lennart/5d04f06b45dffad360a9 to your computer and use it in GitHub Desktop.
Simple Tidal Interpreter using hint
import Sound.Tidal.Context
import System.IO
import Control.Monad
import Language.Haskell.Interpreter
main :: IO ()
main = do
s <- getContents
r <- runInterpreter (testTidal $ lines s)
case r of
Left err -> printInterpreterError err
Right ps -> putStrLn $ show ps
testTidal :: [String] -> Interpreter ([OscPattern])
testTidal exprs =
do
set [languageExtensions := [OverloadedStrings]]
setImportsQ [("Prelude", Nothing), ("Sound.Tidal.Context", Nothing), ("Data.Map", Nothing), ("Sound.OSC.FD", Nothing)]
mapM (f) exprs
where f expr = do say $ "compiling: " ++ expr
interpret expr (as :: OscPattern)
say :: String -> Interpreter ()
say = liftIO . putStrLn
printInterpreterError :: InterpreterError -> IO ()
printInterpreterError e = putStrLn $ "Oops... " ++ (show e)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment