Skip to content

Releases: zoomoid/waveman2

v1.3.0

Choose a tag to compare

@zoomoid zoomoid released this 19 Dec 14:39
10ac270

This update includes two new core plugins, wave and sweep. Both were previously (sort of) included in the line plugin and enabled via flags.
Their results were however always a bit hacky and looked a bit bad. Their painting logic has been cleaned up, in particular the cubic bezier curve control point interpolation algorithm has been revised for the sweep plugin.

Sweep

sweep demo

Wave

wave demo

  • feat: add wave and sweep to core/v1 plugin group.
  • fix(transformer): plank taper window produces zero samples in the middle due to wrong bound checks

Full Changelog: v1.2.0...v1.3.0

v1.2.0

Choose a tag to compare

@zoomoid zoomoid released this 13 Dec 14:53
a16e204

v1.2.0

This update includes some new features for the transformer stage and changes up the plugin architecture to allow for more modular extension.

  • feat(transformer): samples can be clamped, using --clamp-low and --clamp-high
  • feat(transformer): windowing functions for attenuating samples at the start and end of a track. This helps with undersampling peaks
  • feat(transformer)!: normalization is now optional. Running in batch mode screws with the levels of all tracks as a whole. The old behaviour can be recreated by using --normalize.
  • feat(infra): plugins are now self-contained in a group. They are also exposed by an interface.
  • feat(cmd)!: plugins are no longer enabled by flags, but attach a subcommand to the root waveman command, e.g., waveman --box is now waveman box. This also makes the manual mutual exclusion code obsolete.
  • feat(plugin/line): add mirroring -- For an example, just see the waveform at the top of the README
  • fix(plugin/line): inverted now behaves as you would expect: if not specified, the 0-axis is at the bottom of the frame (whereas it was at the top previously); specifying --inverted will reproduce the previous behaviour visually (under the hood, the CSS transforms have been exchanged for explicit coordinate computation)
  • ci: removed cosign and upgraded actions

Decoder abstractions

We experimented with exchanging the (really slow) go-mp3 dependency for other MP3 decoder backends. This proved to be more challenging than expected: the next best implementation uses CGO and https://github.com/lieff/minimp3 to provide bindings to a single-header MP3 decoder library. It's instrumentation is not particularly fit for our use-case. Also, the Go bindings don't implement seeking which we heavily rely upon (though the underlying C library does). We looked at some Rust bindings of the same C library and considered adapting that to Go, but kept running into issues when trying to pass in data structures and heap-allocated stuff due to Go's memory layout constraints and particularly, the constraints for CGO.

We have decided to postpone this implementation indefinitely until there's more reason for it: currently go-mp3 still works fine if you can spare a couple of seconds. MP3 decoding is messed up anyways...

Full Changelog: v1.1.2...v1.2.0

v1.1.2

Choose a tag to compare

@zoomoid zoomoid released this 19 Sep 19:48
4592ec1
  • fix: wrong shell completion mode for --interpolation flag

v1.1.1

Choose a tag to compare

@zoomoid zoomoid released this 19 Sep 19:36
066e1b5
  • feat: add flag autocompletion from cobra
  • refactor: move reference plugins and utils to pkg/

v1.1.0

Choose a tag to compare

@zoomoid zoomoid released this 19 Sep 15:26
445e121
  • chore: use Apache 2.0 as License for the project
  • fix: missing version flag for the binary
  • docs: auto-generated markdown command docs from cobra/docs.

Full Changelog: v1.0.4...v1.1.0

v1.0.4

Choose a tag to compare

@zoomoid zoomoid released this 14 Sep 13:54
bae6348
  • Fix CI cosign issue to publish the tagged release correctly

Full Changelog: v1.0.3...v1.0.4

v1.0.3

Choose a tag to compare

@zoomoid zoomoid released this 14 Sep 13:52
3d8e2f7

What's Changed

  • bug: transform origin of linepainter is distorting some instances by @zoomoid in #4
  • bug: svg template has the wrong preserveaspectratio properties by @zoomoid in #3

New Contributors

Full Changelog: v1.0.2...v1.0.3

v1.0.2

Choose a tag to compare

@zoomoid zoomoid released this 14 Sep 13:47
08adadc
  • Adds defaulting for stroke width and stroke color

Full Changelog: v1.0.1...v1.0.2

v1.0.1

Choose a tag to compare

@zoomoid zoomoid released this 14 Sep 13:36
27dcb2b

This change reverts the usage of go mod v2, which meant that importing waveman from other Golang projects required the inclusion of a
version number that was not consistent with the overall project's version.

Full Changelog: v1.0.0...v1.0.1

v1.0.0

Choose a tag to compare

@zoomoid zoomoid released this 19 Jul 13:39
a7c23d9

waveman2 1.0.0

This is the v1.0.0 release of the reworked waveman2. For the older version, see https://github.com/zoomoid/waveman

Waveman2 is out, rewritten as a single binary for easy CLI usage, extensibility by means of plugins, a lot of reusable code (e.g. for implementing a webserver that renders the waveforms) in well-grouped packages overall better experience, both UX and DX.

Select the binaries you need from the list below and unpack them to a directory in your $PATH to run waveman from your CLI.

Otherwise, you can also run the program in a pre-built Docker container:

# MP3_DIR="<directory>"
docker run -v ${MP3_DIR} ghcr.io/zoomoid/waveman2:v1.0.0 waveman2 ...