GPL-3.0-only licensed by Alex McLean
Maintained by Alex McLean, Matthew Kaney, Martin Gius
This version can be pinned in stack with:tidal-1.10.1@sha256:78341c01002163364c4ff9e808c993d686405b0b43f16c0f5063a90389133e7a,3692

Tidal

DOI

Uzu language for live coding algorithmic patterns

For documentation, mailing list and more info see here.
You can help speed up Tidal development by contributing to the collective fund!

(c) Alex McLean and other contributors, 2025

Licensed under the GNU Public License v3.0. Ports and other projects making use of Tidal source code as a reference for e.g. algorithms and/or types are derivative works and bound by the same license.

Changes

TidalCycles log of changes

1.10.1 - Dundee

What’s Changed

  • Moved to codeberg ! https://codeberg.org/uzu/tidal/
  • Added ribbon, unjoin and into by @yaxu in https://codeberg.org/uzu/tidal/pulls/1213
  • Fix regression in v1.10.0, where running patterns would be unnecessarily reverted by @yaxu in https://codeberg.org/uzu/tidal/pulls/1223

1.10.0 - waffle

The code name ‘waffle’ comes from the bonkers three-dimensional fabric that appears from a surprisingly simple two-dimensional weave structure. More info

waffle weave

What’s Changed

This v1.10.0 release has been a bit delayed so is a bumper feast of tweaks, features, bugfixes and tidying.. If your PR missed the boat don’t worry we’ll do them more often from now and v1.10.1 will come soon!

Interface changes

  • add muting with _ for p and d1-16 by @geikha in https://github.com/tidalcycles/Tidal/pull/1082
  • Add getbpm and setbpm to boot functions by @matthewkaney in https://github.com/tidalcycles/Tidal/pull/1083

New language features

  • Add capital-M aliases for major chords by @rrrnld in https://github.com/tidalcycles/Tidal/pull/1077
  • Step-oriented functionality by @yaxu in https://github.com/tidalcycles/Tidal/pull/1072
  • Patterned tactus WIP by @yaxu in https://github.com/tidalcycles/Tidal/pull/1111 *normal signal for normally-distributed random numbers from #1055 by @patrickt (backported by @sss-create in https://github.com/tidalcycles/Tidal/pull/1101)
  • Remove patterned tactus by @yaxu in https://github.com/tidalcycles/Tidal/pull/1201
  • beat function for “step sequencer” style rhythm notation. (Backported from Strudel) by @geikha in https://github.com/tidalcycles/Tidal/pull/1109 and https://github.com/tidalcycles/Tidal/pull/1134
  • Introduces two function families for introducing chromaticism in melodies by @aherrou in https://github.com/tidalcycles/Tidal/pull/1097
  • clip as alias for legato by @sss-create in https://github.com/tidalcycles/Tidal/pull/1158
  • Stepwise functions continued by @yaxu in https://github.com/tidalcycles/Tidal/pull/1152
  • pattern weights for chooseby functions by @yaxu in https://github.com/tidalcycles/Tidal/pull/1173
  • sample rand signal on onset, start rand pattern at 0.5 by @yaxu in https://github.com/tidalcycles/Tidal/pull/1176
  • add bank param by @yaxu in https://github.com/tidalcycles/Tidal/pull/1190
  • add stepalt by @yaxu in https://github.com/tidalcycles/Tidal/pull/1200

Experimental tap tempo utility

  • Tap tempo WIP, bring feedforward into tidal monorepo, fix nudgeAll by @yaxu in https://github.com/tidalcycles/Tidal/pull/1191
  • Tap tempo utility updates by @yaxu in https://github.com/tidalcycles/Tidal/pull/1196

Mini-notation changes

  • Support - for rests/gaps in mininotation by @yaxu in https://github.com/tidalcycles/Tidal/pull/1087
  • fixed: Parser errors for new rest symbol #1091 by @sss-create in https://github.com/tidalcycles/Tidal/pull/1113
  • Toplevel ‘,’ and ‘|’. by @sss-create in https://github.com/tidalcycles/Tidal/pull/1149

OSC listener

  • #1035 added setcps and other controls to OSC Listener by @sss-create in https://github.com/tidalcycles/Tidal/pull/1102

Boot/config changes

  • Cherry pick new Boot changes by @ejconlon and adjust to incorporate recent changes by @matthewkaney in https://github.com/tidalcycles/Tidal/pull/1081
  • added a commented enable link line in BootTidal.hs by @sss-create in https://github.com/tidalcycles/Tidal/pull/1147
  • link and clock setter functions by @sss-create in https://github.com/tidalcycles/Tidal/pull/1162

