728cce5e97
A stereo delay/echo plugin. Scaffolded rather than forked: the template
and the plugins built from it diverge on branding immediately, so they
share code by file copy — as codename-206 does — not by merge base. This
repo starts its own history.
Branded with tools/brand-plugin.sh. Everything derives from PLUGIN_NAME
("Kolmekivi" -> kolmekivi / Kolmekivi / KolmekiviParams), so no override
is pinned. CODENAME is set to the repo name and, by convention, stays
there even if the plugin is later renamed.
Two identity constants are now frozen and must never move, because hosts
key saved projects and presets off them:
CLAP_ID org.novoyuuparosk.kolmekivi
VST3_CLASS_ID KolmekiviDelay!! (exactly 16 bytes)
Host categorisation is set for a delay rather than left at the template's
generic placeholders — ClapFeature::{AudioEffect,Delay,Stereo} and
Vst3SubCategory::{Fx,Delay}. These decide where the plugin appears in a
host's browser and are not covered by the branding checker, which knows
about names rather than categories.
The DSP is not written. src/lib.rs still carries the template's example
gain parameter, so the plugin builds, bundles and loads while the delay is
implemented.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WHt4DykxXaQnyaJfyS8KCn
104 lines
4.4 KiB
Plaintext
104 lines
4.4 KiB
Plaintext
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
# branding.conf - this plugin's canonical identity.
|
|
#
|
|
# Managed by tools/brand-plugin.sh, read by tools/check-branding.sh. Hand-editing
|
|
# works and is sometimes the quickest thing, but the helper is what keeps this
|
|
# file, the source tree and tools/branding-sites.tsv agreeing with each other.
|
|
# Edit here and you are on the hook for running the checker afterwards.
|
|
|
|
# --- derivations ------------------------------------------------------------
|
|
# Defined before the values so the defaults below can use them.
|
|
# Package name: lowercased, every run of non-alphanumerics becomes one
|
|
# underscore. Cargo accepts hyphens too and maps them to underscores for the
|
|
# built artifact, which nih_plug_xtask already handles; underscores are used to
|
|
# match the Rust convention.
|
|
_derive_pkg() {
|
|
printf '%s' "$1" | tr '[:upper:]' '[:lower:]' \
|
|
| sed -e 's/[^a-z0-9]\{1,\}/_/g' -e 's/^_//' -e 's/_$//'
|
|
}
|
|
# Rust type name: CamelCase, non-alphanumerics dropped.
|
|
_derive_struct() {
|
|
printf '%s' "$1" | sed -e 's/[^A-Za-z0-9]\{1,\}/ /g' \
|
|
| awk '{for(i=1;i<=NF;i++) printf "%s%s", toupper(substr($i,1,1)), substr($i,2); print ""}'
|
|
}
|
|
|
|
# --- the names ---------------------------------------------------------------
|
|
PLUGIN_NAME="Kolmekivi"
|
|
VENDOR="Novoyuuparosk"
|
|
EMAIL="mikkeli@novoyuuparosk.org"
|
|
# Cargo's authors entry names whoever wrote it, which is not always the vendor:
|
|
# an org ships the plugin, a person authored it. Defaults to VENDOR when the two
|
|
# are the same, which is the common case for a one-person project.
|
|
AUTHOR="Mikkeli Matlock"
|
|
HOMEPAGE="http://192.168.2.199:3005/musiikki/kolmekivi"
|
|
DESCRIPTION="A stereo delay/echo plugin built with NIH-plug"
|
|
|
|
# What the plugin does *now*. No codename, no "prototype", no "v2 rewrite" -
|
|
# hosts show this to users who never knew any of that. check-branding.sh
|
|
# enforces the mechanical half by rejecting retired names and the repo codename.
|
|
CLAP_DESCRIPTION="Stereo delay with feedback and mix control"
|
|
|
|
# --- frozen identity ---------------------------------------------------------
|
|
# Hosts key saved projects and presets off these two. Change either and every
|
|
# existing session silently loses the plugin: the track comes up empty, with no
|
|
# error. Choose once before the first release, then never again.
|
|
# brand-plugin.sh refuses to move them without --allow-identity-change.
|
|
CLAP_ID="org.novoyuuparosk.kolmekivi"
|
|
VST3_CLASS_ID="KolmekiviDelay!!"
|
|
|
|
# --- fixed at repo creation --------------------------------------------------
|
|
# The repository's own name. Deliberately NOT renamed when the plugin is: the
|
|
# repo keeps its development codename while the plugin gets a product name.
|
|
# Recorded only so it can be kept out of user-facing text.
|
|
CODENAME="kolmekivi"
|
|
|
|
# Where the two Rust types are defined. A plugin whose params outgrow lib.rs
|
|
# points PARAMS_FILE at src/params.rs.
|
|
LIB_FILE="src/lib.rs"
|
|
PARAMS_FILE="src/lib.rs"
|
|
|
|
# --- derived unless overridden -----------------------------------------------
|
|
# Set one only when the derivation is wrong or rejected - a name like
|
|
# "206 Prototype" derives to "206_prototype", which cargo refuses because a
|
|
# package name cannot start with a digit.
|
|
#
|
|
# This template overrides three of them, which a real plugin usually will not:
|
|
# its package and type names are the template's own rather than derived from a
|
|
# product name. Delete these three lines after renaming and the derivations
|
|
# from PLUGIN_NAME take over.
|
|
# DISPLAY="Plugin Name" # defaults to PLUGIN_NAME
|
|
: "${AUTHOR:=$VENDOR}"
|
|
: "${DISPLAY:=$PLUGIN_NAME}"
|
|
: "${PKG:=$(_derive_pkg "$PLUGIN_NAME")}"
|
|
: "${STRUCT:=$(_derive_struct "$PLUGIN_NAME")}"
|
|
: "${PARAMS_STRUCT:=${STRUCT}Params}"
|
|
|
|
# --- retired spellings -------------------------------------------------------
|
|
# Must no longer appear in tracked files. An entry is skipped while it is still
|
|
# part of a canonical value above and arms the moment it stops being one, so a
|
|
# rename is self-checking in both directions. brand-plugin.sh appends here.
|
|
STALE="nih_plug_template
|
|
MyPlugin
|
|
PluginParams
|
|
A minimal NIH-plug audio plugin
|
|
Your plugin description
|
|
Plugin Name
|
|
Your Name
|
|
your@email.com
|
|
com.your-domain.plugin-name
|
|
Unique16CharId!!
|
|
YOUR-USERNAME
|
|
YOUR-PLUGIN-NAME
|
|
your-domain
|
|
https://github.com/YOUR-USERNAME/YOUR-PLUGIN-NAME
|
|
A minimal NIH-plug audio plugin
|
|
com.your-domain.plugin-name
|
|
Your plugin description
|
|
nih_plug_template
|
|
Unique16CharId!!
|
|
your@email.com
|
|
PluginParams
|
|
Plugin Name
|
|
Your Name
|
|
MyPlugin"
|