Add Mix Tightener effect, multi-column preset menus, louder master (v0.7.0)
Mix Tightener — a preset-driven "channel strip in a box" (Neutron-style): parametric EQ → 3-band multiband compressor → peak limiter, all behind ONE visible control, Strength, which morphs the whole chain from transparent (0) to the full preset (1). Every per-band value is a hidden slot param the presets set; the editor shows only a vertical Strength fader. * DSP (Effects.kt): reusable RBJ biquad; LR-style 3-way crossover; per-band peak-follower compressors; fast peak limiter + output make-up. Performance: the expensive per-band gain computation (log/pow) runs at control rate while the envelope follower runs per sample; Strength≈0 bypasses the whole effect, and flat EQ bands / ratio≈1 comp bands are skipped. Output is clamped and NaN-guarded so a channel FX can never poison the master. * 30 factory presets (MixTightenerPresets) across drums (808 Crisp, Industrial Drums, Trap Hats, Techno Kick, DnB Breaks, …), bass (EBM Bass, Reese, Acid 303, Sub Bass Tame, Goth Bass, Synthwave Bass, …), synths/leads/pads (Synthwave Lead, Cutting Lead, Darkwave Pad, Arp Sparkle, …) and bus glue (Mix Glue, Loudness Max), seeded via PresetLibrary. Global: RetroDropdown now lays long option lists (>12) into balanced columns so preset menus grow sideways instead of into a tall vertical scroll — applies to every dropdown in the app. Master loudness: raise MASTER_GAIN 0.35 → 0.5 (~+3 dB) so playback sits closer to other media apps; the soft-knee limiter still catches peaks. Builds clean (staging + release). On-device performance profiling and install are pending — the device dropped off wireless adb mid-session. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -22,8 +22,8 @@ android {
|
||||
// (android.media.midi) and AAudio low-latency audio we rely on.
|
||||
minSdk = 26
|
||||
targetSdk = 34
|
||||
versionCode = 18
|
||||
versionName = "0.6.0"
|
||||
versionCode = 19
|
||||
versionName = "0.7.0"
|
||||
|
||||
// We provide our own instrumentation runner if/when tests are added.
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
Reference in New Issue
Block a user