Bug fixes

  • fix(slice): support slice 1 _ by @grddavies in https://github.com/tidalcycles/Tidal/pull/1086
  • doTick: use exception-safe modifyMVar_ instead of takeMVar/putMVar by @ahihi in https://github.com/tidalcycles/Tidal/pull/1100
  • Fix off-by-one error in striateBy by @yaxu in https://github.com/tidalcycles/Tidal/pull/1106
  • timeToRands non-zero bug by @sss-create in https://github.com/tidalcycles/Tidal/pull/1142
  • Bugfix for squeezeJoin and dependencies including bite by @yaxu in https://github.com/tidalcycles/Tidal/pull/1145
  • [breaking change] sample signals at query onsets instead of midpoint by @yaxu in https://github.com/tidalcycles/Tidal/pull/1148
  • Fix 1068 novector by @jwaldmann in https://github.com/tidalcycles/Tidal/pull/1187
  • fix for plyWith: tweak type defaults, turn off related warning by @yaxu in https://github.com/tidalcycles/Tidal/pull/1195

Emacs plugin

  • Hush function and keybindings by @marcora in #1012 (backported by @sss-create in https://github.com/tidalcycles/Tidal/pull/1101)
  • remove extra paren in tidal.el by @jezcope in https://github.com/tidalcycles/Tidal/pull/1110

Source code reorganisation

  • replace Tempo module by an ableton-link synched clock that comes with tidal-link by @polymorphicengine in https://github.com/tidalcycles/Tidal/pull/1059
  • simplify the clock logic by removing LinkOperations by @polymorphicengine in https://github.com/tidalcycles/Tidal/pull/1090
  • ableton link as submodule by @sss-create in https://github.com/tidalcycles/Tidal/pull/1119
  • Split controller OSC off from SuperDirt handshake OSC (Redux for 1.9) by @matthewkaney in https://github.com/tidalcycles/Tidal/pull/1051
  • Extract Core Functionalities into tidal-core Package by @eilseq in https://github.com/tidalcycles/Tidal/pull/1155
  • Tidal core prerelease by @yaxu in https://github.com/tidalcycles/Tidal/pull/1156
  • Migrate from Microspec to Hspec by @sss-create in https://github.com/tidalcycles/Tidal/pull/1157
  • Reinstate transitions by @yaxu in https://github.com/tidalcycles/Tidal/pull/1188
  • Recombine configuration by @yaxu in https://github.com/tidalcycles/Tidal/pull/1203

Tidal-parse updates

  • Enable Tidal-Parse FFI for Cross-Language Integration by @eilseq in https://github.com/tidalcycles/Tidal/pull/1143
  • Add rolled and rolledBy to tidal-parse by @TristanCacqueray in https://github.com/tidalcycles/Tidal/pull/1199

Other maintenance

  • bump upper bounds of network dependency to 3.3 by @yaxu in https://github.com/tidalcycles/Tidal/pull/1080
  • more efficient sew by @yaxu in https://github.com/tidalcycles/Tidal/pull/1078, https://github.com/tidalcycles/Tidal/pull/1088
  • Bump actions/download-artifact from 2 to 4.1.7 in /.github/workflows by @dependabot in https://github.com/tidalcycles/Tidal/pull/1096
  • flake.nix: update nixpkgs and remove temporary hosc input by @ahihi in https://github.com/tidalcycles/Tidal/pull/1098
  • CI pipeline repair by @sss-create in https://github.com/tidalcycles/Tidal/pull/1104
  • hosc-0.21 support by @sss-create in https://github.com/tidalcycles/Tidal/pull/1105
  • dependency bumper by @yaxu in https://github.com/tidalcycles/Tidal/pull/1117
  • Bumping random by @github-actions in https://github.com/tidalcycles/Tidal/pull/1118
  • renamed linktest executable by @sss-create in https://github.com/tidalcycles/Tidal/pull/1107
  • Bump upper bounds by @yaxu in https://github.com/tidalcycles/Tidal/pull/1115
  • Fix upload artifact by @yaxu in https://github.com/tidalcycles/Tidal/pull/1120
  • delint by @yaxu in https://github.com/tidalcycles/Tidal/pull/1131
  • Clean warnings by @yaxu in https://github.com/tidalcycles/Tidal/pull/1133
  • substitue ‘tail’ with ‘drop 1’ by @sss-create in https://github.com/tidalcycles/Tidal/pull/1141
  • change link version and bounds to conform to the PVP by @polymorphicengine in https://github.com/tidalcycles/Tidal/pull/1140
  • update some out of date contributing info by @yaxu in https://github.com/tidalcycles/Tidal/pull/1154
  • Delint by @yaxu in https://github.com/tidalcycles/Tidal/pull/1163
  • fix warnings by @yaxu in https://github.com/tidalcycles/Tidal/pull/1175
  • delint benchmarks by @yaxu in https://github.com/tidalcycles/Tidal/pull/1177
  • import IsString from a portable module by @claudeha in https://github.com/tidalcycles/Tidal/pull/1204

New Contributors <3

  • @grddavies made their first contribution in https://github.com/tidalcycles/Tidal/pull/1086
  • @dependabot made their first contribution in https://github.com/tidalcycles/Tidal/pull/1096
  • @jezcope made their first contribution in https://github.com/tidalcycles/Tidal/pull/1110
  • @github-actions made their first contribution in https://github.com/tidalcycles/Tidal/pull/1118
  • @aherrou made their first contribution in https://github.com/tidalcycles/Tidal/pull/1097
  • @eilseq made their first contribution in https://github.com/tidalcycles/Tidal/pull/1143
  • @rrrnld made their first contribution in https://github.com/tidalcycles/Tidal/pull/1077
  • @ejconlon made their first contribution in https://github.com/tidalcycles/Tidal/pull/1081
  • @patrickt made their first contribution in #1055
  • @marcora made their first contribution in #1012
  • @TristanCacqueray made their first contribution in https://github.com/tidalcycles/Tidal/pull/1199
  • @claudeha made their first contribution in https://github.com/tidalcycles/Tidal/pull/1204

Full Changelog: https://github.com/tidalcycles/Tidal/compare/v1.9.5…v1.10.0

1.9.5 - Sashiko

What’s Changed

  • avoid loading stream module in other modules, so hint wont crash by @polymorphicengine in https://codeberg.org/uzu/Tidal/pull/1019
  • change streamGetnow to factor in the processAhead and also destroy the sessionstate by @polymorphicengine in https://codeberg.org/uzu/Tidal/pull/1025
  • fix minor7sharp9 chord (the 9th wasn’t sharp) by @cleary in https://codeberg.org/uzu/Tidal/pull/1036
  • add metatune param, now against 1.9-dev by @ahihi in https://codeberg.org/uzu/Tidal/pull/1046
  • Build fixes for Tidal 1.9 by @mindofmatthew in https://codeberg.org/uzu/Tidal/pull/1052
  • Update link 1.9 dev by @yaxu in https://codeberg.org/uzu/Tidal/pull/1058
  • More build fixes by @mindofmatthew in https://codeberg.org/uzu/Tidal/pull/1062
  • Consolidate site docs into source docs, and some docs editing by @trespaul in https://codeberg.org/uzu/Tidal/pull/1070
  • Fix negative numbers not working for boolean euclids by @geikha in https://codeberg.org/uzu/Tidal/pull/1063

New Contributors

  • @ahihi made their first contribution in https://codeberg.org/uzu/Tidal/pull/1046
  • @trespaul made their first contribution in https://codeberg.org/uzu/Tidal/pull/1070
  • @geikha made their first contribution in https://codeberg.org/uzu/Tidal/pull/1063

Full Changelog: https://codeberg.org/uzu/Tidal/compare/v1.9.4…v1.9.5

1.9.4 - Stitch

What’s Changed

  • fix #986 by @jwaldmann in https://codeberg.org/uzu/Tidal/pull/987
  • fix #988 by @jwaldmann in https://codeberg.org/uzu/Tidal/pull/989
  • Tidal listener update and rework by @polymorphicengine in https://codeberg.org/uzu/Tidal/pull/996
  • ci: update GitHub actions by @SpencerIsGiddy in https://codeberg.org/uzu/Tidal/pull/994
  • Fix markup errors in and add to Sound.Tidal.UI documentation. by @patrickt in https://codeberg.org/uzu/Tidal/pull/992
  • reset and restart by @yaxu in https://codeberg.org/uzu/Tidal/pull/997
  • Add extractN and extend getN by @thgrund in https://codeberg.org/uzu/Tidal/pull/999

