Coder Social home page Coder Social logo

tidalcycles / tidal Goto Github PK

View Code? Open in Web Editor NEW
2.1K 77.0 249.0 13.71 MB

Pattern language

Home Page: http://tidalcycles.org/

License: GNU General Public License v3.0

Haskell 7.28% Emacs Lisp 0.14% Makefile 0.86% TeX 0.03% Perl 0.63% Shell 0.04% SuperCollider 0.02% CMake 0.26% Python 0.10% C++ 89.29% C 0.21% M4 0.06% XSLT 0.89% HTML 0.17% Nix 0.03%
livecoding algorave pattern haskell language dsl kairotic live-coding

tidal's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tidal's Issues

install-linux.sh can't find desktop folder on non-english systems

https://github.com/tidalcycles/Tidal/blob/master/doc/install-linux.sh

./install-linux.sh: lína 53: cd: /home/johannesg/Desktop: No such file or directory    

The install-linux.sh script fails on the last few lines (line 53) because of it trying to cd into the desktop. Normally this would work but on Linux distros with other languages the folders in the home directory often have a non-english name. In my case desktop is "Skjáborð". (Icelandic)

cd ~/Desktop

Isn't there some environment variable out there to refer to the Desktop directory, no matter its name?

tidal streams should process at a fixed rate per second

Currently do it at a fixed rate per cycle, which means if cps is low, it takes a long time for changes to patterns to take effect.
It would still be nice if changes could be quantised, but this could be done with a transition function.

Manipulation of time in a pattern monad needs work

For example this transition is not at all smooth:

d1 $ do i <- slow 16 $ scale 0.1 16 sine1
      density (realToFrac i) $ sound "bd" #  cut "1"

It would be good if risset rhythms etc could be specified in a similar way, but there is something wrong somewhere..

Tidal websocket API

Hello!

I wish to be able to send code to tidal and receive any error messages over some API. Possibly a Haskell API if something language agnostic is too difficult.

Does this exist? Or could you recommend an approach for implementing this?

Thanks

scsynth + tidal

Hi there,

I would like to use Tidal to build patterns to play via dirt and play synths via scsynth, both with the same clock but not necessarily via the same output.

How would one sync Tidal's clock to that of scsynth? Is this currently possible, or what has to be done to make this work?

best regards,

Lennart

Sample playback sync "drift" in OS X

I've mostly used tidal on #! (CrunchBang) Linux with no problems except for my own lack of expertise in emacs. Yesterday morning I successfully installed tidal, dirt et al. on OS X Mavericks [10.9] and have been using it in the terminal. (I prefer the -nw mode of emacs; more straightforward.)

However, I've noticed that after 15-20 minutes of use, sample playback starts to drift out of sync - for instance, a simple rhythm like house [sn house] becomes something more like house [sn house ~] - something like 6/4 time rather than 4/4.

I'm not sure that this is necessarily a problem with tidal - I don't know what handles synchronisation. However, tidal and dirt are both at the same version on #! and OS X - respectively, cabal tidal 0.2.13 and tidalcycles/Dirt@4da850a - so I wonder if the issue may be with jackd or the coreaudio backend?

I will continue using OS X as my "scratch" for now, and record on #!...

missing zlib dependency on install

While running cabal install tidal I received an error about a missing zlib dependency. This was on a fresh debian environment. I was able to resolve it with sudo apt-get install zlib1g-dev, but I thought I'd create an issue so that it can be added to the docs. I can do a PR later when I get time, unless anyone else wants to resolve it.

`cabal install tidal` failure

When I run cabal install tidal I get the following error...

Resolving dependencies...
Configuring mersenne-random-pure64-0.2.1.0...
Building mersenne-random-pure64-0.2.1.0...
Failed to install mersenne-random-pure64-0.2.1.0
Build log ( /home/jesse/.cabal/logs/mersenne-random-pure64-0.2.1.0.log ):
Configuring mersenne-random-pure64-0.2.1.0...
Building mersenne-random-pure64-0.2.1.0...
Preprocessing library mersenne-random-pure64-0.2.1.0...
[1 of 4] Compiling System.Random.Mersenne.Pure64.Base ( dist/build/System/Random/Mersenne/Pure64/Base.hs, dist/build/System/Random/Mersenne/Pure64/Base.o )
[2 of 4] Compiling System.Random.Mersenne.Pure64.Internal ( System/Random/Mersenne/Pure64/Internal.hs, dist/build/System/Random/Mersenne/Pure64/Internal.o )
[3 of 4] Compiling System.Random.Mersenne.Pure64.MTBlock ( System/Random/Mersenne/Pure64/MTBlock.hs, dist/build/System/Random/Mersenne/Pure64/MTBlock.o )
[4 of 4] Compiling System.Random.Mersenne.Pure64 ( System/Random/Mersenne/Pure64.hs, dist/build/System/Random/Mersenne/Pure64.o )

