From c3c18e22ea0c20859d5f1a810a82f603b8232111 Mon Sep 17 00:00:00 2001 From: jeffvli Date: Tue, 20 Jan 2026 18:02:59 -0800 Subject: [PATCH] add butterchurn presets ignore constant for broken presets --- .../visualizer-settings-form.tsx | 3 ++- .../components/butternchurn/visualizer.tsx | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/renderer/features/visualizer/components/audiomotionanalyzer/visualizer-settings-form.tsx b/src/renderer/features/visualizer/components/audiomotionanalyzer/visualizer-settings-form.tsx index 741aa6579..2563af851 100644 --- a/src/renderer/features/visualizer/components/audiomotionanalyzer/visualizer-settings-form.tsx +++ b/src/renderer/features/visualizer/components/audiomotionanalyzer/visualizer-settings-form.tsx @@ -5,6 +5,7 @@ import { useTranslation } from 'react-i18next'; import styles from './visualizer-settings-form.module.css'; import i18n from '/@/i18n/i18n'; +import { getButterchurnPresetOptions } from '/@/renderer/features/visualizer/components/butternchurn/visualizer'; import { useSettingsStoreActions, useVisualizerSettings } from '/@/renderer/store/settings.store'; import { ActionIcon } from '/@/shared/components/action-icon/action-icon'; import { Button } from '/@/shared/components/button/button'; @@ -32,7 +33,7 @@ const loadButterchurnPresetOptions = async (): Promise ({ diff --git a/src/renderer/features/visualizer/components/butternchurn/visualizer.tsx b/src/renderer/features/visualizer/components/butternchurn/visualizer.tsx index a3fa242db..eec44ed6d 100644 --- a/src/renderer/features/visualizer/components/butternchurn/visualizer.tsx +++ b/src/renderer/features/visualizer/components/butternchurn/visualizer.tsx @@ -21,6 +21,9 @@ import { Group } from '/@/shared/components/group/group'; import { Text } from '/@/shared/components/text/text'; import { PlayerStatus } from '/@/shared/types/types'; +// Ignore presets that are erroring out +const IGNORED_PRESETS = ['Flexi + Martin - astral projection']; + type ButterchurnVisualizer = { connectAudio: (audioNode: AudioNode) => void; loadPreset: (preset: any, blendTime: number) => void; @@ -28,6 +31,13 @@ type ButterchurnVisualizer = { setRendererSize: (width: number, height: number) => void; }; +export function getButterchurnPresetOptions(presets: Record) { + if (!presets) return []; + return Object.fromEntries( + Object.entries(presets).filter(([preset]) => !IGNORED_PRESETS.includes(preset)), + ); +} + const VisualizerInner = () => { const { webAudio } = useWebAudio(); const canvasRef = createRef(); @@ -62,7 +72,9 @@ const VisualizerInner = () => { if (isMounted) { butterchurnRef.current = butterchurnModule.default; - butterchurnPresetsRef.current = presetsModule.default; + butterchurnPresetsRef.current = butterchurnPresetsRef.current = + getButterchurnPresetOptions(presetsModule.default); + setLibrariesLoaded(true); } } catch (error) { @@ -490,7 +502,9 @@ export const Visualizer = () => { try { const presetsModule = await import('butterchurn-presets'); if (isMounted) { - butterchurnPresetsRef.current = presetsModule.default; + butterchurnPresetsRef.current = getButterchurnPresetOptions( + presetsModule.default, + ); setPresetsLoaded(true); } } catch (error) {