New Contributors

  • @SpencerIsGiddy made their first contribution in https://codeberg.org/uzu/Tidal/pull/994
  • @patrickt made their first contribution in https://codeberg.org/uzu/Tidal/pull/992

Full Changelog: https://codeberg.org/uzu/Tidal/compare/v1.9.3…v1.9.4

1.9.3 - Kolam

What’s Changed

  • fix for squeezejoin by @yaxu in https://codeberg.org/uzu/Tidal/pull/950
  • tidal.el fix silencer by @zzkt in https://codeberg.org/uzu/Tidal/pull/955
  • add accelerate to nobus and fix typo for begin by @yaxu in https://codeberg.org/uzu/Tidal/pull/956
  • Fix warnings by @Zalastax in https://codeberg.org/uzu/Tidal/pull/962
  • Add a Nix Flake for building and developing Tidal by @mitchmindtree in https://codeberg.org/uzu/Tidal/pull/963
  • Make distrib only take structure from the euclid by @yaxu in https://codeberg.org/uzu/Tidal/pull/961
  • Fix build by @yaxu in https://codeberg.org/uzu/Tidal/pull/965
  • Fix resetCycles skipping and lateness by @Zalastax in https://codeberg.org/uzu/Tidal/pull/966
  • Add setCycle by @Zalastax in https://codeberg.org/uzu/Tidal/pull/969
  • CHANGELOG gardening by @mindofmatthew in https://codeberg.org/uzu/Tidal/pull/971
  • Comments for some state functions by @JeffreyBenjaminBrown in https://codeberg.org/uzu/Tidal/pull/973
  • Comments on time, and haddock fixes by @JeffreyBenjaminBrown in https://codeberg.org/uzu/Tidal/pull/974
  • Fix warning about type constraint by @mindofmatthew in https://codeberg.org/uzu/Tidal/pull/977
  • Fix squeeze join by @yaxu in https://codeberg.org/uzu/Tidal/pull/975
  • trigger and friends without pattern IDs by @mindofmatthew in https://codeberg.org/uzu/Tidal/pull/970
  • Rename ghost’’ to ghostWith by @Zalastax in https://codeberg.org/uzu/Tidal/pull/967
  • Added minor major seventh chord by @jqueraltmo in https://codeberg.org/uzu/Tidal/pull/978
  • support for hosc-0.20 by @yaxu in https://codeberg.org/uzu/Tidal/pull/981

New Contributors

  • @mitchmindtree made their first contribution in https://codeberg.org/uzu/Tidal/pull/963
  • @jqueraltmo made their first contribution in https://codeberg.org/uzu/Tidal/pull/978

Full Changelog: https://codeberg.org/uzu/Tidal/compare/v1.9.2…v1.9.3

1.9.2 - Siteswap c

Same with 1.9.1, but now with new tidal-link version 1.0.1

1.9.1 - Siteswap b

A quick release to set specific tidal-link version 1.0 in tidal.cabal. Stack seems to want this.

1.9.0 - Siteswap

What’s Changed

General enhancements

  • Rename linux binary name by @ndr-brt in https://codeberg.org/uzu/Tidal/pull/911
  • Fix echo by @ndr-brt in https://codeberg.org/uzu/Tidal/pull/910
  • If first argument of euclid is negative, apply euclidInv by @polymorphicengine in https://codeberg.org/uzu/Tidal/pull/916
  • Add squeeze operators (||+, *||, etc) by @yaxu in https://codeberg.org/uzu/Tidal/pull/919
  • Make chunk reverse direction with negative number by @ndr-brt in https://codeberg.org/uzu/Tidal/pull/918
  • overhaul of the chord parser by @polymorphicengine in https://codeberg.org/uzu/Tidal/pull/931

New ableton link support

  • Use ableton link for scheduling by @Zalastax in https://codeberg.org/uzu/Tidal/pull/898
  • tidal-link: add link source files to extra-source-files, fixes #924 by @yaxu in https://codeberg.org/uzu/Tidal/pull/925
  • Use target latency in all send modes by @Zalastax in https://codeberg.org/uzu/Tidal/pull/927
  • Rename cCyclesPerBeat -> cBeatsPerCycle by @Zalastax in https://codeberg.org/uzu/Tidal/pull/939

Emacs plugin updates

  • formatting fixes in tidal.el by @zzkt in https://codeberg.org/uzu/Tidal/pull/932
  • a window-excursion for tidal.el by @zzkt in https://codeberg.org/uzu/Tidal/pull/933
  • autoloads for tidal.el by @zzkt in https://codeberg.org/uzu/Tidal/pull/934
  • avoid race in loading bootscript during restart by @zzkt in https://codeberg.org/uzu/Tidal/pull/937