System/Random/Mersenne/Pure64.hs:64:50:
    Not in scope: ‘diffTimeToPicoseconds’
cabal: Error: some packages failed to install:
mersenne-random-pure64-0.2.1.0 failed during the building phase. The exception
was:
ExitFailure 1
tidal-0.8 depends on mersenne-random-pure64-0.2.1.0 which failed to install.

My system is Ubuntu 15.10, thanks

Cabal install

The basic 'brew install cabal-install' is producing a cabal that won't run on OS X Yosemite. It seems to work better if you install from source:

brew install --build-from-source cabal-install

Found the suggestion here:
Homebrew/legacy-homebrew#33314

I just thought you might want to update your install-osx.md!

preplace (and general prrw) signature/parsing issue

As Lennart pointed out on Slack, I believe some other 0.7 changes broke preplace. The issue is that the a typical usage is d1 $ sound $ preplace (1,1) "x [~ x] x x" "bd sn". But the parser can no longer figure out what type of Pattern "x [~ x] x x" is. This might be related to magical autoparsing of note names into MIDI notenumbers, but maybe not, I'm not sure.

It works again if you say d1 $ sound $ preplace (1,1) ("x [~ x] x x"::Pattern String) "bd sn", but it would be nice not to have to do this. And for preplace, the type of Pattern there doesn't actually matter! So one solution is to just force Pattern String in the type signature. This runs into another problem, though, which is that protate (and the >>, << operators) are implemented by replacing a pattern with itself, so forcing Pattern String breaks stuff like n (2 ~>> "0 1 2 3").

I'm raising this as an issue because I'm at a loss how to fix this without breaking the generality of prrw or something else. Maybe the solution lies in the parser, but that's voodoo to me and I don't understand it.

Issues with OSX Mavericks

Can get everything set up using the osx instructions, however have emacs throwing me back an error message. Suspect this is because I used the binary install of haskell platform instead of installing via brew, so will report back once I've investigated a bit more.

GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> 
<no location info>:
    Could not find module `Sound.Tidal.Context'
    It is not a module in the current program, or in any known package.

<interactive>:4:7: Not in scope: `dirtstream'

<interactive>:5:7: Not in scope: `dirtstream'

<interactive>:6:7: Not in scope: `dirtstream'

<interactive>:7:7: Not in scope: `dirtstream'

<interactive>:8:7: Not in scope: `dirtstream'

<interactive>:9:7: Not in scope: `dirtstream'

<interactive>:10:7: Not in scope: `dirtstream'

<interactive>:11:7: Not in scope: `dirtstream'

<interactive>:12:7: Not in scope: `dirtstream'

<interactive>:13:8: Not in scope: `bpsSetter'

<interactive>:14:21: Not in scope: `silence'

<interactive>:14:31: Not in scope: `d1'

<interactive>:14:34: Not in scope: `d2'

<interactive>:14:37: Not in scope: `d3'

<interactive>:14:40: Not in scope: `d4'

<interactive>:14:43: Not in scope: `d5'

<interactive>:14:46: Not in scope: `d6'

<interactive>:14:49: Not in scope: `d7'

<interactive>:14:52: Not in scope: `d8'

<interactive>:14:55: Not in scope: `d9'
tidal> 
<interactive>:16:1: Not in scope: `d1'

<interactive>:16:6:
    Not in scope: `sound'
    Perhaps you meant `round' (imported from Prelude)
tidal> 

xfade jumps to 1 before fading

there is an other little problem with xfade.
if you xfade between the old and the new pattern all the gains of the old will
jump to 1 and than fade to 0.

so if you have something like this

d1 $ stack [
sound "bd_4",
sound "{~ ho}_4" |+| gain "0.8"
]

and than

t1 xfade $ stack [
sound "bd_4",
sound "{~ ho_2}*4" |+| gain "0.8"
]

the gain of the old ho pattern jump to 1 and the gains of new ho pattern fade
and at 1.

is it possible to multiply the current gain by the env from xfade, so that the
old goes from 0.8 to 0 and the new goes from 0 to 0.8?

i'm talking about this xfade:
https://github.com/tidalcycles/Tidal/blob/master/Sound/Tidal/Dirt.hs#L191

and this env:
https://github.com/tidalcycles/Tidal/blob/master/Sound/Tidal/Pattern.hs#L369

Shape > 0.9 => SuperDirt crash

Hi everyone

I noticed this problem when messing around with the Shape synth parameter and since I'm new to Tidal I do a lot of stupid shit like for example set the Shape param to 1.5 or something. But if I accidentaly do that, it'll crash the synth totally.

It's not a huge issue if you know what you're doing but could be a problem live if you by accident or lack of knowledge put a value higher than 1.0 into that one shape parameter. It doesn't do the same for other parameters with a 0.0-1.0 range (for example hcutoff) as far as I can see.

Here's a simple example that'll make your SuperDirt cry:

-- Keep this going so you'll hear when the synth crashes
d2 $ sound "hh*4"

--  Now, start this: it WON't crash the synth
d1 $ sound "bd"
# shape "0.5" 

--  But this will crash the synth
d1 $ sound "bd"
# shape "1.0" 

Sample volume/gain

I haven't had a serious need for this yet, but the volume of some of the samples bundled with Dirt proved problematic when I played live with a friend a couple of months ago, and it's only just occurred to me to bring this up now...

I've looked through the tidal and dirt codebases and I've noted gain and velocity in places, but I've not been able to apply either (or at least they don't seem to have any effect.)

Is it the case that this already a feature and I'm just using it wrong, or is this legitimately not yet implemented?

Expose websocket or UDP API tidal can be used programatically

Currently the main way Tidal is used is through pasting Tidal code into a GHC repl.

If Tidal there was a proper programatic interface like Sonic Pi does we could step towards better editor integration, performance tools, and interesting programmatic experimentation.

Problem with installation

Sorry for treating this as a support forum, but I'm a bit of a noob with linux & haskell and I'm having a bit of trouble getting everything set up. I had a google around but nothing really presented itself.

I'm pretty sure I've followed everything to the letter, but when I Ctrl-C Ctrl-S in Emacs I get the following output:

Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> 
<no location info>:
    Could not find module `Sound.Tidal.Context'
    Perhaps you meant Sound.Tidal.Pattern (from tidal-0.2.7)

<interactive>:4:7: Not in scope: `dirtstream'

<interactive>:5:7: Not in scope: `dirtstream'

<interactive>:6:7: Not in scope: `dirtstream'

<interactive>:7:7: Not in scope: `dirtstream'

<interactive>:8:7: Not in scope: `dirtstream'

<interactive>:9:7: Not in scope: `dirtstream'

<interactive>:10:7: Not in scope: `dirtstream'

<interactive>:11:7: Not in scope: `dirtstream'

<interactive>:12:7: Not in scope: `dirtstream'

<interactive>:13:8: Not in scope: `bpsSetter'

<interactive>:14:21: Not in scope: `silence'

<interactive>:14:31: Not in scope: `d1'

<interactive>:14:34: Not in scope: `d2'

<interactive>:14:37: Not in scope: `d3'

<interactive>:14:40: Not in scope: `d4'

<interactive>:14:43: Not in scope: `d5'

<interactive>:14:46: Not in scope: `d6'

<interactive>:14:49: Not in scope: `d7'

<interactive>:14:52: Not in scope: `d8'

<interactive>:14:55: Not in scope: `d9'
tidal> `

I'm running Ubuntu 13.10, ghc 7.6.3, and I can see in qjackctrl that dirt is connected. Any pointers as to what might be happening would be greatly appreciated.

Thanks in advance,
Dan

ghc: bind: resource busy (Address already in use)

when I start tidal-0.2.7 (via C-c C-s) I get

...
Loading package io-streams-1.1.2.0 ... linking ... done.
Loading package websockets-0.8.0.0 ... linking ... done.
Loading package tidal-0.2.7 ... linking ... done.
Couldn't CcoounClnodeuCnclo'tCdut onl tCu'dcooltnCou d 'onltncCtunde'oo lenmCtnucdc'poC nltidaoln>\
t touocedn'   luocnnttccdlnt'e oolndn tcc no'net totnct'coc neek tt otnmc,c  tnoept octen co snoom\
ett ttnn pce coaentotmtl rcee  pootttcmcto cei tplo tkmnt oo ce,pgot ctlm o  ockeops lt l,mcotcoet\
o pk alcmecso,croapmkt  ltclop,acsoik  o rltcn,cc stoakg llcticr, soolankt ltccorg,isoakkct  ntcr.\
,kilsgaat. ,not rli
s gcalt nts aroicgatlltcnl rao iagoltrccnl coitalg lkcnilo co.agn cllc.l gckooa
 l l.cclcghc: bind: resource busy (Address already in use)
olo.ak lcoc
l.coack ghc: bind: resource busy (Address already in use)

I can run tidal in ghci just fine, as in

ghci -XOverloadedStrings
:m Sound.Tidal.Dirt
d1 <- dirtstream "d1"
d1 $ sound "sid/6 (sid/5 (sid/3 sid/2))"

althoug it says

Couldn't connect to tempo clock, starting local clock..

up not working correctly

I found that:

d1 $ stack [sound "trump*3" |+| up "0 3 5"]

Might be the same as:

d1 $ stack [sound "trump*3" |+| up "0 3 5"] |+| up "0"

Since the additional up "0" shouldn't alter the pitch at all. However, the latter sounds an octave up than the former.

I tried to normalize the pitch using a negative amoung for the second up, but it didn't seem to shift an exact octave when passed -12, lower values didn't scaled linearly as well.

Segmentation fault running on Mac after installation

Running OSX 10.9.3, I was able to follow the install instructions up until this line:

Then you start up tidal, by doing ctrl-c followed by ctrl-s

To which Emacs responds with:

Loading package base64-bytestring-1.0.0.1 ... linking ... done.
Loading package entropy-0.3.2 ... linking ... done.
Loading package zlib-bindings-0.1.1.5 ... linking ... done.
Loading package io-streams-1.1.4.6 ... linking ... done.
Loading package websockets-0.8.2.4 ... linking ... done.
Loading package tidal-0.4.3 ... linking ... done.

Process tidal segmentation fault: 11

If I try to run tidal regardless with ctrl-c ctrl-c Emacs responds with the message:

no tidal process running?

I already had Haskell installed, so I followed those instructions on the readme. I also already had liblo installed via MacPorts. I tried installing it with homebrew, but I get the same error.

Steps before editor integration

Thanks for Tidal! Looks really neat.

An observation from not (yet) getting it to work...

I would be great to document some simple tests-along-the-way. Getting the whole system setup (including editor integration) is quite a stretch. For example:

  1. A simple test that jackd can play a sound
  2. A simple test that Dirt can send sounds to jack
  3. A simple test (with GHCi maybe) that Tidal can play some sounds from Dirt
  4. Putting the whole thing with editor integration together, and test a .tidal example

Reverb effect

I'm not sure if this is in the vision of Tidal, but I'd love to see a reverb effect added to Tidal (and Dirt).

Perhaps what is sent to reverb input could be patterned:

# only beat 3 is sent to reverb
d1 $ sound "bd hh cp hh"
|+| reverb "~ ~ 1 ~"

The pattern values could set the amplitude of the signal being sent to reverb input:

# a touch of reverb
d1 $ sound "bd hh cp hh"
|+| reverb "0.1"

# a bit more...
d1 $ sound "bd hh cp hh"
|+| reverb "0.5"

# and of course...
d1 $ sound "bd hh cp hh"
|+| reverb ((*0.5) <$> slow 8 sinewave1)

I don't know how reverb parameters like room size or decay time would be controlled. Maybe we wouldn't care and we could settle for a standard, stock reverb and just apply the amount. Otherwise, could reverb room size and decay time be controlled similar to bps:

# reverb decay time, in seconds
reverbdecay 1.25

# reverb room size, on a scale of 0 - 1.0
reverbroomsize 0.8

improve API documentation (explain the basic model)

yes I know no Haskell programmer likes to do this because the code is usually shorter than its specification. but - take, e.g., the Pattern type. This seems to be the fundamental abstraction. But the API docs do a bad job of explaining it. http://hackage.haskell.org/package/tidal-0.2.7/docs/Sound-Tidal-Pattern.html#t:Pattern

I see that a pattern is a (contains a) mapping from Arc to list of events. I see Arc = (Time,Time) but I have to guess that it denotes an interval. But how exactly, is it
(start, end) or (start, duration)? (do you make a distinction between time and duration?) Now, Event a = (Arc,a). Again, it's not immediately obvious why this should be called Event (in fact it is not obvious at all - I'd expect that an Event occurs at a point in time, and has no duration). Also, what should be the invariant for the various Arcs (in the Events that make up a Pattern) - should they be disjoint? In some way successive?

I think that some explanation on the basic types would help (me) a lot to understand the model, and this in turn would help in using the language/interpreter, and also in extending it.

remove -1 default parameters

Currently, we have this:

delayfeedback :: Pattern Double -> ParamPattern
delayfeedback = make' VF delayfeedback_p
delayfeedback_p = F "delayfeedback" (Just (-1))

Which will send -1 instead of nothing. Assuming that delay is the "keyword" that will say that you want to actually use the delay, there seems to be no reason why we shouldn't just send nil (aka Nothing) instead.

The current behaviour requires special treatment of the delaytime and delayfeedback parameters.

runWith has issues

For example doing a jux rev after a runWith doesn't work well. Could be related to #143 .

Adding Speech Synthesis?

Just a fun idea... would be neat if from the pattern you could specify a word/phrase type and then be able to pass it to say, so you could get speech synthesis for live loops.

Let me propose the following syntax....

"@(say what you want to say, optional: synth name) "

By writing them to a special sample/speech dir, say would only need to be used for new phrases.

Thoughts?

Solo (feature request)

Something like the opposite of silence for use in this way:

d1 solo

This would mute all channels except d1 assuming it is already playing. If not then this would have the same effect as hush...

I was thinking about a solo' function which could mute all channels except d1 and start it if not already playing, but I'm not sure how you would specify which code you actually want to C-c C-e - perhaps you have an idea?

Pretty often I want to isolate a channel to check how it sounds and I'm not sure which channels are in use - using hush and restarting some loop manually is OK, but this would help to mitigate interruption to my flow.

distribution is missing helloworld.tidal file

since the names of things seem to change between releases, it would be very much appreciated if you'd include some example.tidal file (in the github source repo) and make sure it can be loaded and executed with the current version of tidal (and tidal.el)

Add to Stackage

Hello! I've been enjoying the stack build tool, and I find myself wanting Tidal on Stackage. Is this feasible? I'm not very knowledgable when it comes to Haskell, so I'm still wrapping my head around how packages and such are dealt with here.

https://www.stackage.org/package/tidal

Sample preloading

You could do something like this, a bit of a hack..

d1 $ sound (pick <$> "[sn,bd,psr]*16" <*> run 32) |+| end "0.00001"

via @yaxu on Twitter

I'll give this a shot, but as suggested in the conversation, it would be nice to have a formal function to preload samples as first-time sample loading in a dirt process can cause delay in playback (affecting already-playing channels as well as the sample in question...)

tidal-midi won't install on mac

Fails while trying to install alsa-core-0.5.0.1, which I've read elsewhere is Linux only. Any possible workarounds?

Resolving dependencies...
Configuring alsa-core-0.5.0.1...
Failed to install alsa-core-0.5.0.1
Last 10 lines of the build log ( /Users/athousandsharks/.cabal/logs/alsa-core-0.5.0.1.log ):
Configuring alsa-core-0.5.0.1...
setup-Cabal-1.18.1.4-x86_64-osx-ghc-7.8.3: The program pkg-config version
=0.9.0 is required but it could not be found.
cabal: Error: some packages failed to install:
alsa-core-0.5.0.1 failed during the configure step. The exception was:
ExitFailure 1
alsa-seq-0.6.0.5 depends on alsa-core-0.5.0.1 which failed to install.
tidal-midi-0.0.1 depends on alsa-core-0.5.0.1 which failed to install.

Error installing `paradox` in emacs

spacemacs, if that matters. I get a message about paradox failing to install at start-up and I've included the verbose output from the messages buffer.

~/tidal$lsb_release -d
Description:    Ubuntu 14.04.4 LTS
~/tidal$emacs --version
GNU Emacs 24.4.1
(Spacemacs) --> installing package: paradox@spacemacs... [1/1]
Contacting host: melpa.org:443
Spacemacs is ready.
Loading /home/michaelpanciera/.emacs.d/.cache/recentf...done
Start checking for new version...
byte-code: Beginning of bufferError during redisplay: (eval (spaceline--prepare spaceline-left spaceline-right)) signaled (error "Invalid image type `xpm'")
Error during redisplay: (eval (spaceline--prepare spaceline-left spaceline-right)) signaled (error "Invalid image type `xpm'") [3 times]
QuitError during redisplay: (eval (spaceline--prepare spaceline-left spaceline-right)) signaled (error "Invalid image type `xpm'")
byte-code: Beginning of bufferError during redisplay: (eval (spaceline--prepare spaceline-left spaceline-right)) signaled (error "Invalid image type `xpm'")
byte-code: End of buffer
byte-code: Beginning of bufferError during redisplay: (eval (spaceline--prepare spaceline-left spaceline-right)) signaled (error "Invalid image type `xpm'")
New version of Spacemacs available: 0.105.19
Error during redisplay: (eval (spaceline--prepare spaceline-left spaceline-right)) signaled (error "Invalid image type `xpm'")
C-c C-s is undefined
Error during redisplay: (eval (spaceline--prepare spaceline-left spaceline-right)) signaled (error "Invalid image type `xpm'") [2 times]
Making inhibit-read-only local to *helm-mode-completion-at-point* while let-bound!
Error during redisplay: (eval (spaceline--prepare spaceline-left spaceline-right)) signaled (error "Invalid image type `xpm'") [2 times]
Error during redisplay: (eval (spaceline--prepare (quote (helm-buffer-id helm-number helm-follow helm-prefix-argument)) (quote (helm-help)))) signaled (error "Invalid image type `xpm'") [5 times]
Error during redisplay: (eval (spaceline--prepare spaceline-left spaceline-right)) signaled (error "Invalid image type `xpm'") [25 times]

I also see this message (although haskell-mode is installed)

(Spacemacs) Error in dotspacemacs/user-init: Cannot open load file: no such file or directory, haskell-mode

Installation for Mac fails because of `alsa`

Tidal currently does not seem to build on Mac OS X because it's using alsa, which seems to be Linux-only?

$ cabal install tidal
[...]
Configuring alsa-core-0.5.0.1...
setup-Simple-Cabal-1.22.3.0-x86_64-osx-ghc-7.10.1: The pkg-config package
'alsa' version >=1.0.14 is required but it could not be found.

insufficient randomness

separate calls to rand (including irand and randcat) during the same event(?) will produce the same results. this could be considered a bug or feature, however producing different random numbers for each call in the same event could be more interesting musically.

tidal> rand
(0.5672781162870792 0 1)
tidal> rand
(0.5672781162870792 0 1)

Suggestion for parser: shift operator

One thing I've tried to implement but can't figure out how to properly do is to have a "shift" operator in Tidal's string EDSL. Something like "bd ~ bd< ~" which would parse to "bd [~ bd] ~ ~", for example (and "bd bd> ~ ~" would parse to the same). Perhaps the default would be to shift half a "slot" and you could add a number for shifting smaller fractions, e.g. "bd ~ bd<3 ~" == "bd [~ ~ bd] ~ ~". This could save a lot of typing.

I tried to implement this a while back and got stuck on not being able to get the parser to "move" sub-patterns outside their "slot" in the larger pattern, but I'm happy to help code something up if anyone has ideas for how to get past that.

support 'stretching' in parser

e.g.
"bd [sn cp cp]@2 bd"
stretches the second step out, to last over two steps.. making a four step sequence in total

0.7 build failure

Got this when building stackage nightly:

Preprocessing library tidal-0.7...

Sound/Tidal/Parse.hs:1:55: Warning:
    -XOverlappingInstances is deprecated: instead use per-instance pragmas OVERLAPPING/OVERLAPPABLE/OVERLAPS
[ 1 of 19] Compiling Sound.Tidal.MIDI.Device ( Sound/Tidal/MIDI/Device.hs, dist/build/Sound/Tidal/MIDI/Device.o )
[ 2 of 19] Compiling Sound.Tidal.Utils ( Sound/Tidal/Utils.hs, dist/build/Sound/Tidal/Utils.o )
[ 3 of 19] Compiling Sound.Tidal.Tempo ( Sound/Tidal/Tempo.hs, dist/build/Sound/Tidal/Tempo.o )

Sound/Tidal/Tempo.hs:26:10: Warning:
    No explicit implementation for
      either ‘==’ or ‘/=’
    In the instance declaration for ‘Eq WS.Connection’
[ 4 of 19] Compiling Sound.Tidal.Time ( Sound/Tidal/Time.hs, dist/build/Sound/Tidal/Time.o )
[ 5 of 19] Compiling Sound.Tidal.Pattern ( Sound/Tidal/Pattern.hs, dist/build/Sound/Tidal/Pattern.o )
[ 6 of 19] Compiling Sound.Tidal.Parse ( Sound/Tidal/Parse.hs, dist/build/Sound/Tidal/Parse.o )
[ 7 of 19] Compiling Sound.Tidal.Stream ( Sound/Tidal/Stream.hs, dist/build/Sound/Tidal/Stream.o )
[ 8 of 19] Compiling Sound.Tidal.Params ( Sound/Tidal/Params.hs, dist/build/Sound/Tidal/Params.o )
[ 9 of 19] Compiling Sound.Tidal.OscStream ( Sound/Tidal/OscStream.hs, dist/build/Sound/Tidal/OscStream.o )
[10 of 19] Compiling Sound.Tidal.Transition ( Sound/Tidal/Transition.hs, dist/build/Sound/Tidal/Transition.o )
[11 of 19] Compiling Sound.Tidal.MIDI.Params ( Sound/Tidal/MIDI/Params.hs, dist/build/Sound/Tidal/MIDI/Params.o )
[12 of 19] Compiling Sound.Tidal.MIDI.Control ( Sound/Tidal/MIDI/Control.hs, dist/build/Sound/Tidal/MIDI/Control.o )
[13 of 19] Compiling Sound.Tidal.MidiStream ( Sound/Tidal/MidiStream.hs, dist/build/Sound/Tidal/MidiStream.o )

Sound/Tidal/MidiStream.hs:267:36:
    Couldn't match expected type ‘CLong’ with actual type ‘PM.PMMsg’
    In the first argument of ‘PM.PMEvent’, namely ‘msg’
    In the expression: PM.PMEvent msg (t)

Support and document retrig

retrig works in emacs, but not in atom. Needs copying over (to the plugin, as it seems to need redefining every evaluation), and documenting.

magic MIDI parsing and `grp`

It would be very nice if something like the following were possible:

d1 $ grp [n_p, sustain_p] "c4:1 [e4:0.3 g4:0.3] g3:2" # s "superpiano"

What prevents it seems to be that the thing in quotes has already been parsed into a Pattern String by the time grp even receives it, so the magic MIDI parsing doesn't get a chance to work before grp splits things apart. I've tried a couple quick fixes but haven't been clever enough to get it going...

error building websockets

I know this isn't a part of your tidal package, but I'm unable to build the 'websockets' package that Tidal requires. I've done all the previous steps in the install instructions, but this part is preventing me from having some fun with your project.

Here is the error message I receive in Cygwin, using the cabal install websockets command. I used this instead of the installing Tidal since this is the part that was failing.:

Resolving dependencies...
Configuring websockets-0.9.0.1...
Building websockets-0.9.0.1...
Failed to install websockets-0.9.0.1
Last 10 lines of the build log ( C:\Users\username\AppData\Roaming\cabal\logs\websockets-0.9.0.1.log ):
Building websockets-0.9.0.1...
Preprocessing library websockets-0.9.0.1...
[ 1 of 11] Compiling Network.WebSockets.Hybi13.Mask ( src\Network\WebSockets\Hybi13\Mask.hs, dist\build\Network\WebSockets\Hybi13\Mask.o )
[ 2 of 11] Compiling Network.WebSockets.Http ( src\Network\WebSockets\Http.hs, dist\build\Network\WebSockets\Http.o )
[ 3 of 11] Compiling Network.WebSockets.Types ( src\Network\WebSockets\Types.hs, dist\build\Network\WebSockets\Types.o )
[ 4 of 11] Compiling Network.WebSockets.Stream ( src\Network\WebSockets\Stream.hs, dist\build\Network\WebSockets\Stream.o )

src\Network\WebSockets\Stream.hs:24:57:
    Module `Network.Socket.ByteString.Lazy' does not export `sendAll'
cabal.exe: Error: some packages failed to install:
websockets-0.9.0.1 failed during the building phase. The exception was:
ExitFailure 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.