Releases: Bubobubobubobubo/sardine
v0.4.0
Hello everyone. It's been a long time since Sardine received an official update. I'm taking advantage of a refactoring we've undertaken with @thegamecracks to set the record straight. This version is Sardine v0.4.0 that sums up all the changes that happened on the repo since last december.
Project structure and refactoring
Sardine is now a complex project. You need the library for sure but you also need a code editor to play efficiently and that release is bringing a lot on that side. Part of the internal refactoring is the consequence of how the project has naturally evolved in the few past months.
- Sardine is the main repository. It contains the Sardine Library but also the Sardine Documentation.
- The documentation is automatically built on every commit, allowing small edits and encouraging contributions.
- Sardine Web is now a separate repository. It contains the default text editor.
- once installed, the editor will be available through the sardine web command, just like before.
- Sardine VSCode is another option for those who prefer an editor that is easy to setup and configure.
The project structure has evolved a lot. Sardine is now split between sardine
, the interpreter, and sardine_core
, the Python library imported by that interpreter for each session. As stated above, the client
and server
folders that previously contained the web editor are now gone and live happily in their own repository. There are new dependencies to account for the introduction of a fork of Vortex.
New features
- Clock based Low Frequency Oscillators (LFOs): useful modulators for live performance.
- MIDIController & MIDIInstrument: what about configuring your own MIDI tools.
- Until: play a pattern
n
times. - Condition System: conditional patterning, very confusing.
- Ziffers integration: the wonderful Ziffers library for live coding melodies.
- Vortex integration: The version of TidalCycles that nobody wants to love. Currently a hard fork but I am planning to make Sardine take from Vortex and republish it on Pypi.
- Global variables: the best thing since sliced bread. Add variables in your patterns.
- Custom Iteration Span and Iteration Limit:
l=4
to limit your iterator to4
,i=3
to make it iterate 3 by 3. - Extension system: meet Claude and other Sardine plugins :)
- SPL troubleshooting: small improvements with polyphonic events, many new functions in the Function Library.
What's Changed
- Paper proof read by @jarmitage in #137
- Add credits by @jarmitage in #138
- fix affiliations formatting by @jarmitage in #139
- [docs] syntax update after v0.2 rewrite by @mugulmd in #136
- Fixing documentation for 0.2 by @Bubobubobubobubo in #140
- Update solstice.md by @Rhoumi in #142
- Fix arguments not being transferred to deferred states by @thegamecracks in #144
- [Breaking] Introducing conditional patterns and other parser fixes by @Bubobubobubobubo in #145
- Cleanup the mess in first section of installation docs by @thegamecracks in #151
- Merging experimental local branch into 'main' by @Bubobubobubobubo in #153
- fix midi device configuration for Windows by @giohappy in #152
- Adds support for remote code execution by @JMPothelune in #154
- Adds missing ignored lib by @JMPothelune in #155
- 148 sardine gui by @JMPothelune in #157
- Rewires the front and the back :) by @JMPothelune in #158
- Allows static build by @JMPothelune in #159
- Button management by @JMPothelune in #160
- 148-sardine-gui by @JMPothelune in #163
- Fixing Windows issues by @amiika in #165
- Replace 'r' with new term 'rand' in documentation by @bench in #170
- Merging the experimental branch in main by @Bubobubobubobubo in #174
- Remove old states in @swim if runner has stopped by @Bubobubobubobubo in #175
- documentation - edits to Sound Patterns by @HighHarmonics2 in #177
- Fishery web bugfixes by @hatchjaw in #179
- Hh documentation edits by @HighHarmonics2 in #180
- Automatically build fishery client during wheel creation by @thegamecracks in #181
- Reformat again by @thegamecracks in #183
- Removing commas from the Sardine Pattern Language by @Bubobubobubobubo in #184
- add Effects Presets section to presets.md by @HighHarmonics2 in #193
- getting started changes by @HighHarmonics2 in #196
- Update getting started - patterns.md by @HighHarmonics2 in #197
- add content for period-divisor-rate by @HighHarmonics2 in #200
- Add python.md to diving_deeper by @HighHarmonics2 in #201
- edits in diving deeper by @HighHarmonics2 in #203
- add vowel and filters to audio engine by @HighHarmonics2 in #204
- Docs improvements by @Bubobubobubobubo in #205
- Rewrite OSCLoop to run in the event loop's thread by @thegamecracks in #206
- update filtering.md by @HighHarmonics2 in #210
- more filtering.md edits by @HighHarmonics2 in #211
- edits to sleeping.md by @HighHarmonics2 in #215
- Prototype of Vortex -> Sardine by @Bubobubobubobubo in #216
- Vortex scheduling by @Bubobubobubobubo in #217
- update mininotation.md by @HighHarmonics2 in #219
- Plugin system for custom handlers by @mugulmd in #220
- update extensions management by @JMPothelune in #222
- Showcase updates by @HighHarmonics2 in #223
- Merging dev branch with new features by @Bubobubobubobubo in #225
- Nobody saw anything, Sardine was never broken by @Bubobubobubobubo in #226
- last correction by @Bubobubobubobubo in #227
- Add rot function by @ssidorenko in #228
- [docs] add showcase: Claude by @mugulmd in #229
- MidiInHandler: Fix queue order bug and optimize message handling by @ssidorenko in #230
- Fix MIDI note duration handling by @ssidorenko in #232
- Attempt to fix unsync bug by @Bubobubobubobubo in #233
- Allow negative numbers as rot argument by @ssidorenko in #234
- Add and, or, xor lists operators to SPL by @ssidorenko in #235
- Add min79 chord by @ssidorenko in #237
- Add ramp w/interpolation operator by @ssidorenko in #238
- Fix an issue where MIDI ports in windows have a number appended to them by @ssidorenko in https://github.com/Bubobubobubobubo/s...
v0.2.1
Summary
This release introduces multiple improvements to runners/players and adds support for CPython 3.11, and is also the first release to come out on PyPI as the sardine-system package!
Users migrating from v0.2.0 or earlier will need to uninstall the sardine
package, due to the name being changed.
Changelog
-
Fixed Sardine not being properly packaged with the appropriate
fishery
andsardine
modules -
Improved interval calculations of
AsyncRunner
to reduce drifting over a long runtime -
Fixed the
sleep()
function not affecting senders like they used to (#128) -
Updated players to use a persistent iterator counter, allowing patterns of the same length to be pushed without abruptly starting from the beginning (#130)
-
Increased tolerances for
BaseClock.get_beat_time()
to mitigate potential "double/rapid iterations" occurring particularly on unix systems (#134) -
Updated dependencies so users no longer have to go through compilation of C++ extensions
- LinkPython has been replaced with the LinkPython-extern fork
- Installation instructions have been updated to include a
--find-links
option pointing to a custom repository hosting wheels for python-rtmidi
3.11 support was previously not possible due to the original LinkPython package not being compilable on 3.11. C++ build tools were also required because both LinkPython and python-rtmidi did not have any prebuilt wheels uploaded for 3.10 - 3.11. With the current solution now, installing Sardine on both 3.10 and 3.11 can be achieved without having to download any build tools to compile the two packages from source.
All commits made since v0.2.0: v0.2.0...v0.2.1
v0.2.0
This version is a complete Sardine rewrite. See #122 for the complete changelog. Many thanks to @thegamecracks for the work done on the core sardine internals.
What's Changed
- Rewrite clock by @Bubobubobubobubo in #118
- Sardine big rewrite by @thegamecracks in #122
Full Changelog: v0.1.0...v0.2.0
v0.1.0
This is the last version of Sardine v0.1.0 before the rewrite. It has been released for archival purposes.