Where did [a function I like] go? Is the master branch unstable?

In my case the function is step'.

My question is a little rhetorical -- I see in the git logs that a lot of files were moved from src/Sound/Tidal/ to src/Sound/Tidal/old/, and then deleted. One of those was Strategies.hs, where step' was.

But ... what's up with that? Are people using an earlier snapshot rather than the master branch so that they can keep using all the functions that used to exist?

The 1.9-dev branch is probably where you want to be, unless you are working on 2.0.

It would make things easier for new (source) users if tidal was developed on develop (or similar) and merged to main upon each release, but alas tidal is (currently) developed on main and spawns other branches occasionally.

1 Like

Yes, 1.9-dev is the current stable version, representing 1.9.4 plus some minimal unreleased patches (that I'm going to release as 1.9.5 soon, once I figure out how to do releases). The repository is in an unstable place right now, since @yaxu has been working on a rewrite of the core pattern representation that's still very experimental. Once the dust settles, the plan is for Tidal 2.0 to have all the 1.0 functions (probably with a little API cleanup), but that depends on the core code stabilizing.

Out of curiosity, how have you been using the Tidal source? Are you looking to contribute or refer to the code, or are you running the library from source rather than installing it from Hackage? Historically, I don't think Tidal has had a very large developer community, so it would be great for us to figure out better ways for organizing and communicating about the development process.

Thank you both!

I checked out 1.9-dev and still everything I was missing was still missing. I found some of it in Sound/Tidal/OldUI.hs, and I've restored those functions (not the whole module -- I tried that and it seemed hard) by copying them to a module that does get imported.

@mindofmatthew I just run it from source. I've made a few minor contributions but I'm certainly not developing Tidal. I did try once, making an elaborate fork that used strict rather than lazy patterns, which were aware of their own duration, making concatenating things of different lengths easier -- but Tidal has evolved to the point where I don't think that branch offers much any more.

I use a few short definitions. One that I call hz, which is like n but takes a frequency value in Hz rather than fractions of an octave. Two functions meta (apply a patter of functions to a pattern) and replace (use a map to substitute other stuff in for a sequence on arbitrary symbols) that I had defined in horribly complex ways until @mvdirty found beautiful one-liners for them. A few synonyms (quantize instead of quantise, timecat rather than timeCat, etc.)

I've defined and used lots of other things in the past, but lost or forgot how to use most of them, and I doubt any of that stuff would be of interest to others.

Just to add a datapoint re: your “how have you been…” question…

I build and run from source primarily so that I can easily extend Tidal. I’ve layered up quite a few functions in and around scales, progressions, etc., have added some structures and helpers related to generating certain flavours of patterns, and surely a few smaller utilities I don’t recall at the moment. Nothing worthy of PRing into Tidal proper, but perhaps in the future. I do this work on a branch of a private fork, so that I can merge or cherry-pick official Tidal source when desired.

I also use the source to learn about Tidal internals, and even just for the sake of having HLS on hand when writing parts of scripts to load along with BootTidal, for things that don’t make sense to place in the Tidal source itself.

My work exists on the same laptop, and so for a while there some of my interest in building and running from source was to help with dependency management, though that is less of a concern now that a) I moved to building and running Tidal with a ghcup setup that I only activate in certain terminals and which is used for nothing else and b) all of my work stuff is Nixified.

Ah Nix :smiley:

I think 1.9-dev might be too dev for me. Which was the last commit in which Sound.Tidal.Transitions worked? [EDIT: This passage is wrong. I don't know why I thought it wasn't working.] I just tried to re-enable the lines in which it is commented out and ran into a thicket of undefined imports it wants.

And how do version numbers work? In the changelog I see transitions mentioned for version 1.7.10. The next version is 1.8.0. Should I expect 1.7.10 to be more stable than 1.8.0?

Version 1.8.2 (commit 860a480adbf9073b3fbeb686293ffef14f98a719) looks like where I want to be. Tidal.Transitions is still present in it -- and I was able to get it to work. (I couldn't meet the dependencies that 1.7.10 wanted.)

Where are you seeing transitions disabled? This is the version of Transition.hs that's in the 1.9-dev branch, and it's working fine for me.

In terms of version numbers, I think every version (at least since 1.0 or so) can be considered "stable." The tags in the git repository capture the canonical version of the code for each release. Tidal follows the general Haskell version policy more or less, where a change in the first two numbers (ie, 1.8 to 1.9) indicate a breaking change of some kind, and minor version increments (ie, 1.9.2 to 1.9.3) indicate that new features may have been added, but nothing was removed or changed.

1 Like

You're right, it works. I don't know how I got that wrong. Maybe I had started GHCI but hadn't run BootTidal.hs -- but that would be embarrassingly rookie. Cosmic ray, more likely.

1 Like