rename: Codename 206 -> Bari 206

Retires the working codename now rather than at 1.0, because the two identity
constants a DAW uses to recognise a plugin across sessions can only be changed
for free while nothing has saved a project with it. Verified: zero references
to the plugin across all 69 FL project backups, under any identity string.

Derived spellings:
    Cargo package     codename_206        -> bari_206
    bundle / DAW name Codename 206 |
                      206 prototype       -> Bari 206      (unified; drops "prototype")
    Rust types        Codename206(Params) -> Bari206(Params)
    CLAP_ID           com.mikkeli.codename-206
                                          -> org.novoyuuparosk.bari-206
    VST3_CLASS_ID     Codename206Maxi!    -> Bari206Multiband

CLAP_ID moves to reverse-DNS on a domain actually controlled, and stops
disagreeing with a VENDOR that was already Novoyuuparosk. VST3_CLASS_ID stays
exactly 16 bytes and drops "Maxi", which sat close to Image-Line's Maximus and
Maximizer in the same product category.

Author identity converges on Mikkeli Matlock <mikkeli@novoyuuparosk.org>;
Cargo authors had been carrying a personal gmail address while Plugin::EMAIL
already used the org one. VENDOR stays Novoyuuparosk, which is the org rather
than the person, and copyright stays with the person.

Deliberately unchanged: the repo, its remote, the local directory and the
homepage URL all keep "codename-206". Renaming those buys nothing and costs a
Gitea rename, a remote rewrite and a directory move, so the bare "codename-206"
is current branding rather than residue - and is the one spelling the STALE
list must not contain.

