tidal 0.2 → 0.2.1
raw patch · 5 files changed
+84/−29 lines, 5 filesdep +transformers
Dependencies added: transformers
Files
- Dirt.hs +2/−8
- Stream.hs +10/−13
- doc/tidal.pandoc +70/−6
- doc/tidal.pdf binary
- tidal.cabal +2/−2
Dirt.hs view
@@ -47,14 +47,8 @@ } -myip = readProcess "./getip.pl" [] []-clockip = readProcess "./getclockip.pl" [] []--dirtstream name = do localip <- myip- remoteip <- clockip- let uniqname = localip ++ "-" ++ name- stream localip remoteip uniqname "127.0.0.1" 7771 dirt-kstream name = stream "127.0.0.1" "127.0.0.1" name "127.0.0.1" 7771 kriole+dirtstream name = stream "127.0.0.1" 7771 dirt+kstream name = stream "127.0.0.1" 7771 kriole dirtToColour :: OscPattern -> Pattern ColourD dirtToColour p = s
Stream.hs view
@@ -6,9 +6,7 @@ import Sound.OSC.FD import Sound.OpenSoundControl import Control.Applicative---import Network.Netclock.Client-import Tempo (Tempo, logicalTime)-import TempoClient (clocked)+import Tempo (Tempo, logicalTime, clocked) import Control.Concurrent import Control.Concurrent.MVar import Pattern@@ -91,26 +89,25 @@ applyShape' s m | hasRequired s m = Just $ Map.union m (defaultMap s) | otherwise = Nothing -start :: String -> String -> String -> String -> Int -> OscShape -> IO (MVar (OscPattern))-start client server name address port shape+start :: String -> Int -> OscShape -> IO (MVar (OscPattern))+start address port shape = do patternM <- newMVar silence putStrLn $ "connecting " ++ (show address) ++ ":" ++ (show port) s <- openUDP address port putStrLn $ "connected " let ot = (onTick s shape patternM) :: Tempo -> Int -> IO ()- --forkIO $ clocked name client server 1 ot- forkIO $ clocked server ot+ forkIO $ clocked ot return patternM -stream :: String -> String -> String -> String -> Int -> OscShape -> IO (OscPattern -> IO ())-stream client server name address port shape - = do patternM <- start client server name address port shape+stream :: String -> Int -> OscShape -> IO (OscPattern -> IO ())+stream address port shape + = do patternM <- start address port shape return $ \p -> do swapMVar patternM p return () -streamcallback :: (OscPattern -> IO ()) -> String -> String -> String -> String -> Int -> OscShape -> IO (OscPattern -> IO ())-streamcallback callback client server name address port shape - = do f <- stream client server name address port shape+streamcallback :: (OscPattern -> IO ()) -> String -> Int -> OscShape -> IO (OscPattern -> IO ())+streamcallback callback server port shape + = do f <- stream server port shape let f' p = do callback p f p return f'
doc/tidal.pandoc view
@@ -7,21 +7,80 @@ Great Good" (which has a free online version). Or, you could just try learning enough by playing around with Tidal. +## Installation++Tidal is developed under Linux, and although it should be possible to+run it under a different operating system, this has not yet been+tried.++### Installing Dirt+ Tidal does not include a synthesiser, but instead communicates with an external synthesiser using the Open Sound Control protocol. It has-been developed for use with a particular synthesiser called-"dirt". You'll need to run it with "jack audio".+been developed for use with a particular software sampler called+"dirt". You'll need to run it with "jack audio". Here's an example of+the commands needed to compile it under a debian-derived linux+distribution (including ubuntu and mint). -Currently about the only interface to Tidal is the emacs editor. To-install it you'll need to put two lines into your .emacs file like-this, change ~/projects/tidal/ to the location of your tidal folder:+ apt-get install build-essential libsndfile1-dev libsamplerate0-dev liblo-dev libjack-dev jackd git+ git clone https://github.com/yaxu/Dirt.git+ cd Dirt+ make clean; make +Then you'll have to start jack:++ jackd -d alsa &++If that doesn't work, you might well have something called+"pulseaudio" in control of your sound. In that case, this should work:++ /usr/bin/pasuspender -- jackd -d alsa &++And finally you should be able to start dirt with this:++ ./dirt &++### Tidal+++Tidal is embedded in the Haskell language, so you'll have to install+the haskell interpreter and some libraries, including tidal+itself. Under debian, you'd install haskell like this:++ sudo apt-get install ghc6 cabal-install++Or otherwise you could grab it from http://www.haskell.org/platform/++Once Haskell is installed, you can install tidal like this:+ cabal install tidal++### Emacs++Currently about the only interface to Tidal is the emacs+editor. Debian users can install emacs, along with its haskell+front-end, this way:++ sudo apt-get install emacs24 haskell-mode++To install the emacs interface to tidal, you'll need to edit a+configuration file in your home folder called `.emacs`. If it doesn't+exist, create it. Then, add the following, replacing+`~/projects/tidal` with the location of the `tidal.el` file.+ (add-to-list 'load-path "~/projects/tidal") (require 'tidal) -Now open a new file in your tidal folder, called something like+If tidal.el did not come with this document, you can grab it here:+ https://raw.github.com/yaxu/Tidal/master/tidal.el++### Testing, testing...++Now start emacs, and open a new file called something like "helloworld.tidal". To start tidal, you type `Ctrl-C` then `Ctrl-S`. +All being well you should now be able to start making some sounds,+lets start with some simple sequences.+ ## Sequences Tidal starts with nine connections to the dirt synthesiser, named from@@ -300,3 +359,8 @@ Plus more to be discovered! +# Acknowledgments++Special thanks to l'ull cec (http://lullcec.org) and hangar+(http://hangar.org) for supporting the documentation and release of+tidal as part of the ADDICTED2RANDOM project.
doc/tidal.pdf view
binary file changed (148730 → 156148 bytes)
tidal.cabal view
@@ -7,7 +7,7 @@ -- The package version. See the Haskell package versioning policy -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for -- standards guiding when and how versions should be incremented.-Version: 0.2+Version: 0.2.1 -- A short (one-line) description of the package. Synopsis: Pattern language for improvised music@@ -51,7 +51,7 @@ Exposed-modules: Strategies, Dirt, Pattern, Stream -- Packages needed in order to build this package.- Build-depends: base < 5, process, parsec, hosc == 0.13, hashable, colour, containers, time, websockets, text, mtl+ Build-depends: base < 5, process, parsec, hosc == 0.13, hashable, colour, containers, time, websockets, text, mtl, transformers -- Modules not exported by this package. -- Other-modules: