add butterchurn presets ignore constant for broken presets

This commit is contained in:
jeffvli
2026-01-20 18:02:59 -08:00
parent 9318d00a5b
commit c3c18e22ea
2 changed files with 18 additions and 3 deletions
@@ -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<ButterchurnPresetOption[]
if (butterchurnPresetOptionsCache) return butterchurnPresetOptionsCache;
const mod = await import('butterchurn-presets');
const presets = (mod as any).default ?? mod;
const presets = getButterchurnPresetOptions((mod as any).default ?? mod);
const presetNames = Object.keys(presets);
butterchurnPresetOptionsCache = presetNames.map((presetName) => ({
@@ -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<string, string>) {
if (!presets) return [];
return Object.fromEntries(
Object.entries(presets).filter(([preset]) => !IGNORED_PRESETS.includes(preset)),
);
}
const VisualizerInner = () => {
const { webAudio } = useWebAudio();
const canvasRef = createRef<HTMLCanvasElement>();
@@ -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) {