tidal

Pattern language for improvised music

http://tidalcycles.org/

Version on this page:1.0.14
LTS Haskell 22.17:1.9.5
Stackage Nightly 2024-04-17:1.9.5@rev:1
Latest on Hackage:1.9.5@rev:1

See all snapshots tidal appears in

GPL-3.0-only licensed by Alex McLean
Maintained by Alex McLean, Mike Hodnick
This version can be pinned in stack with:tidal-1.0.14@sha256:841f4f346a08f05a38786029166acdfa095e137b99e8007ac6c51dd865f1d0f5,2983

Tidal Build Status

Language for live coding of pattern

For documentation, mailing list and more info see here: https://tidalcycles.org/

You can help speed up Tidal development by sending coffee here: https://ko-fi.com/yaxulive#

(c) Alex McLean and contributors, 2019

Distributed under the terms of the GNU Public license version 3 (or later).

Changes

TidalCycles log of changes

1.0.14 - IICON

  • ‘chew’ - like bite, but speeds playback rate up and down
  • variable probability for ? in mini notation
  • chooseBy takes modulo of index to avoid out of bounds errors
  • ‘rate’ control param
  • Fix dependencies for parsec/colour

1.0.13 - 🐝⌛️🦋 #2

  • Simplify espgrid support - @yaxu

1.0.12 - 🐝⌛️🦋

  • Fix ESPGrid support - @dktr0
  • Add ‘snowball’ function - @XiNNiW

1.0.11 - Cros Bríde

2019-04-17 Alex McLean [email protected] * Add bite function for slicing patterns (rather than samples) * Tweak tidal.el to attempt to infer location of default BootTidal.hs * Skip time (forward or backward) if the reference clock jumps suddenly * Fix fit - @bgold-cosmos * Remove ‘asap’ * Add cB for boolean control input * pickF for choosing between functions with a pattern of integers * select for choosing between list of patterns with a floating point pattern * squeeze for choosing between list of patterns with a pattern of integers, where patterns are squeezed into the integer event duration * splice for choosing between slices of a pattern, where the slices are squeezed into event duration * Ord and Eq instances for value type @bgold-cosmos * trigger - support for resetting envelopes on evaluation * Support for rational event values * Tweak how *> and <* deal with analog patterns * Caribiner link bridge support

1.0.10 - This machine also kills fascists

  • Add exports to Sound.Tidal.Scales for getScale and scaleTable

1.0.9 - This machine kills fascists

  • sec and msec functions for converting from seconds to cycles (for stut etc) @yaxu
  • template haskell upper bounds @yaxu
  • fix for multi-laptop sync/tempo sharing @yaxu
  • fix toScale so it doesn’t break on empty lists @bgold-cosmos
  • deconstruct function for displaying patterns stepwise @yaxu
  • djf control ready for new superdirt dj filter @yaxu
  • getScale for handrolling/adding scales to scale function * Add djf control for upcoming superdirt dj filter @yaxu

1.0.8 (trying to get back to doing these,

see also https://tidalcycles.org/index.php/Changes_in_Tidal_1.0.x

for earlier stuff)

  • Add ‘to’, ‘toArg’ and ‘from’ controls for new superdirt routing experiments - @telephon
  • Fixes for squeezeJoin (nee unwrap’) - @bgold-cosmos
  • Simplify cycleChoose, it is now properly discrete (one event per cycle) - @yaxu
  • The return of <>, infix alias for overlay - @yaxu
  • Fix for wedge to allow 0 and 1 as first parameter - @XiNNiW
  • Support for new spectral fx - @madskjeldgaard
  • Fix for _euclidInv - @dktr0
  • chordList for listing chords - @XiNNiW
  • new function soak - @XiNNiW
  • tempo fixes - @bgold-cosmos
  • miniTidal developments - @dktr0
  • potentially more efficient euclidean patternings - @dktr0
  • unit tests for euclid - @yaxu
  • fix for sometimesBy - @yaxu

0.9.10 (and earlier missing versions from this log)

  • arpg, a function to arpeggiate
  • within’, an alternate within with a different approach to time, following discussion here https://github.com/tidalcycles/Tidal/issues/313
  • sine et al are now generalised so can be used as double or rational patterns
  • New Sound.Tidal.Simple module with a range of simple transformations (faster, slower, higher, lower, mute, etc)
  • slice upgraded to take a pattern of slice indexes
  • espgrid support
  • lindenmayerI
  • sew function, for binary switching between two patterns
  • somecycles alias for someCycles
  • ply function, for repeating each event in a pattern a given number of times within their original timespan
  • patternify juxBy, e, e’, einv, efull, eoff

0.9.7

Enhancements

  • The note pattern parameter is no longer an alias for midinote, but an independent parameter for supercollider to handle (in a manner similar to up)

0.9.6

Enhancements

  • Added chord for chord patterns and scaleP for scale patterns
  • The n pattern parameter is now floating point

0.9.5

Enhancements

  • Added hurry which both speeds up the sound and the pattern by the given amount.
  • Added stripe which repeats a pattern a given number of times per cycle, with random but contiguous durations.
  • Added continuous function cosine
  • Turned more pattern transformation parameters into patterns - spread’, striateX, every’, inside, outside, swing
  • Added experimental datatype for Xenakis sieves
  • Correctly parse negative rationals
  • Added breakUp that finds events that share the same timespan, and spreads them out during that timespan, so for example (breakUp “[bd,sn]”) gets turned into the “bd sn”
  • Added fill which ‘fills in’ gaps in one pattern with events from another.

0.9.4

Fixes

  • Swapped - for .. in ranges as quick fix for issue with parsing negative numbers
  • Removed overloaded list thingie for now, unsure whether it’s worth the dependency

0.9.3

Enhancements

  • The sequence parser can now expand ranges, e.g. "0-3 4-2" is equivalent to "[0 1 2 3] [4 3 2]"
  • Sequences can now be described using list syntax, for example sound ["bd", "sn"] is equivalent to sound "bd sn". They aren’t lists though, so you can’t for example do sound (["bd", "sn"] ++ ["arpy", "cp"]) – but can do sound (append ["bd", "sn"] ["arpy", "cp"])
  • New function linger, e.g. linger (1/4) will only play the first quarter of the given pattern, four times to fill the cycle.
  • discretise now takes time value as its first parameter, not a pattern of time, which was causing problems and needs some careful thought.
  • a rel alias for the release parameter, to match the att alias for attack
  • _fast alias for _density
  • The start of automatic testing for a holy bug-free future

Fixes

  • Fixed bug that was causing events to double up or get lost, e.g. where rev was combined with certain other functions.