Releases: white-axe/determination
v2.1.3
- Updated Faust from 2.74.6 to 2.75.7.
- Updated LLVM from 17.0.6 to 18.1.8.
- Disabled LLVM fast-math in Faust's generated LLVM IR. This changes Mephisto's outputs slightly, but should significantly reduce the chances of Mephisto's outputs changing after updating Faust or LLVM again.
Full Changelog: v2.1.2...v2.1.3
Image digest (skopeo inspect oci-archive:container-image-determination.tar | jq -er '.Digest'
):
sha256:e9730e3b5d1db41523cb8f4b41b0a5c393a98e439c21a7799f8fed0ea784b678
Image ID (skopeo inspect --raw oci-archive:container-image-determination.tar | jq -er '.config.digest'
):
sha256:f1ab9a7ee6d61a4cc280011c893349b4ade55d98b9f7e9f70288947ad242aa83
SHA-256 hash of container-image-determination.tar:
sha256:902d250b93351ef6fa825f583a76ff93763eb199c2ae8837e6f9c65b12f054cf
SHA-256 hash of closure-determination.tar.zst:
sha256:03b65042cab3ec615f7042644435355ef6a0141bc6852f8b9775f3b2f8a6d841
v2.1.2
Updated Mephisto from version 0.19.127 to version 0.19.159. Also improved determination-renderer's concurrency handling and slightly optimized the build process for the image.
Full Changelog: v2.1.1...v2.1.2
Image digest (skopeo inspect oci-archive:container-image-determination.tar | jq -er '.Digest'
):
sha256:32233f17ebcb7e2d5c6957080961751d52903ca567d64275a2ca158e5f69b1ee
Image ID (skopeo inspect --raw oci-archive:container-image-determination.tar | jq -er '.config.digest'
):
sha256:c7c7f7ee5c58c26b1f968f8be4817cfb1eca07d32bba08d025fd2223d6878c7b
SHA-256 hash of container-image-determination.tar:
sha256:2b92ab7fec464812ceca15abf3287de936f92a473de93e8be5eedee2e41557a0
SHA-256 hash of closure-determination.tar.zst:
sha256:735e1669bf108d6b642ad2280bfdfe98b278bdea305a436157b535b40230bf4a
v2.1.1
Fixed a bug where ZynAddSubFX sometimes crashes with a segmentation fault.
Full Changelog: v2.1.0...v2.1.1
Image digest (skopeo inspect oci-archive:container-image-determination.tar | jq -er '.Digest'
):
sha256:2f33d7409fadc4ffa71ab0bd61b8ea0184feac5b96857e86d434aef7d5c41569
Image ID (skopeo inspect --raw oci-archive:container-image-determination.tar | jq -er '.config.digest'
):
sha256:33629a529e1aad6894115286662dec9c9926701c106d1ba4e37f579946daa318
SHA-256 hash of container-image-determination.tar:
sha256:fd8a5a486cb678b885f107ab08b5708036fba56cf429a186128168246fd21d51
SHA-256 hash of closure-determination.tar.zst:
sha256:6b04fc2c3428dd67540b7c84871b336c3f6a36d0997d9310f12226e09aa2440d
v2.1.0
Replaced Calf Studio Gear with Mephisto, an LV2 plugin that allows you to make your own synthesizers and effects in the Faust programming language. Mephisto can replicate all of Calf Studio Gear's effects and much more if you know how, so I cut out the middleman.
The -s
and -e
flags of determination-export
have been changed to take sample numbers instead of BBT numbers to make it easier to deal with projects that have tempos and time signatures that change throughout the project.
The default buffer size has been changed to 128 (was 256).
Some other changes:
- Added better help text to
determination-export
when you use the commanddetermination-export --help
. It now explains in detail how to set up a project for rendering and what you can and can't use. determination-export
should take less time to load projects now.- Removed a lot of warnings that show up when running
determination-export
. - The
determination-export
command now prints the rendering progress to the screen every 10 seconds in case you have a really slow computer. This delay time is adjustable using the--log-interval
flag. - The sample rate and buffer size used when rendering are now adjustable using the
-r
/--rate
and-b
/--buffer
command-line arguments todetermination-export
.
Full Changelog: v2.0.1...v2.1.0
Image digest (skopeo inspect oci-archive:container-image-determination.tar | jq -er '.Digest'
):
sha256:9fe4fed944f91c1cacc429f37d9c47028ea872b5c75f4af9035655ea1b212d9b
Image ID (skopeo inspect --raw oci-archive:container-image-determination.tar | jq -er '.config.digest'
):
sha256:709290d5a318f3d53e48d0783ce9434b82431479f0fecae735d6bd7d32d086f3
SHA-256 hash of container-image-determination.tar:
sha256:53161aa76ec652860f8c57f641c50d66e68367000c79aa71d78f98cd620d460c
SHA-256 hash of closure-determination.tar.zst:
sha256:78d1c26d305bb792b741630a5eeb9c880546764d1f86b7ea03da1cf02b9f6b6e
v2.0.1
- Fixed a problem where Calf Studio Gear produces nondeterministic results if there are multiple Calf Studio Gear plugins in the same project that use randomness.
- Reduced the uncompressed size of the image from 147 mebibytes to 73 mebibytes by removing all locale files other than those of the C locale as well as Calf Studio Gear's documentation and GUI skins and ZynAddSubFX's presets.
- Improved the robustness of
determination-renderer
's sample conversion algorithm and concurrency handling. - Silenced a vague warning that appears in red text when a Carla internal plugin is initialized. It has to do with us not setting a resource directory for Carla to use, but it's totally fine to silence it because Carla works fine without a resource directory.
- The named pipe that
determination-renderer
outputs the rendered raw PCM data to is now located at "/.determination-renderer-pipe" instead of "/determination-renderer-pipe" so that it isn't visible inls
's output.
Full Changelog: v2.0.0...v2.0.1
Image digest (skopeo inspect oci-archive:container-image-determination.tar | jq -er '.Digest'
):
sha256:6eb9015b96cb8aa405e5dac7c96316600e2c8f0b3786783c3334c1750a50ecfa
Image ID (skopeo inspect --raw oci-archive:container-image-determination.tar | jq -er '.config.digest'
):
sha256:dd5f89fb52caab8deb9a0d7d675a7a3754647cdc76006f908a150c866dd7bb1a
SHA-256 hash of container-image-determination.tar:
sha256:9b5cec2b7bc8f6b260a33e34950fbfd1029a5444c84a5c35625dab58041debe4
SHA-256 hash of closure-determination.tar.zst:
sha256:ad702f126486ca49dec8b3a6d120ff03932d6c027eee80cf485a33e3f25c944e
v2.0.0
Replaced the previous Ardour-based audio renderer with a new Carla-based one that's more featureful, much lighter (about 6 mebibytes including all dependencies other than the system libraries), less prone to segmentation faults and more resilient against nondeterminisms. Also removed Krita because Krita is really large and it doesn't really suffer from nondeterminisms like audio programs do anyways.
Added Calf Studio Gear as a new set of LV2 plugins. ZynAddSubFX might have some nice effects, but Calf's effects are just that much better and it was really easy to get it to behave deterministically.
Thanks to the new renderer, we no longer need to make significant changes to ZynAddSubFX to get it to behave deterministically now, so we now use the regular ZynAddSubFX codebase instead of a fork.
The new renderer requires around 256 mebibytes of shared memory. That means you now need to pass --shm-size 256m
to the docker run
or podman run
command if you're using Docker or Podman, or else you'll probably encounter a bus error (the default value of --shm-size
is 64m
at time of writing in both Docker and Podman).
Full Changelog: v1.3.2...v2.0.0
Image digest (skopeo inspect oci-archive:container-image-determination.tar | jq -er '.Digest'
):
sha256:785eefed5bdb01139044c034aef3cfce0838188d132d6dcd9a5f59256ff8317a
Image ID (skopeo inspect --raw oci-archive:container-image-determination.tar | jq -er '.config.digest'
):
sha256:94865e013df743cdbc7b6a18c52bbb379c714c91cd19caf7696608faa26adb40
SHA-256 hash of container-image-determination.tar:
sha256:2cb03bb0bd9ec01dcf0b478efa06529f2c1d9143829cb910d4e38b9c542e9847
SHA-256 hash of closure-determination.tar.zst:
sha256:fc3ed2a89141acf3dadddfdcf66e97abf5a45aa51d48841ade2f7d013852e945
v1.3.2
Updated ZynAddSubFX from 3.0.6-determinism0 to 3.0.6-determinism1 to fix nondeterministic behaviour of ZynAddSubFX at runtime. See the changes between these two ZynAddSubFX versions here: white-axe/zynaddsubfx@3.0.6-determinism0...3.0.6-determinism1.
Specifically, this fixes nondeterministic results when exporting an Ardour project containing a ZynAddSubFX instance that uses LFO in ADsynth or PADsynth with "sync" enabled, since that option causes the LFO phase to be calculated based on global time instead of time since the note started playing. The problem was that the global time for the LFO was being calculated based on the time since the synthesizer was initialized. It's now the time since the first note was played.
Full Changelog: v1.3.1...v1.3.2
Image digest (skopeo inspect oci-archive:container-image-determination.tar | jq -er '.Digest'
):
sha256:0ef8d6806617765b05fbb0099232423bdfe2257bf0b6ff349adfe06b5c5fc41a
Image ID (skopeo inspect --raw oci-archive:container-image-determination.tar | jq -er '.config.digest'
):
sha256:2ad4518f640d590de0771e3dce358d4e15e12354dd692610833d4e3236d8afb8
SHA-256 hash of container-image-determination.tar:
sha256:ba4e3db736cee38e2c1cfac99600d0c889f4d0a5bb0d50a3cdb332867ed2e6da
SHA-256 hash of closure-determination.tar.zst:
sha256:3588665bf1470edd3b911e042d97b54e7e879cd40407dd937cf5a3e365ebed26
v1.3.1
- Deduplicated some files that were present in more than one layer of the container image.
- Fixed a warning about not being able to load MP3 formats that appeared every time
determination-ardour-export
was used.
Full Changelog: v1.3.0...v1.3.1
Image digest (skopeo inspect oci-archive:container-image-determination.tar | jq -er '.Digest'
):
sha256:83b0c3119392e3af1f002a589398b4da144c763bdfc18bc0494d11acef681901
Image ID (skopeo inspect --raw oci-archive:container-image-determination.tar | jq -er '.config.digest'
):
sha256:e7df57801851b175efb0489ca9414ebdd89fd66824289521aa98a33cb99fd081
SHA-256 hash of container-image-determination.tar:
sha256:efabd60a7c0daefa33b356b78c696d989646be37f86a8ac801701a83b2ab01bd
SHA-256 hash of closure-determination.tar.zst:
sha256:39ca4f548da68355ec00f894c4830d9d176204cb1e335d8d80c61bd545fd02c3
v1.3.0
- Updated Nixpkgs from 23.11 to 24.05.
- Also removed the additional dependency on the unstable version of Nixpkgs since Nixpkgs 24.05 has all the packages and functionality we need.
- Updated Ardour from 8.4 to 8.6.
- Updated Krita from 5.1.5 to 5.2.2.
- Removed runtime dependency on GNU AWK.
- Removed build-time dependency on KVM (Kernel-based Virtual Machine).
determination-ardour-export
now prioritizes searching for LV2 plugins in /lib/lv2 over the paths in theLV2_PATH
environment variable instead of the other way around.- Elaborated a little more about reproducibility in the README.
Full Changelog: v1.2.0...v1.3.0
Image digest (skopeo inspect oci-archive:container-image-determination.tar | jq -er '.Digest'
):
sha256:6e2cd71fc08c03808e27aee085db65ae5879fe9b31742727d9bcf6d96c706c3b
Image ID (skopeo inspect --raw oci-archive:container-image-determination.tar | jq -er '.config.digest'
):
sha256:19d51d06a6810fa0e5c0d702ecc46dd8494e6ffda081207e89fdea35866a66c1
SHA-256 hash of container-image-determination.tar:
sha256:e63e6556bdb6f2817f9ada6887e98a338947aefce3dedb1c5e45a3832dfe4f11
SHA-256 hash of closure-determination.tar.zst:
sha256:f17bc0d5f93fa5cfcd84518eb5afe074121bc8a387253bcc77ae406194d0363a
v1.2.0
- Removed the image's runtime dependency on libcamera and pipewire, two packages that are known to have build reproducibility problems. With that, I'm confident the image now builds reproducibly, even if you build everything from source without using Nix's binary cache. Be warned that some of the image's build-time dependencies are known to not build reproducibly; only the image tarball (and the image on ghcr.io) is reproducible.
- The PATH environment variable is now explicitly set in the image configuration and in the
determination-ardour-export
anddetermination-krita-export
shell scripts instead of relying on the container runtime to provide a sane default. - The image now uses a custom image builder that builds a layered image, which improves development speed and the speed at which new updates to this image can be downloaded by container runtimes.
Full Changelog: v1.1.3...v1.2.0
Image digest (skopeo inspect oci-archive:container-image-determination.tar | jq -er '.Digest'
):
sha256:de9293eec1bf7b69bb407aed86d669af8acca80e30bfffb5bde6161142519359
Image ID (skopeo inspect --raw oci-archive:container-image-determination.tar | jq -er '.config.digest'
):
sha256:0fd0595075fdd1514cb925680dc5918dffb14c33a48ca816fdeaa5762402dffd
SHA-256 hash of container-image-determination.tar:
sha256:ce9c2c3192c3685f3c38a1ff8b6037b21533cd83ed3adf9b3679c609ce75a6fd
SHA-256 hash of closure-determination.tar.zst:
sha256:39f4099d77b3e8aa169e958458fe29adbdd118675afa6f5abaf4340276bea90b