2024-06-03T20:23:11+00:00 ⁄ nicorare:
X-axis decorators feature for annotating data.
2024-05-28T22:23:26+00:00 ⁄ nicorare:
Implementing onset + transient start detection for percussive sounds in music and doing some benchmarks; ended up taking the spectral flux approach with some specifics:
Input (raw)
Squared spectral flux
Half-wave rectification
2024-05-24T09:27:25+00:00 ⁄ nicorare:
Testing snare extraction/reconstruction using the base kick-drum model with user envelopes to recover perc noise.
Input:
Output + variations:
Input:
Output + variations:
2024-05-16T13:47:34+00:00 ⁄ nicorare:
Visibility can be toggled, and any envelope can be selected by focusing on one of its breakpoints.
2024-05-06T19:48:47+00:00 ⁄ nicorare:
Improved extraction for more complex inputs with presence of reverb, noisy transients or undefined low end tail; recreated with multiple variations in decay and transients.
Input:
Output + variations:
2024-04-04T16:21:09+00:00 ⁄ nicorare:
After searching for tools to smooth data with adaptive/dynamic parameters, ended up making a simple time-domain filter using a classic sliding window with adjustable weight distribution/curve (exponential, gaussian, whatever) and window size at each step.
The other solutions were getting tricky use because they introduced some non-linear or non-symmetrical phase delay effects on the output, making similarity or correlation tasks less precise unless some correction like bidirectional filtering was applied. (which would at least require storing parameter changes over time and reading them in reverse along with the signal during the backward pass).
Addaptive filter application that adjusts smoothing depending on input rate of change and input value.
2024-03-26T07:02:59+00:00 ⁄ nicorare:
Segmented linear editor with support for panning and zoom behaviour by syncing it with an underlaying draggable area component drawing wave data.
2024-03-17T14:47:42+00:00 ⁄ nicorare:
Editable breakpoint positions with constraints:
2024-03-16T21:53:19+00:00 ⁄ nicorare:
Mini QOL improvement for dragging both selection markers at once.
2024-03-12T10:57:36+00:00 ⁄ nicorare:
Percussion extraction and resynthesis experiments with relatively simple electronic sources.
Inputs taken from user suggestions in discord and reddit reconstructed into a clean, mostly sine-wave based kick drum.
Input:
Output + variations:
Input:
Output + variations:
Input:
Output + variations:
Input:
Output + variations:
I/O comparison graphs (first example):
2024-02-23T20:58:22+00:00 ⁄ nicorare:
Adding sample-accurate start and end selection controls by building on top of the scrollable waveform.
2024-02-19T22:03:46+00:00 ⁄ nicorare:
Some experiments with interpolation methods. I think these alternating rendering styles look quite pretty besides the increased performance, but they can be less accurate (and possibly jarring).
2024-01-25T18:24:57+00:00 ⁄ nicorare:
More optimizations for waveform rendering; now the visualization resorts to a lower fidelity representation during movement to make it faster while scrolling data.
There is a lack of balance in the perceived grey tones while switching between these two algorithms.
(!)There is a clear jitter-like effect in the anchor point that needs to be fixed
2023-12-23T17:12:02+00:00 ⁄ nicorare:
Optimized waveform rendering with more aggressive resampling, the signal is converted to a list of min-max ranges for each vertical position, with added neighbourg's slope (plain bool value that indicates "increasing" or "decreasing") for lerp between each vertical.
Some artifacts from the filtered samples are visible and make the waveform look kind of unstable when being panned, but still a great approximation for the performance gains.
2023-11-10T12:01:53+00:00 ⁄ nicorare:
Smoother waveform rendering algorithm with simple linear interpolation and some optimization tricks.
Currently overlapping each channel in favor of the previous amplitude range visualization, quite slower at the moment, but more intuitive.
2023-10-20T13:20:22+00:00 ⁄ nicorare:
Explorable waveform viz component with data that can load from disk using juce's audio thumbnail, which has a background thread for resolving sample data, can read in chunks from disk as necessary and handles caching. Avoids having to load everything into memory when not needed.
Demo with big wav files read from disk. mp3 files are noticeably slower when panning into non-cached data.
2023-10-02T12:17:20+00:00 ⁄ nicorare:
Adding zoom behaviour. XY dragging area component as a primitive that can be added for mouse-anchored pan and zoom actions over the waveform.
2023-10-01T20:28:25+00:00 ⁄ nicorare:
Making some UI components for working with time-series data in a more "inlined" style. Aiming to improve the user experience of some sample-based tools I've been working on.
Scrollable multi channel audio data in memory with drag control.