Check and Windows preview / check (anvil) (push) Successful in 2m5s
Check and Windows preview / check (crucible) (push) Successful in 2m11s
Check and Windows preview / check (lathe) (push) Successful in 2m22s
Check and Windows preview / check (patina) (push) Successful in 2m50s
Check and Windows preview / check (rivet) (push) Successful in 46s
Check and Windows preview / check (temper) (push) Successful in 41s
Check and Windows preview / check (weld) (push) Successful in 39s
Check and Windows preview / previews (push) Failing after 24s
Check and Windows preview / windows (push) Skipped
Set the CLAP vendor of all seven plugins to "Bass Foundry" and name the combined preview ZIP bass-foundry-windows-x86_64.zip. CLAP IDs and saved state stay unchanged. Bring development.md and releases.md up to date with all seven products, the shared crates, the test types, the steps to add a product and the published releases. Add texture problems and seven texture plugin ideas to ideas.md.
212 lines
10 KiB
Markdown
212 lines
10 KiB
Markdown
# Plugin ideas
|
||
|
||
A running list of plugin ideas for riddim, dubstep and bass-music sound design.
|
||
Each entry names the problem first. Entries are grouped as released or idea. Names follow the metalwork theme of the Bass Foundry suite.
|
||
|
||
## Problems seen in bass-music production
|
||
|
||
1. Every bass patch brings its own sub level and phase, so the weight of a drop
|
||
jumps between switch-ups, and layered patches cancel in the sub.
|
||
2. Patches at the same peak level still differ in perceived loudness and
|
||
brightness. The usual fix is hand-set gain or clipping per patch.
|
||
3. Resampling is repetitive: bounce, chop, trim, declick, normalise, find the
|
||
root key, name, save, load into a sampler.
|
||
4. Writing wobbles: LFO shapes are drawn, synced, copied and edited for every
|
||
variation. Triplet and dotted patterns plus per-note changes take long.
|
||
5. Unison, OTT and stereo distortion widen the mids. Parts disappear in mono or
|
||
on club systems.
|
||
6. Kick and bass clash. Sidechain helps, but the sub phase at each note start
|
||
changes how the kick hits.
|
||
7. Distortion chains build up harsh resonances. (Patina covers this.)
|
||
8. Comparing a drop with a reference: the difference is usually sub/mid balance
|
||
over time, which generic meters do not show clearly.
|
||
9. Fixed-frequency tools act differently on every note. An EQ boost at 300 Hz
|
||
lifts the 4th harmonic of one note and the 7th of another; a distortion with
|
||
a fixed tone filter sounds brighter on low notes than on high notes.
|
||
10. Layered bass patches partly cancel in the mids, not only in the sub.
|
||
11. Texture makes a riddim patch: grit, rattle, metal, vowel, noise. It takes long
|
||
chains (distortion, comb, formant, OTT, resample, repeat), and the result
|
||
changes from note to note.
|
||
12. Grit and tone cannot be shaped separately. More distortion for more grit
|
||
also changes the body, the level and the low end.
|
||
13. Resampled textures sound printed: a loop of one moment, with no movement
|
||
inside the note.
|
||
14. Texture changes inside a note (the switch-up within one held note) need
|
||
automation lanes or chopping.
|
||
15. There is no meter for texture. Two switch-ups can sound "the same" without
|
||
a clear reason, and generic analysers show only level and spectrum.
|
||
|
||
## Released
|
||
|
||
### Anvil — sub anchor (problems 1, 6)
|
||
|
||
Replaces the band below a split frequency with a clean mono sine that follows
|
||
the bass pitch, at one level and one start phase for every note. Pitch comes
|
||
from detection with 80 ms lookahead or from MIDI. See [Anvil](anvil/README.md).
|
||
|
||
### Crucible — resampler (problem 3)
|
||
|
||
Records the input continuously. One click captures the last bars on the host
|
||
bar grid, slices on a grid or on hits, trims, declicks, normalises, detects the
|
||
root key and exports labelled WAVs, a full loop and an optional Serum/Vital
|
||
wavetable. See [Crucible](crucible/README.md).
|
||
|
||
### Lathe — harmonic EQ (problem 9)
|
||
|
||
EQ bands placed on harmonics 1–32 of the detected note instead of fixed
|
||
frequencies. "+4 dB on harmonic 3, −6 dB on harmonic 7" sounds the same on F1
|
||
and on C2. Odd/even balance, tilt over harmonic number, and a Focus control
|
||
that lifts or cuts everything between the harmonics. Uses Anvil's pitch
|
||
tracker, or MIDI. See [Lathe](lathe/README.md).
|
||
|
||
### Temper — note-tracked distortion (problem 9)
|
||
|
||
A waveshaper whose tone filters before and after the shaper follow the note, so
|
||
every note distorts with the same character and the same harmonic content.
|
||
Input level is normalised before the shaper, so drive does not depend on how
|
||
loud the patch is, and the output is gain-matched. Oversampled to keep aliasing
|
||
(which is never harmonic) out. See [Temper](temper/README.md).
|
||
|
||
## Ideas
|
||
|
||
### Weld — layer phase alignment (problem 10) — in development
|
||
|
||
Takes a second bass layer through the sidechain. It fits polarity and a chain
|
||
of up to four allpass sections to the measured cross-spectrum (no added
|
||
delay), so the layers sum instead of cancel. A display shows how much level the
|
||
cancellation cost and how much Weld recovered. Anvil solves the sub band; Weld
|
||
solves the mids. A sidechain test build exists; the fit comes after the FL
|
||
Studio routing test. See [Weld](weld/README.md).
|
||
|
||
### Ballast — switch-up loudness leveller (problem 2)
|
||
|
||
Measures short-term perceived loudness per note or per switch-up against a
|
||
target or a reference patch and adjusts gain only, so each switch-up lands at
|
||
the same loudness without compression changing its character. Earlier working
|
||
name: Hit Leveler. Pairs with Anvil: Anvil levels the sub, Ballast the whole
|
||
patch.
|
||
|
||
### Bellows — pitch-tracked resonator
|
||
|
||
A comb or Karplus-style resonator tuned to the detected note. It turns noise,
|
||
distortion or drums into pitched metallic tone that is in key on every note.
|
||
Damping, harmonic spread, single or multiple combs.
|
||
|
||
### Gauge — low-end mono check (problem 5)
|
||
|
||
Shows phase correlation and mono-sum loss per band and per note in the bass
|
||
range, and marks the notes where widening breaks the mono sum. Optional fixes:
|
||
mono below a chosen frequency and phase rotation on the mids. Display-first, so
|
||
it is a small build. Earlier working name: Bass Mono Check.
|
||
|
||
### Wobble sequencer (problem 4)
|
||
|
||
Step patterns for volume, filter, formant and pitch with triplet and dotted
|
||
grids built in. Each MIDI note selects a different pattern, so a switch-up is a
|
||
different note in the piano roll. ShaperBox overlaps, but it has no note-keyed
|
||
patterns. No name yet.
|
||
|
||
### Drop compare (problem 8)
|
||
|
||
Loudness-matched A/B of a drop against a reference, with sub, low-mid, mid and
|
||
high energy over time: for example "your sub is 3 dB under the reference in
|
||
bars 2–4". No name yet.
|
||
|
||
## Texture ideas
|
||
|
||
These ideas target problems 11–15. Most of them reuse the note tracker in
|
||
`common-dsp`, so a texture setting means the same thing on every note, the same
|
||
way Lathe and Temper work.
|
||
|
||
### Knurl — pitch-synchronous grit (problems 11, 13)
|
||
|
||
Knurling presses a ridged pattern into metal. Knurl cuts the signal into single
|
||
pitch periods with the note tracker and changes each period on its own:
|
||
|
||
- level and timing jitter per cycle;
|
||
- short noise bursts locked to the cycle;
|
||
- period doubling and tripling (a cycle pattern such as "loud, quiet, quiet"),
|
||
which gives the subharmonic rattle and growl of riddim basses;
|
||
- slow random drift of each harmonic's level and phase, which brings movement
|
||
into a printed resample without widening it.
|
||
|
||
Rates are in cycles, not in Hz or tempo, so the grit has the same grain on F1
|
||
and on C2. A pattern editor sets 1–16 cycles. Everything is mono-safe. Latency
|
||
is the tracker lookahead, about 67 ms. Recommended first texture build: it is
|
||
new, small, and reuses Lathe's tracking.
|
||
|
||
### Anneal — tone and grit split (problem 12)
|
||
|
||
Annealing changes how a metal behaves without changing its shape. Anneal
|
||
splits the signal into three parts: the harmonic part (energy on the harmonics
|
||
of the tracked note), the residual noise and grit between the harmonics, and
|
||
the transients. Each part has a level fader, a drive and a tilt.
|
||
|
||
- Turn the grit up 6 dB and keep the body and the sub unchanged.
|
||
- Take all the grit out of a layer and leave a clean tone for further design.
|
||
- Listen to each part solo, or send the grit to a second output for its own
|
||
chain.
|
||
|
||
DSP: an STFT with the note tracker; harmonic masks at k·f0, with a width that
|
||
follows the pitch; a transient mask from spectral flux. Latency is one FFT
|
||
frame. The display shows the three parts in different colours on Lathe's
|
||
harmonic strip.
|
||
|
||
### Swarf — in-key granular shavings (problems 11, 13)
|
||
|
||
Swarf is the shavings that machining leaves. Swarf records the bass itself and
|
||
sprays short grains of it back as a layer. Grain lengths are whole pitch
|
||
periods, and every grain is retuned to the note playing now, so the shredded
|
||
layer stays in key across a riddim line. Controls are density, spray (position
|
||
spread back in time), grain size in cycles, reverse probability, and a
|
||
harmonic-only filter for the layer. It is useful for the "shredded metal" top
|
||
layer, and works on a resample from Crucible as well.
|
||
|
||
### Etch — texture imprint (problem 11)
|
||
|
||
Etching transfers a pattern onto metal with acid. Etch takes a texture source
|
||
through the sidechain or from a loaded sample (a metal scrape, a vocal, a field
|
||
recording) and imprints its fine structure on the bass. The bass keeps its
|
||
pitch and its harmonic levels; between and on the harmonics, the source's
|
||
noise, roughness and movement come through. A "harmonic lock" mode samples the
|
||
source's spectral envelope only at the bass harmonics, so the imprint is always
|
||
in key. It differs from a vocoder: a vocoder transfers the envelope, and Etch
|
||
transfers the surface.
|
||
|
||
### Chase — talking formants that hit harmonics (problems 11, 14)
|
||
|
||
Chasing shapes metal by hammering it from the front. Chase is a formant filter
|
||
with a 2D vowel pad (a, e, i, o, u, plus "yoi" and "wub" shapes). You draw a
|
||
path over the pad and sync it to the tempo, or let each MIDI note select a path.
|
||
The formants stay in Hz, so a vowel stays a vowel on every note. A **snap**
|
||
control moves each resonant peak onto the nearest harmonic of the tracked
|
||
note, so a narrow formant never falls into the gap between two harmonics and
|
||
vanishes on some notes. Gain-matched, so a vowel change does not change the
|
||
level.
|
||
|
||
### Damascus — texture step sequencer (problem 14)
|
||
|
||
Damascus steel is folded from layers into a visible pattern. Damascus holds up
|
||
to four texture slots (for example a formant, a comb, a sample-rate reducer and
|
||
a Knurl-type rattle) and a tempo-synced step grid that chooses a slot, or a mix
|
||
of two, per step. Steps have their own crossfade time, so changes can be hard
|
||
cuts or smears. Each slot is gain-matched, so the steps change texture and not
|
||
level. Each MIDI note can select its own pattern, which is a texture switch-up
|
||
inside one held note. This overlaps with the wobble sequencer above; both could
|
||
become one plugin.
|
||
|
||
### Loupe — texture meter (problem 15)
|
||
|
||
A loupe is the lens used to inspect engraving. Loupe measures texture per note
|
||
over time:
|
||
|
||
- roughness and fluctuation strength (psychoacoustic models);
|
||
- harmonic-to-noise ratio, which shows how gritty a sound is;
|
||
- inharmonicity, which shows how metallic a sound is;
|
||
- brightness relative to the note (harmonic centroid, not centroid in Hz).
|
||
|
||
It places every switch-up of a drop as a point on a texture map. Two patches
|
||
that sit on the same point are why a drop sounds repetitive. A reference track
|
||
can be loaded for comparison. Display only, so it is a small build, and it fits
|
||
with Gauge and Drop compare.
|