mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-08-19 06:52:38 +00:00
* Update GitHub repo references from feedback* to feedBack* * rename: slopsmith -> feedBack, byron -> got-feedBack Renames across the entire codebase: - slopsmith/Slopsmith/SLOPSMITH/SlopSmith -> feedBack/FeedBack/FEEDBACK/FeedBack - byron/Byron/Byrongamatos -> got-feedBack/got-feedBack/got-feedBack - /home/byron/ -> /opt/got-feedBack/ - byron@ougsoft.com -> hi@got-feedBack.org - github.com/byrongamatos/ -> github.com/got-feedback/ - com.byron. -> com.got-feedback. - SLOPSMITH_ env vars -> FEEDBACK_ with backward-compat fallback - Protocol/storage strings migrated with read-old/write-new pattern - window.slopsmith JS API -> window.feedBack (canonical) + backward-compat alias Refs: #rename-slopsmith * rename: complete regen against current main + fix backward-compat alias Regenerated the slopsmith->feedBack / byron->got-feedBack rename on top of current main (3 commits had landed since the branch: #572/#554/#574), resolving the four content conflicts in favour of main's newer content (autoplay/auto-exit, accuracy-badge, Virtuoso re-home, feedpak badge). Completion fixes on top of the mechanical rename: - Re-apply rename to post-branch content the original rename never saw: window.slopsmith(.Tour) consumers in lessons.js / notifications.js / onboarding-tour.js, and the matching JS + python tests (autoplay_exit, progression_*, test_feedpak_extension FEEDBACK_* env vars). The test env vars now match server.py (which reads FEEDBACK_SYNC_STARTUP / FEEDBACK_SKIP_STARTUP_TASKS), so the sync-startup test exercises the real path again. - Restore the window.slopsmith backward-compat alias dropped during conflict resolution, and move the bus aliases to AFTER the _feedBackExisting merge block so they reference the fully-assembled object (also fixes the loop_api.test.js API-surface regex, which the original PR latently broke). - Drop the stray empty data/web_library.db (runtime DB lives in CONFIG_DIR) and gitignore it. - Fix stale tone-source test: feed[dB]ack -> fee[dB]ack to match shipped source labels. Verified locally (org CI billing-blocked): JS 819/819 pass; pytest 1669 passed / 1683 collected with 0 import errors; zero residual slopsmith/byron except the two intentional window.slopsmith aliases. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * rename: implement advertised backward-compat + prune dead community plugins Address gaps where PR #537's "Backward compatibility" section was advertised but not implemented, and clean up the community plugin list. Env vars (FEEDBACK_* canonical, legacy SLOPSMITH_* honoured): - New lib/env_compat.py (getenv_compat / env_flag_compat) + tests. server.py (_env_flag + all FEEDBACK_* reads), diagnostics_hardware, gp2midi and tailwind_rebuild now resolve the legacy alias, so existing SLOPSMITH_UI / SLOPSMITH_PLUGINS_DIR / etc. deployments keep working. - Fix the rename collapsing plugins/__init__.py and minigames/routes.py from `FEEDBACK_PLUGINS_DIR or SLOPSMITH_PLUGINS_DIR` into a redundant `FEEDBACK_ or FEEDBACK_` (the fallback was silently lost). Storage (app.js update-channel): - Read feedBack-update-channel, fall back to legacy slopsmith-update-channel, and clear the legacy key on write — so a user's update-channel preference survives the rename instead of resetting to "stable". Community plugin list (README): the rename rewrote third-party repo URLs we don't own. Probed every one; their owners never renamed, so: - Restore the 13 live community plugins to their real slopsmith-* names. - Prune 6 that are 404 to the public (topkoa splitscreen/stems, OmikronApex tuner, Jafz2001 nam-rig-builder, DeathlySin song-preview, Erikcb91 shuffle). - Fix a pre-existing Guitar Theory clone-command typo (nam-tone -> guitar-theory). Verified: env_compat 7/7, JS 819/819, pytest 1690 collected / 0 import errors, rename-sensitive + startup suites green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: byrongamatos <xasiklas@gmail.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
FeedBack Tuner Plugin
A real-time guitar and bass tuner plugin for FeedBack.
This plugin adds a floating "Tuner" button to the FeedBack interface, providing a high-accuracy chromatic tuner with support for multiple presets, custom tunings, and automatic song tuning detection.
Features
- Real-time Pitch Detection: Uses the YIN algorithm for robust and accurate frequency tracking.
- Multiple Presets: Includes common guitar and bass tunings (Standard, Drop D, DADGAD, Open G, etc.).
- Automatic Song Tuning: Detects and selects the correct tuning for the currently playing song in the FeedBack player.
- Manual & Auto Tracking: Automatically estimates the closest string or allows manual selection for focused tuning.
- Visual Feedback: Large cents-deviation gauge, frequency display, and color-coded indicators.
- Custom Tunings: Add your own tunings via note names (e.g., E2, A2) or Hz frequencies in the settings.
- Audio Device Selection: Choose specific input devices and channels (Mono, Left, Right) for professional interfaces.
- Themable UI: Styled with Tailwind CSS to match your FeedBack theme.
- Visualizations: Pick from different visualizations to suit your needs (Currently: Default, Strobe, Analogue Gauge, Mace Fx III, and Toilet Tuner)
Available Visualizations
| Name | Image |
|---|---|
| Default | |
| Strobe | |
| Analogue Gauge | |
| Mace-Fx III | |
| Bender PP-Tiny | |
| CHEF MT-3 | |
| Toilet Tuner |
Installation
Download a Release
- Download one of the Releases
- Extract it to your plugins folder
- Restart FeedBack
Update Manager
The plugin is listed in the official plugin repository, so it can also be installed directly via the Update Manager
Git
cd /path/to/feedBack/plugins
git clone https://github.com/OmikronApex/feedBack-plugin-tuner.git tuner
# Restart FeedBack (or restart your docker container)
docker compose restart
How to Use
- Click the Tuner button at the bottom-right of the screen (or the "Tuner" button in the player controls).
- The tuner will automatically default to the Current Song tuning if you are in the player.
- Select other presets or custom tunings from the dropdown menu if needed.
- Pluck a string. The tuner will automatically detect the closest string in the selected tuning.
- (Optional) Click a specific note button in the tuner window to lock onto that string (useful for very out-of-tune strings).
- Adjust your tuning until the needle is centered and the indicator turns green.
Configuration
In-App Settings
Click the ⚙️ icon in the tuner window to access:
- Audio Input: Select your preferred microphone or audio interface.
- Channel Selection: Choose between Mono (mixed), Left, or Right channels (ideal for multi-channel audio interfaces).
- Visualization: Choose between different visualization options.
Plugin Manager
Access advanced settings via the FeedBack Plugin Manager (Settings -> Plugins -> Tuner):
- Floating Button: Toggle the visibility of the tuner button on the main interface.
- Tuning Visibility: Toggle which built-in tunings appear in your menu.
- Custom Tunings: Define your own tuning presets by entering a name and a list of notes/frequencies.
Changelog
[1.3.1] - 2026-06-04
- JUCE bridge audio input: when running inside FeedBack Desktop the tuner taps the engine's raw audio stream (
getRawAudioFrame) and runs its own tuning-optimised YIN over it, falling back to the browser microphone pipeline otherwise. - Fixed octave-low / sub-harmonic pitch errors (canonical YIN absolute-threshold selection) and added octave-aware nearest-string matching.
- "Free Tune" is now remembered as your last tuning, so it persists across sessions instead of resetting to a preset each time.
- Relocated visualization SVG assets to
visualization/assets/, served via the dedicated/api/plugins/tuner/viz-assets/route (supersedes the 1.3.0 note about the rootassets/directory). - Removed the legacy Tailwind stylesheet (
assets/plugin.css) and itsstylesmanifest entry — supersedes the 1.3.0 stylesheet note below.
[1.3.0] - 2026-06-01
- Added PP-Tiny visualization: inspired by the Fender PT-100 chromatic tuner panel, with a curved 11-LED arc, 8-segment note display with split centre bar, and always-on BATT. indicator.
- Added CHEF MT-3 visualization: inspired by the BOSS TU-3, featuring a 90° curved glass gauge arc, 51 tick marks, red 7-segment display, and rubber mode/brightness buttons.
- Refactored
screen.jsinto focused modules: audio pipeline extracted toutils/audio.js, UI layer extracted toutils/ui.js(shared-state factory pattern).screen.jsreduced from ~1060 to ~300 lines. - Normalised
DEFAULT_TUNINGSkeys to instrument keys (guitar-6,bass-4, etc.) — removes the internal group-name lookup table. - Added plugin stylesheet (
assets/plugin.css) via the FeedBack styles contract, ensuring arbitrary Tailwind classes render correctly for runtime-installed users. - Moved SVG assets (
Bathroom.svg,Plunger.svg,Toiletbowl.svg) to the rootassets/directory; removed the now-redundant custom asset route fromroutes.py. - Moved Toilet Tuner to the end of the visualization picker list.
[1.2.8] - 2026-05-31
- Added Toilet Tuner visualization: bathroom scene background with a plunger that slides left/right proportional to cents deviation; dips into the toilet bowl when in tune (±2 cents) and shows a 💩 emoji on the wall calendar.
[1.2.7] - 2026-05-31
- Added Mace Fx III visualization: dark navy LCD-style panel with a chromatic tick gauge, inward directional arrows, large note/octave readout, a rotating pink strobe semicircle, and a pixelated grid overlay.
- Improved tuner detection stability: median frequency filtering plus YIN octave correction (rejects both overtone and undertone errors) keeps low strings from jumping octaves as they decay.
- Added pluck-attack warm-up so the noisy string-attack transient no longer shows a wrong pitch before settling.
- Added frame-to-frame octave continuity tracking to eliminate residual octave flips.
[1.2.6] - 2026-05-31
- Added Analogue Gauge visualization: vintage mechanical instrument panel with rotating frequency and note name drums, semicircular needle gauge, and a physical-style in-tune lightbulb.
- Added AUTO mode indicator lamp: lights when Free Tune is active, dims on manual string lock.
- Visualizations now receive tuning mode context (
free/auto/manual) from the core plugin.
[1.2.5] - 2026-05-30
- Improved mic error handling: better error messages and inline error banner instead of browser alert.
- Fixed Real Tone Cable (mono-only USB audio) support when the device is explicitly selected.
- Fixed error banner persisting across screen navigation after a mic failure.
- Fixed stale error banner remaining visible after a successful device switch.
- Fixed silent failure when audio restart fails during device switch.
[1.2.4] - 2026-05-25
- Improved low-frequency detection by lowering minimum detectable frequency to 20Hz.
[1.2.3] - 2026-05-19
- Refactored tuner plugin: simplified script loading, modularized audio pipeline, and improved visualization state management.
- Fixed issue where targeting a specific string was impossible when no audio input was present.
[1.2.2] - 2026-05-18
- Added missing YIN-worker script.
[1.2.1] - 2026-05-18
- Added graceful handling for audio device errors by resetting device ID on exceptions.
[1.2.0] - 2026-05-18
- Introduced Strobe Tuner visualization.
- Modularized visualization handling and improved state management.
- Enhanced tuning synchronization logic.
[1.1.0] - 2026-05-10
- Added 5-string bass tunings.
- Removed unnecessary scroll limit in settings UI.
[1.0.3] - 2026-05-10
- Visual polish for the settings page.
- Added toggle for floating tuner button visibility.
[1.0.2] - 2026-05-10
- Added microphone and channel selection settings.
- Integrated tuner button into the player UI.
- Added dynamic tuning detection within the player.
[1.0.1] - 2026-05-10
- Fixed floating button reappearing on song end.
- Improved tuner button injection in player UI.
[1.0.0] - 2026-05-10
- Initial release.
License
MIT