packages feed

tidal 0.2 → 0.2.1

raw patch · 5 files changed

+84/−29 lines, 5 filesdep +transformers

Dependencies added: transformers

Files

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: