tidalcycles / tidal Goto Github PK
View Code? Open in Web Editor NEWPattern language
Home Page: http://tidalcycles.org/
License: GNU General Public License v3.0
Pattern language
Home Page: http://tidalcycles.org/
License: GNU General Public License v3.0
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 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.
e..g to allow shorthand of bd!3 sn
for bd ! ! sn
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
I wonder if it's just me, but pulse highlighting prevents tidal-send-string
from doing its thing until the pulsing is finished.
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"
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>
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.
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
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!
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.
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.
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 #!...
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.
For example doing a jux rev
after a runWith
doesn't work well. Could be related to #143 .
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
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.
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.
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)
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...
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
"cut" a long sample so that it is not played on top of itself if triggered a 2nd time:
d1 $ sound "[longsample longsample]"
|+| cut "[1 1]"
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
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)
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.
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..
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.
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?
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?
To match with sine1
, saw1
, etc
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..
Discussion here:
http://lurk.org/groups/tidal/messages/topic/3lArTJYI3G25A3s1BoEfqG
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.
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)
Currently striate 2 $ chop 2 $ sound "bd cp"
is the same as striate 2 $ density 2 $ sound "bd cp"
, because striate
and chop
both ignore existing begin
and end
parameters.
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
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.
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.
So sound is less likely to cut out on e.g. missing closing bracket..
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:
.tidal
examplee.g.
"bd [sn cp cp]@2 bd"
stretches the second step out, to last over two steps.. making a four step sequence in total
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
You could do something like this, a bit of a hack..
d1 $ sound (pick <$> "[sn,bd,psr]*16" <*> run 32) |+| end "0.00001"
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...)
retrig works in emacs, but not in atom. Needs copying over (to the plugin, as it seems to need redefining every evaluation), and documenting.
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.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.