Driven by check-branding.sh rather than by grep: setting the canonical block
listed all 26 sites, including .github/workflows/ci.yaml, which no explicit
check covered. That gap is now closed by a positive check on the CI bundle
command, so a future rename fails in seconds instead of after a full compile.
STALE now carries both the retired and the new spellings, so the next rename
is self-checking too.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LU1NRL7fAaZTtFMTTPn2b1
This commit is contained in:
Mikkeli Matlock
2026-08-31 22:55:41 +09:00
parent 73edf58b32
commit 37f34e1175
14 changed files with 78 additions and 62 deletions
+1 -1
View File
@@ -52,4 +52,4 @@ jobs:
# not exercise — the bundle step is where bundler.toml and the crate name # not exercise — the bundle step is where bundler.toml and the crate name
# have to agree. # have to agree.
- name: Bundle - name: Bundle
run: cargo xtask bundle codename_206 --release run: cargo xtask bundle bari_206 --release
Generated
+8 -8
View File
@@ -147,6 +147,14 @@ dependencies = [
"windows-link", "windows-link",
] ]
[[package]]
name = "bari_206"
version = "0.1.0"
dependencies = [
"nih_plug",
"nih_plug_egui",
]
[[package]] [[package]]
name = "baseview" name = "baseview"
version = "0.1.0" version = "0.1.0"
@@ -337,14 +345,6 @@ dependencies = [
"objc", "objc",
] ]
[[package]]
name = "codename_206"
version = "0.1.0"
dependencies = [
"nih_plug",
"nih_plug_egui",
]
[[package]] [[package]]
name = "combine" name = "combine"
version = "4.6.7" version = "4.6.7"
+2 -2
View File
@@ -1,8 +1,8 @@
[package] [package]
name = "codename_206" name = "bari_206"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
authors = ["Mikkeli Matlock <matlockib@gmail.com>"] authors = ["Mikkeli Matlock <mikkeli@novoyuuparosk.org>"]
homepage = "https://github.com/mikkeli/codename-206" homepage = "https://github.com/mikkeli/codename-206"
description = "A VST3/CLAP multiband compressor/limiter with a custom gain-curve display" description = "A VST3/CLAP multiband compressor/limiter with a custom gain-curve display"
# VST3 is on by default in nih_plug, and its bindings (vst3-sys) are GPLv3. Any # VST3 is on by default in nih_plug, and its bindings (vst3-sys) are GPLv3. Any
+1 -1
View File
@@ -1,4 +1,4 @@
Codename 206 Bari 206
Copyright 2026 Mikkeli Matlock Copyright 2026 Mikkeli Matlock
Licensed under the GNU General Public License v3.0 or later. Licensed under the GNU General Public License v3.0 or later.
+4 -4
View File
@@ -1,4 +1,4 @@
# Codename 206 # Bari 206
*Called 206 because the Peugeot 206 has a 'maxi' variant. You'll know this is a Maximizer knockoff if you can follow that trail of thoughts.* *Called 206 because the Peugeot 206 has a 'maxi' variant. You'll know this is a Maximizer knockoff if you can follow that trail of thoughts.*
Multiband Compressor / Limiter VST3 — Project Plan Multiband Compressor / Limiter VST3 — Project Plan
@@ -163,8 +163,8 @@ The project is already scaffolded (NIH-plug + nih_plug_egui, pinned to a fixed g
```powershell ```powershell
# Build + bundle the VST3 and CLAP # Build + bundle the VST3 and CLAP
cargo xtask bundle codename_206 --release cargo xtask bundle bari_206 --release
# Output: target\bundled\Codename 206.vst3 and Codename 206.clap # Output: target\bundled\Bari 206.vst3 and Bari 206.clap
``` ```
### Deployment ### Deployment
@@ -184,7 +184,7 @@ Use the provided script (no need to remember the details):
`deploy.bat` is a double-click wrapper around the same script. `deploy.bat` is a double-click wrapper around the same script.
After deploying, in FL Studio: **Options → Manage plugins → tick "Rescan previously failed After deploying, in FL Studio: **Options → Manage plugins → tick "Rescan previously failed
plugins" → Find installed plugins**, then search for **Codename 206**. (The rescan-failed step plugins" → Find installed plugins**, then search for **Bari 206**. (The rescan-failed step
is essential — without it FL silently skips a plugin it has seen before.) is essential — without it FL silently skips a plugin it has seen before.)
> **Known issue (deferred):** the **CLAP** build shows its name/vendor/type correctly in FL, but > **Known issue (deferred):** the **CLAP** build shows its name/vendor/type correctly in FL, but
+2 -2
View File
@@ -3,5 +3,5 @@
# [package_name] # [package_name]
# name = "Human Readable Plugin Name" # defaults to <package_name> # name = "Human Readable Plugin Name" # defaults to <package_name>
[codename_206] [bari_206]
name = "Codename 206" name = "Bari 206"
+30 -14
View File
@@ -19,34 +19,44 @@
# run this script; every failure it prints is a place still holding the old name. # run this script; every failure it prints is a place still holding the old name.
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
PKG="codename_206" # Cargo package name == bundler.toml table key PKG="bari_206" # Cargo package name == bundler.toml table key
DISPLAY="Codename 206" # bundle name -> "<DISPLAY>.vst3" / "<DISPLAY>.clap" DISPLAY="Bari 206" # bundle name -> "<DISPLAY>.vst3" / "<DISPLAY>.clap"
PLUGIN_NAME="206 prototype" # Plugin::NAME - what the DAW displays PLUGIN_NAME="Bari 206" # Plugin::NAME - what the DAW displays
VENDOR="Novoyuuparosk" # Plugin::VENDOR VENDOR="Novoyuuparosk" # Plugin::VENDOR - the org, not the person
EMAIL="mikkeli@novoyuuparosk.org" # Plugin::EMAIL EMAIL="mikkeli@novoyuuparosk.org" # Plugin::EMAIL
HOMEPAGE="https://github.com/mikkeli/codename-206" # Cargo homepage -> Plugin::URL HOMEPAGE="https://github.com/mikkeli/codename-206" # Cargo homepage -> Plugin::URL
CLAP_ID="com.mikkeli.codename-206" # CLAP_ID - stable plugin identity CLAP_ID="org.novoyuuparosk.bari-206" # CLAP_ID - stable plugin identity
VST3_CLASS_ID="Codename206Maxi!" # VST3_CLASS_ID - stable identity, MUST be 16 bytes VST3_CLASS_ID="Bari206Multiband" # VST3_CLASS_ID - stable identity, MUST be 16 bytes
DESCRIPTION="A VST3/CLAP multiband compressor/limiter with a custom gain-curve display" DESCRIPTION="A VST3/CLAP multiband compressor/limiter with a custom gain-curve display"
CLAP_DESCRIPTION="Multiband compressor/limiter (stage 3: 3-band + 'All' channel)" CLAP_DESCRIPTION="Multiband compressor/limiter (stage 3: 3-band + 'All' channel)"
# Rust type names. Cosmetic - they never reach a host - but a rename that leaves # Rust type names. Cosmetic - they never reach a host - but a rename that leaves
# half of them behind is the residue that says nobody read the file. # half of them behind is the residue that says nobody read the file.
STRUCT="Codename206" # the Plugin impl target (src/lib.rs) STRUCT="Bari206" # the Plugin impl target (src/lib.rs)
PARAMS_STRUCT="Codename206Params" # the Params impl target (src/params.rs) PARAMS_STRUCT="Bari206Params" # the Params impl target (src/params.rs)
# Seeded with this repo's CURRENT names, which is the point: each entry is # Old spellings retired by the "Codename 206" -> "Bari 206" rename, plus the new
# skipped while it is still canonical above, and arms itself the moment you # ones so the NEXT rename is self-checking too. Each entry is skipped while it is
# change that value. So the planned "codename 206" -> "206" rename is # still one of the canonical values above and arms the moment it stops being one.
# self-checking - every spelling you miss turns into a FAIL here on the next run. #
# Deliberately NOT listed: the bare "codename-206". The repo, its remote and the
# homepage URL all keep that name on purpose, so it is current branding, not
# residue. The retired CLAP ID is listed in full instead, which cannot collide
# with the homepage.
STALE="codename_206 STALE="codename_206
codename-206
Codename 206 Codename 206
Codename206 Codename206
Codename206Params Codename206Params
Codename206Maxi! Codename206Maxi!
206 prototype 206 prototype
com.mikkeli.codename-206" com.mikkeli.codename-206
bari_206
Bari 206
Bari206
Bari206Params
Bari206Multiband
org.novoyuuparosk.bari-206"
set -u set -u
cd "$(dirname "$0")" || exit 1 cd "$(dirname "$0")" || exit 1
@@ -126,6 +136,12 @@ check "params field type" src/lib.rs "params: Arc<$PARAMS_STRUCT>,"
printf '\ndocs\n' printf '\ndocs\n'
opt_check "README bundle command" README.md "cargo xtask bundle $PKG" opt_check "README bundle command" README.md "cargo xtask bundle $PKG"
printf '\nci\n'
# CI bundles by package name, so a rename that misses this file breaks the build
# rather than drifting quietly - but it breaks after a full compile, which is a slow
# way to learn about a typo. Checking it here costs nothing and fails in seconds.
opt_check "CI bundle command" .github/workflows/ci.yaml "cargo xtask bundle $PKG"
printf '\ndeploy script\n' printf '\ndeploy script\n'
opt_check "deploy.ps1 default package" deploy.ps1 "\$Package = \"$PKG\"" opt_check "deploy.ps1 default package" deploy.ps1 "\$Package = \"$PKG\""
opt_check "deploy.ps1 VST3 bundle" deploy.ps1 "\$vst3Name = \"$DISPLAY.vst3\"" opt_check "deploy.ps1 VST3 bundle" deploy.ps1 "\$vst3Name = \"$DISPLAY.vst3\""
+4 -4
View File
@@ -1,6 +1,6 @@
<# <#
.SYNOPSIS .SYNOPSIS
Build Codename 206 and install the VST3 (and CLAP) into the system plugin folders. Build Bari 206 and install the VST3 (and CLAP) into the system plugin folders.
.DESCRIPTION .DESCRIPTION
FL Studio scans `C:\Program Files\Common Files\VST3` by default and ignores FL Studio scans `C:\Program Files\Common Files\VST3` by default and ignores
@@ -25,7 +25,7 @@
param( param(
[switch]$SkipBuild, [switch]$SkipBuild,
[switch]$User, [switch]$User,
[string]$Package = "codename_206" [string]$Package = "bari_206"
) )
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
@@ -42,8 +42,8 @@ if (-not $SkipBuild) {
if ($LASTEXITCODE -ne 0) { throw "cargo xtask bundle failed (exit $LASTEXITCODE)" } if ($LASTEXITCODE -ne 0) { throw "cargo xtask bundle failed (exit $LASTEXITCODE)" }
} }
$vst3Name = "Codename 206.vst3" $vst3Name = "Bari 206.vst3"
$clapName = "Codename 206.clap" $clapName = "Bari 206.clap"
$bundled = Join-Path $root "target\bundled" $bundled = Join-Path $root "target\bundled"
$vst3Src = Join-Path $bundled $vst3Name $vst3Src = Join-Path $bundled $vst3Name
$clapSrc = Join-Path $bundled $clapName $clapSrc = Join-Path $bundled $clapName
+1 -1
View File
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: GPL-3.0-or-later // SPDX-License-Identifier: GPL-3.0-or-later
//! DSP building blocks for Codename 206. //! DSP building blocks for Bari 206.
//! //!
//! The signal chain: a `crossover` filterbank splits into bands, each band (plus the summed //! The signal chain: a `crossover` filterbank splits into bands, each band (plus the summed
//! 'All' channel) runs a `compressor`, and a `limiter` (with a true-peak `oversampler` detector) //! 'All' channel) runs a `compressor`, and a `limiter` (with a true-peak `oversampler` detector)
+2 -2
View File
@@ -10,7 +10,7 @@ use nih_plug_egui::egui::{
self, pos2, vec2, Align2, Color32, CornerRadius, DragValue, FontId, Painter, Rect, Sense, Stroke, self, pos2, vec2, Align2, Color32, CornerRadius, DragValue, FontId, Painter, Rect, Sense, Stroke,
}; };
use crate::params::Codename206Params; use crate::params::Bari206Params;
/// Height of the handle strip. /// Height of the handle strip.
const GRAPH_H: f32 = 54.0; const GRAPH_H: f32 = 54.0;
@@ -30,7 +30,7 @@ fn fmt_hz(hz: f32) -> String {
} }
} }
pub(super) fn draw(ui: &mut egui::Ui, params: &Codename206Params, setter: &ParamSetter) { pub(super) fn draw(ui: &mut egui::Ui, params: &Bari206Params, setter: &ParamSetter) {
let lo = params.crossover_low_hz.value(); let lo = params.crossover_low_hz.value();
let hi = params.crossover_high_hz.value(); let hi = params.crossover_high_hz.value();
// Each param's own min/max (normalized 0/1 map to the range ends). // Each param's own min/max (normalized 0/1 map to the range ends).
+2 -2
View File
@@ -10,14 +10,14 @@ use std::sync::atomic::Ordering;
use crate::dsp::compressor::Compressor; use crate::dsp::compressor::Compressor;
use crate::meters::Meters; use crate::meters::Meters;
use crate::params::Codename206Params; use crate::params::Bari206Params;
/// Side length of the square plot. /// Side length of the square plot.
const CURVE_SIZE: f32 = 150.0; const CURVE_SIZE: f32 = 150.0;
/// dB extent of both axes (bottom/left = FLOOR_DB, top/right = 0 dBFS). /// dB extent of both axes (bottom/left = FLOOR_DB, top/right = 0 dBFS).
const FLOOR_DB: f32 = -60.0; const FLOOR_DB: f32 = -60.0;
pub(super) fn draw(ui: &mut egui::Ui, params: &Codename206Params, selected: usize, meters: &Meters) { pub(super) fn draw(ui: &mut egui::Ui, params: &Bari206Params, selected: usize, meters: &Meters) {
let labels = ["LOW", "MID", "HIGH", "ALL"]; let labels = ["LOW", "MID", "HIGH", "ALL"];
let ch = selected.min(3); let ch = selected.min(3);
let cp = match ch { let cp = match ch {
+4 -4
View File
@@ -17,8 +17,8 @@ use nih_plug_egui::{
use std::sync::Arc; use std::sync::Arc;
use crate::meters::Meters; use crate::meters::Meters;
use crate::params::{Codename206Params, CompressorParams}; use crate::params::{Bari206Params, CompressorParams};
use crate::Codename206; use crate::Bari206;
mod crossover; mod crossover;
mod gain_curve; mod gain_curve;
@@ -36,7 +36,7 @@ struct EditorState {
} }
/// Build the plugin editor over shared handles to the params and meter state. /// Build the plugin editor over shared handles to the params and meter state.
pub(crate) fn create(params: Arc<Codename206Params>, meters: Arc<Meters>) -> Option<Box<dyn Editor>> { pub(crate) fn create(params: Arc<Bari206Params>, meters: Arc<Meters>) -> Option<Box<dyn Editor>> {
let egui_state = params.editor_state.clone(); let egui_state = params.editor_state.clone();
create_egui_editor( create_egui_editor(
params.editor_state.clone(), params.editor_state.clone(),
@@ -79,7 +79,7 @@ pub(crate) fn create(params: Arc<Codename206Params>, meters: Arc<Meters>) -> Opt
.min_size(Vec2::new(480.0, 320.0)) .min_size(Vec2::new(480.0, 320.0))
.show(egui_ctx, egui_state.as_ref(), |ui| { .show(egui_ctx, egui_state.as_ref(), |ui| {
egui::ScrollArea::vertical().show(ui, |ui| { egui::ScrollArea::vertical().show(ui, |ui| {
ui.heading(Codename206::NAME); ui.heading(Bari206::NAME);
meter::draw(ui, &meters, &mut state.meter); meter::draw(ui, &meters, &mut state.meter);
ui.separator(); ui.separator();
// Gain curve (left, square) beside the scrolling plot (right, fills the rest). // Gain curve (left, square) beside the scrolling plot (right, fills the rest).
+15 -15
View File
@@ -11,7 +11,7 @@ use dsp::compressor::{Compressor, MAX_LOOKAHEAD_MS};
use dsp::crossover::Crossover; use dsp::crossover::Crossover;
use dsp::limiter::Limiter; use dsp::limiter::Limiter;
use meters::Meters; use meters::Meters;
use params::{build_settings, Codename206Params}; use params::{build_settings, Bari206Params};
/// Peak-meter fall: after this long of silence the bars decay by 12 dB. (Matches nih-plug's /// Peak-meter fall: after this long of silence the bars decay by 12 dB. (Matches nih-plug's
/// gain-gui example feel.) /// gain-gui example feel.)
@@ -38,13 +38,13 @@ const ALL: usize = 3;
/// * ALL - 35 ms: full-band, so it must cover the low content too. /// * ALL - 35 ms: full-band, so it must cover the low content too.
const RMS_WINDOW_MS: [f32; 4] = [50.0, 20.0, 10.0, 35.0]; const RMS_WINDOW_MS: [f32; 4] = [50.0, 20.0, 10.0, 35.0];
/// Codename 206 — Stage 3: 3-band crossover + per-band compressors summed into an 'All' channel. /// Bari 206 — Stage 3: 3-band crossover + per-band compressors summed into an 'All' channel.
/// ///
/// Signal: input → LR4 crossover → {low, mid, high} each through their own compressor → sum → /// Signal: input → LR4 crossover → {low, mid, high} each through their own compressor → sum →
/// 'All' compressor → output. Bypassing low+mid+high collapses it to a plain full-band comp /// 'All' compressor → output. Bypassing low+mid+high collapses it to a plain full-band comp
/// driven by the 'All' channel (the crossover sums flat). /// driven by the 'All' channel (the crossover sums flat).
struct Codename206 { struct Bari206 {
params: Arc<Codename206Params>, params: Arc<Bari206Params>,
sample_rate: f32, sample_rate: f32,
crossover: Crossover, crossover: Crossover,
/// Compressors indexed by [`LOW`], [`MID`], [`HIGH`], [`ALL`]. /// Compressors indexed by [`LOW`], [`MID`], [`HIGH`], [`ALL`].
@@ -72,10 +72,10 @@ struct Codename206 {
/// Limiter gain reduction (dB) above which a plot bucket is flagged as hitting the ceiling. /// Limiter gain reduction (dB) above which a plot bucket is flagged as hitting the ceiling.
const CEILING_HIT_GR_DB: f32 = 0.1; const CEILING_HIT_GR_DB: f32 = 0.1;
impl Default for Codename206 { impl Default for Bari206 {
fn default() -> Self { fn default() -> Self {
Self { Self {
params: Arc::new(Codename206Params::default()), params: Arc::new(Bari206Params::default()),
sample_rate: 48_000.0, sample_rate: 48_000.0,
crossover: Crossover::new(), crossover: Crossover::new(),
comps: [Compressor::new(), Compressor::new(), Compressor::new(), Compressor::new()], comps: [Compressor::new(), Compressor::new(), Compressor::new(), Compressor::new()],
@@ -92,14 +92,14 @@ impl Default for Codename206 {
} }
} }
impl Codename206 { impl Bari206 {
fn lookahead_samples(&self) -> usize { fn lookahead_samples(&self) -> usize {
(self.params.look_ahead_ms.value() * 0.001 * self.sample_rate).round() as usize (self.params.look_ahead_ms.value() * 0.001 * self.sample_rate).round() as usize
} }
} }
impl Plugin for Codename206 { impl Plugin for Bari206 {
const NAME: &'static str = "206 prototype"; const NAME: &'static str = "Bari 206";
const VENDOR: &'static str = "Novoyuuparosk"; const VENDOR: &'static str = "Novoyuuparosk";
const URL: &'static str = env!("CARGO_PKG_HOMEPAGE"); const URL: &'static str = env!("CARGO_PKG_HOMEPAGE");
const EMAIL: &'static str = "mikkeli@novoyuuparosk.org"; const EMAIL: &'static str = "mikkeli@novoyuuparosk.org";
@@ -403,8 +403,8 @@ impl Plugin for Codename206 {
} }
} }
impl ClapPlugin for Codename206 { impl ClapPlugin for Bari206 {
const CLAP_ID: &'static str = "com.mikkeli.codename-206"; const CLAP_ID: &'static str = "org.novoyuuparosk.bari-206";
const CLAP_DESCRIPTION: Option<&'static str> = const CLAP_DESCRIPTION: Option<&'static str> =
Some("Multiband compressor/limiter (stage 3: 3-band + 'All' channel)"); Some("Multiband compressor/limiter (stage 3: 3-band + 'All' channel)");
const CLAP_MANUAL_URL: Option<&'static str> = Some(Self::URL); const CLAP_MANUAL_URL: Option<&'static str> = Some(Self::URL);
@@ -418,11 +418,11 @@ impl ClapPlugin for Codename206 {
]; ];
} }
impl Vst3Plugin for Codename206 { impl Vst3Plugin for Bari206 {
const VST3_CLASS_ID: [u8; 16] = *b"Codename206Maxi!"; const VST3_CLASS_ID: [u8; 16] = *b"Bari206Multiband";
const VST3_SUBCATEGORIES: &'static [Vst3SubCategory] = const VST3_SUBCATEGORIES: &'static [Vst3SubCategory] =
&[Vst3SubCategory::Fx, Vst3SubCategory::Dynamics]; &[Vst3SubCategory::Fx, Vst3SubCategory::Dynamics];
} }
nih_export_clap!(Codename206); nih_export_clap!(Bari206);
nih_export_vst3!(Codename206); nih_export_vst3!(Bari206);
+2 -2
View File
@@ -23,7 +23,7 @@ pub enum DetectionMode {
} }
#[derive(Params)] #[derive(Params)]
pub struct Codename206Params { pub struct Bari206Params {
#[persist = "editor-state"] #[persist = "editor-state"]
pub editor_state: Arc<EguiState>, pub editor_state: Arc<EguiState>,
@@ -87,7 +87,7 @@ pub struct CompressorParams {
pub mix: FloatParam, pub mix: FloatParam,
} }
impl Default for Codename206Params { impl Default for Bari206Params {
fn default() -> Self { fn default() -> Self {
Self { Self {
editor_state: EguiState::from_size(760, 520), editor_state: EguiState::from_size(760, 520),