Tidal-parse (estuary) updates

  • Various updates to tidal-parse by @dktr0 in https://codeberg.org/uzu/Tidal/pull/913 and https://codeberg.org/uzu/Tidal/pull/941

Maintenance

  • Increase upper bounds of text dependency by @yaxu in https://codeberg.org/uzu/Tidal/pull/948
  • Use system-cxx-std-lib by @Zalastax in https://codeberg.org/uzu/Tidal/pull/944
  • Use c++ extra library for MacOS by @giuseppelillo in https://codeberg.org/uzu/Tidal/pull/946

New Contributors

  • @Zalastax made their first contribution in https://codeberg.org/uzu/Tidal/pull/898
  • @zzkt made their first contribution in https://codeberg.org/uzu/Tidal/pull/932
  • @giuseppelillo made their first contribution in https://codeberg.org/uzu/Tidal/pull/946

Full Changelog: https://codeberg.org/uzu/Tidal/compare/v1.8.0…v1.9.0

1.8.1 - Sanquhar b

  • Removed executable from tidal.cabal file (while latest ghc on windows fails to build it)

1.8.0 - Sanquhar

  • move tidal-listener code by @polymorphicengine in #885
  • Fix a typo incurred (I assume) by a filename change. by @JeffreyBenjaminBrown in #886
  • Hide contexts from Events per default by @polymorphicengine in #887
  • Allow sending/receiving of broadcasted OSC control messages by @yaxu in #894
  • tidal-listener: Add minimal install notes by @gamar3is in #895
  • Add rolled function with variants by @thgrund in #820
  • Valuable instance for Note by @yaxu in #899
  • Add parsers for ints and floats that don’t consume trailing whitespace by @polymorphicengine in #900
  • Introduce echo and echoWith, deprecate stut and stutWith by @ndr-brt in #904
  • tidal-listener: Optional WITH_GHC environment variable by @mindofmatthew in #903

Commit list: https://codeberg.org/uzu/Tidal/compare/1.7.10…v1.8.0

1.7.10 - Tama b

  • Derive RealFrac for Note by @ndr-brt in https://codeberg.org/uzu/Tidal/pull/876
  • Add timescale and timewin control params by @yaxu in https://codeberg.org/uzu/Tidal/pull/878
  • deriving typeclass memberships for ID by @polymorphicengine in https://codeberg.org/uzu/Tidal/pull/879
  • Adds the jumpMod’ transition by @th-four in https://codeberg.org/uzu/Tidal/pull/881
  • Import safe-tidal-cli ghci simulator as tidal binary by @yaxu in https://codeberg.org/uzu/Tidal/pull/880
  • Tweaks to tidal binary, and add to linux workflow by @yaxu in https://codeberg.org/uzu/Tidal/pull/882
  • add tidal ghci replacement to macos and windows workflows by @yaxu in https://codeberg.org/uzu/Tidal/pull/883

1.7.9 - Tama

What’s Changed

  • Show lists of values by @polymorphicengine in https://codeberg.org/uzu/Tidal/pull/838
  • Port listener wiki content as README by @ndr-brt in https://codeberg.org/uzu/Tidal/pull/851
  • Chords - consistent naming cont’d by @cleary in https://codeberg.org/uzu/Tidal/pull/840
  • Formalise pattern IDs by @mindofmatthew in https://codeberg.org/uzu/Tidal/pull/807
  • Switch to non-blocking pMap updates for transitions by @bgold-cosmos in https://codeberg.org/uzu/Tidal/pull/858
  • Add listener build workflows by @ndr-brt in https://codeberg.org/uzu/Tidal/pull/852
  • Fix tidal-listener install process by @ndr-brt in https://codeberg.org/uzu/Tidal/pull/861
  • Fix mod by @bgold-cosmos in https://codeberg.org/uzu/Tidal/pull/860
  • Fix stack ci using last lts resolver by @ndr-brt in https://codeberg.org/uzu/Tidal/pull/862
  • Make Pattern instance Monoid by @fbous in https://codeberg.org/uzu/Tidal/pull/865
  • Added OSC playback control for silencing individual patterns by @njanssen in https://codeberg.org/uzu/Tidal/pull/863
  • Use better show instances for notes & rationals by @mindofmatthew in https://codeberg.org/uzu/Tidal/pull/857
  • tidal-listener: Separate build from release by @ndr-brt in https://codeberg.org/uzu/Tidal/pull/866
  • Exponential double by @ndr-brt in https://codeberg.org/uzu/Tidal/pull/871
  • Comments by @JeffreyBenjaminBrown in https://codeberg.org/uzu/Tidal/pull/877
  • Fix for classic dirt support by @yaxu https://codeberg.org/uzu/Tidal/commit/15b5b8b91af08ebad39efe2a7e0712b21f606ca4
  • New alias number for n by @yaxu https://codeberg.org/uzu/Tidal/commit/ac0be63d686ab37f7b2dcd440d4bd8f3898453e8
  • Allow “0..8” to be parsed as a range of doubles in mininotation by @yaxu https://codeberg.org/uzu/Tidal/commit/55f8ad9b0091b43fdd364eced25bc9c655d157cc
  • Bugfix for timeLoop by @yaxu in https://codeberg.org/uzu/Tidal/commit/29f28ed637a7c17ad2b22558d097a694da604e2d
  • Retire pre ghc 8.4 support by @yaxu
  • Pattern first parameter of wedge by @yaxu
  • Allow |**| et al to work on control patterns by @yaxu in https://codeberg.org/uzu/Tidal/commit/7142775c2039cae4cde9bdd6f68b3e0cbae2de9d
  • Add alias timecat for timeCat` by @yaxu in https://codeberg.org/uzu/Tidal/commit/363889bdc963d9357daf1893d18ab9dfc33ca5ac

New Contributors

  • @fbous made their first contribution in https://codeberg.org/uzu/Tidal/pull/865
  • @njanssen made their first contribution in https://codeberg.org/uzu/Tidal/pull/863
  • @JeffreyBenjaminBrown made their first contribution in https://codeberg.org/uzu/Tidal/pull/877

Full Changelog: https://codeberg.org/uzu/Tidal/compare/1.7.8…1.7.9

1.7.8 - Ayatakedai

  • Add pattern id to patterns as id, and send it with /code/highlights

1.7.7 - Caramel wafer

  • Support hosc 0.19 in test suite @yaxu

1.7.6 - Tunnocks

  • Fix dot shorthand in int patterns so floating point numbers raise an error @ndr-brt
  • Support factors in ratio shorthand for rational patterns @ndr-brt
  • support hosc 0.19 @yaxu

1.7.5 - Dalbeattie

  • Minor change to _splice so that it respects if the speed parameter was already declared @onthepeakofnormal
  • Some tests for chords @cleary
  • Remove direct semigroups dependency @yaxu
  • Derive functor for pattern @yaxu
  • Handle negative ratio shorthands for rationals @ndr_brt
  • drawLine - draw non-events with periods @yaxu
  • Parse chord without root note @yaxu
  • Fix clock sharing between tidal processes @yaxu

1.7.4 - Symonds Yat b

  • Fixes for bipolar waveforms (sine2, etc) @mindofmatthew
  • More playback controls for OSC API @mindofmatthew
  • Disable bus variants for MIDI controls @mindofmatthew

1.7.3 - Symonds Yat

  • Signed ratio shorthands now supported @ndr_brt
  • OSC API - mute/unmute stream @mindofmatthew
  • improve performance of playFor/seqP @yaxu
  • Expand tests with autodiscovered laws @RSWilli
  • Add getState to BootTidal @mindofmatthew
  • add fadeTime / fadeInTime / fadeOutTime params for grain envelopes @yaxu
  • Fix for nrpnn and nrpnv params @yaxu
  • Disable busses for MIDI parameters @mindofmatthew

1.7.2 - IKLECTIK c

  • tidal-parse additions and improved errors, haskellish dependency fix @dktr0
  • spring cleaning and delinting, recreated Time.hs, renamed ControlMap toValueMAp @yaxu
  • start of major refactoring of chords @cleary
  • fix . mininotation operator @zudov
  • stateful event parameters, for counting @yaxu
  • Move some stuff from BootTidal.hs to the tidal library, to reduce dependencies there @yaxu

1.7.1 - IKLECTIK b

  • Fix stack build @yaxu
  • Add tidal_status command @yaxu
  • Add cVerbose config setting (default on) @yaxu
  • Fix for emacs plugin @jwaldmann
  • Snowball bugfix @yaxu
  • Migrate to github actions, tested against additional ghc versions @ndr_brt
  • Fix mininotation bug - allow leading/trailing spaces @ndr_brt
  • Make linger work with negative numbers (to linger on end of cycle rather than start) @yaxu
  • Friendlier startup messages @yaxu
  • Compatibility with ghc 9.0.1 @yaxu

1.7 - IKLECTIK

  • Added drum aliases from GM2 percussion spec to drum function @lvm
  • getcps helper function now in BootTidal.hs @yaxu
  • getnow helper function back in BootTidal.hs (returns current cycle) @bgold-cosmos
  • Developments towards tidal api, @yaxu et al
  • coarse parameter is now floating point @lwlsn
  • irand parameter now patternable @ndr-brt
  • note now produces its own type to avoid conflicts between parsing note names and duration shorthands @ndr-brt
  • Numerous tidal-parse improvements and additions @dktr0 et al
  • grain function for combining begin and end (in terms of begin and duration) @khoparzi
  • Added missing pB and pR functions @thgrund
  • Emacs plugin bugfixes @jwaldmann
  • binaryN parameters now fully patternable @ndr-brt
  • press and pressBy functions for syncopation @yaxu
  • bite’s first parameter is now patternable @ndr-brt
  • Most SuperDirt control/effect parameters can now be modified while a sound is playing, using ‘bus’ functions. @telefon + @yaxu
  • Sound.Tidal.Params is now generated by a script in bin/generate-params.hs @yaxu
  • qtrigger is now an alias for ctrigger, which now quantises to the next cycle (via ceiling) @thgund / @yaxu
  • There is now also ftrigger and rtrigger for floor (previous) and round (nearest) cycle
  • whenmod’s first two parameters are now rationals, and patternable. @th-four / @yaxu
  • brand and brandBy for continuous patterns of boolean values @yaxu
  • Two-way protocol between Tidal and SuperDirt, initially to receive available busses @telefon / @yaxu
  • bipolar waveforms - sine2, square2, tri2, saw2, cosine2 @yaxu

1.6.1 - We are not DJs

  • Patternise first parameter of chunk @lwlsn
  • Patternise fit parameter @bgold-cosmos
  • Increase upper bounds of random @yaxu
  • Switch travis to ubuntu bionic @yaxu

1.6.0 - Keep live coding live

  • Rollback to previous pattern on parse error @jwaldmann
  • Increased strictness to catch parse errors earlier @jwaldmann @yaxu
  • Support for superdirt ‘panic’ @yaxu
  • Increase hosc upper bounds to admin 0.18
  • New function ‘splat’ @yaxu
  • quantise now uses round, add qfloor, qceiling variants and qround alis @lwlsn
  • Add ghc 8.8.3 to travis @jwaldmann
  • Switch substruct to use binary pattern @yaxu

1.5.2 - Rivelin

  • Fix streamAll

1.5.1 - Blacka Moor

  • Bugfix splice

1.5.0 - Active travel

  • Export drawLineSz @mxmxyz
  • tidal-parse additions (bite, splice, pickF, select, squeeze; fixed slice) @dktr0
  • New, more efficient pseudorandom number generator @dktr0
  • Pattern first someCyclesBy param @bgold-cosmos
  • Refactored, more flexible OSC targetting @yaxu
  • Simplify tidal-boot-script in tidal.el @jamagin
  • Support state substitution in mininotation #530 @yaxu
  • Pattern first parameter of splice #656 @yaxu
  • Pattern first parameter of chew @yaxu
  • add ‘x’ fraction alias for 1/6 @yaxu
  • add dfb alias for delayfeedback param, dt for delaytime @yaxu
  • add unmuteAll and only to BootTidal.hs @yaxu

1.4.9 - Housebound spirit

  • Simplify ‘show’ing of patterns @yaxu
  • New draw function for drawing a pattern of single characters as a text-based diagram, with friends drawLine and drawLineSz for drawing multiple cycles @yaxu
  • Fixes and expansions of ratio aliases - s should be a sixteenth @mxmxyz, w is now 1, f is now 0.2
  • Simplify definition of accumulate using scanl @benjwadams
  • The first parameter of someCyclesBy is now patternable @bgold-cosmos

1.4.8 - Limerick

  • Add ratio shorthand to floating point patterns @yaxu
  • Support fractional scales, add Arabic scales @quakehead
  • Additions to tidal-parse including support from overgain, overshape adn rot @dktr0
  • Move prompt-cont setting to end of BootTidal.hs (older versions of Haskell crash out at this point) @ndr-brt

1.4.7 - Bleep

  • Fix BootTidal.hs - make loadable in atom @bgold-cosmos
  • More additions to tidal-parse @dktr0

1.4.6 - Megatron

  • Experimental ratio shorthand ref #573 @yaxu
  • Store mininotation source location(s) in events ref #245 @yaxu
  • Add more things to tidal-parse @dktr0 @yaxu
  • Separate out haskell parser from tidal-parse into new hackage module called ‘haskellish’ @dktr0
  • Support patterning polyrhythmic % steps in mininotation @yaxu
  • Fixes to emacs plugin (tidal.el) @xmacex
  • New parameters for freq, overgain, overshape, and missing midi params including the new nrpn ones @yaxu

1.4.5 - Porter Brook

  • Mini notation - @ (and its alias _) now accepts rational relative durations. E.g. a [email protected] c d to make b have a half step (that would be the same as a@2 b c@2 c@d). This can also be patterned a b@<0.5 2> c d @yaxu #435
  • Experimental reset function - stick in a pattern so it acts as though the cycle number was reset to 0, from the next cycle @yaxu
  • Bugfix for setR in BootTidal.hs @yaxu
  • Mini notation - !, @ and _ now work properly within {} and <>, e.g. <a b ! c!3 d> will repeat every 7 cycles @yaxu #369 #248
  • Mini notation - @ and _ are now aliases for each other, e.g. a_3 is the same as a@3 as are _ and @ @yaxu #369
  • Frame skipping on clock jumps now configurable @yaxu #567
  • Sync between tidal instances now works straight away, without having to setcps @yaxu #569
  • New while function for applying a function selectively according to a binary pattern @yaxu
  • Lowercases aliases slowappend and fastappend for slowAppend and fastAppend respectively @yaxu
  • Many tidal-parse updates @dktr0

1.4.4 - Chee Dale

  • wrandcat (weighted randcat) @yaxu
  • MIDI Sysex support #558 @yaxu
  • Elements in an Open Sound Control path address can now be patterned #557
  • ‘once’ now chooses a random cycle to play. To get the old behaviour of playing the first cycle, use ‘first’ @yaxu #476
  • Make random choices in mini-notation behave independently @yaxu #560
  • Add [a|b|c] syntax to mini notation for randomly choosing between subsequences @yaxu #555
  • Add power pattern operators |**, | and || @yaxu

1.4.3 - Stanage Edge

  • Fix for xfade / xfadein transition
  • New function plyWith

1.4.2 - Higger Tor

  • Fix for ‘nudge’

1.4.1 - Carl Wark

  • improvements to handling of cps changes @yaxu #501
  • fix for parameter patterning in ‘range’ @yaxu #547

1.4.0 - Padley Gorge

  • fix representation to handle continuous and analog events properly @yaxu

1.3.0 - rolled back to 1.1.2

1.2.0 - Hunters Bar

  • Simplify <* and *>, removing any distinction between analogue and digital patterns

1.1.2 - Eccy Road

  • Usability fix for binary / binaryN (use squeezeJoin on input pattern)

1.1.1 - Chelsea Park

  • Usability fixes for binary / binaryN / ascii @yaxu

1.1.0 - Brincliffe Edge

  • binary and ascii functions for playing with bit patterns @yaxu
  • support chord inversions in chord parser @bgold-cosmos
  • skip ticks when system clock jumps @yaxu
  • fix crash bugs in mini notation parser and grp @yaxu
  • new stitch function @yaxu
  • |++, ++| and |++| for combining patterns of strings by concatenation @yaxu
  • send best effort of a sound id to dirt / superdirt if sendParts is on, allowing parameter adjustment of previously triggered sound (without chopping) @yaxu
  • qtrigger - quantise trigger to nearest cycle @yaxu
  • add setI, setF et al to BootTidal.hs for setting state variables @yaxu
  • BootTidal.hs now sends d1 .. d12 to orbits 0 .. 11 respectively @yaxu
  • markov chain support with runMarkov and markovPat @bgold-cosmos
  • simplify / fix mask and sew @yaxu
  • Adjust <* and > (and therefore |+, +| etc) to be closer to <>, explanation here: https://penelope.hypotheses.org/1722 @yaxu
  • extract minitidal into its own package tidal-parse (using cabal multipackages), renaming to Sound.Tidal.Parse @yaxu @dktr0
  • benchmarking @nini-faroux
  • minitidal refactor, support for parsing more of tidal, tests @dktr0

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://codeberg.org/uzu/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.