mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-10 04:30:25 +02:00
add opacity configuration for visualizers
This commit is contained in:
@@ -1134,6 +1134,7 @@
|
|||||||
"fillAlpha": "Fill Alpha",
|
"fillAlpha": "Fill Alpha",
|
||||||
"channelLayout": "Channel Layout",
|
"channelLayout": "Channel Layout",
|
||||||
"maxFPS": "Max FPS",
|
"maxFPS": "Max FPS",
|
||||||
|
"opacity": "Opacity",
|
||||||
"customGradients": "Custom Gradients",
|
"customGradients": "Custom Gradients",
|
||||||
"addCustomGradient": "Add Custom Gradient",
|
"addCustomGradient": "Add Custom Gradient",
|
||||||
"gradientName": "Gradient Name",
|
"gradientName": "Gradient Name",
|
||||||
|
|||||||
+16
@@ -988,6 +988,14 @@ const GeneralSettings = () => {
|
|||||||
min={0}
|
min={0}
|
||||||
onChangeEnd={(e) => updateProperty('maxFPS', e)}
|
onChangeEnd={(e) => updateProperty('maxFPS', e)}
|
||||||
/>
|
/>
|
||||||
|
<VisualizerSlider
|
||||||
|
defaultValue={visualizer.audiomotionanalyzer.opacity}
|
||||||
|
label={t('visualizer.opacity')}
|
||||||
|
max={1}
|
||||||
|
min={0}
|
||||||
|
onChangeEnd={(e) => updateProperty('opacity', e)}
|
||||||
|
step={0.01}
|
||||||
|
/>
|
||||||
</Group>
|
</Group>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Fieldset>
|
</Fieldset>
|
||||||
@@ -1972,6 +1980,14 @@ const ButterchurnGeneralSettings = () => {
|
|||||||
onChangeEnd={(e) => updateProperty('maxFPS', e)}
|
onChangeEnd={(e) => updateProperty('maxFPS', e)}
|
||||||
step={1}
|
step={1}
|
||||||
/>
|
/>
|
||||||
|
<VisualizerSlider
|
||||||
|
defaultValue={visualizer.butterchurn.opacity}
|
||||||
|
label={t('visualizer.opacity')}
|
||||||
|
max={1}
|
||||||
|
min={0}
|
||||||
|
onChangeEnd={(e) => updateProperty('opacity', e)}
|
||||||
|
step={0.01}
|
||||||
|
/>
|
||||||
</Group>
|
</Group>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Fieldset>
|
</Fieldset>
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ const VisualizerInner = () => {
|
|||||||
const canvasRef = createRef<HTMLDivElement>();
|
const canvasRef = createRef<HTMLDivElement>();
|
||||||
const accent = useSettingsStore((store) => store.general.accent);
|
const accent = useSettingsStore((store) => store.general.accent);
|
||||||
const visualizer = useSettingsStore((store) => store.visualizer);
|
const visualizer = useSettingsStore((store) => store.visualizer);
|
||||||
|
const opacity = useSettingsStore(
|
||||||
|
(store) => store.visualizer.audiomotionanalyzer.opacity,
|
||||||
|
);
|
||||||
const [motion, setMotion] = useState<AudioMotionAnalyzer>();
|
const [motion, setMotion] = useState<AudioMotionAnalyzer>();
|
||||||
|
|
||||||
// Check if a gradient name is a custom gradient
|
// Check if a gradient name is a custom gradient
|
||||||
@@ -217,7 +220,13 @@ const VisualizerInner = () => {
|
|||||||
}
|
}
|
||||||
}, [motion, options]);
|
}, [motion, options]);
|
||||||
|
|
||||||
return <div className={styles.visualizer} ref={canvasRef} />;
|
return (
|
||||||
|
<div
|
||||||
|
className={styles.visualizer}
|
||||||
|
ref={canvasRef}
|
||||||
|
style={{ opacity }}
|
||||||
|
/>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const Visualizer = () => {
|
export const Visualizer = () => {
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ const VisualizerInner = () => {
|
|||||||
const cycleTimerRef = useRef<NodeJS.Timeout | undefined>(undefined);
|
const cycleTimerRef = useRef<NodeJS.Timeout | undefined>(undefined);
|
||||||
const cycleStartTimeRef = useRef<number | undefined>(undefined);
|
const cycleStartTimeRef = useRef<number | undefined>(undefined);
|
||||||
const butterchurnSettings = useSettingsStore((store) => store.visualizer.butterchurn);
|
const butterchurnSettings = useSettingsStore((store) => store.visualizer.butterchurn);
|
||||||
|
const opacity = useSettingsStore((store) => store.visualizer.butterchurn.opacity);
|
||||||
const { setSettings } = useSettingsStoreActions();
|
const { setSettings } = useSettingsStoreActions();
|
||||||
const playerStatus = usePlayerStatus();
|
const playerStatus = usePlayerStatus();
|
||||||
const isPlaying = playerStatus === PlayerStatus.PLAYING;
|
const isPlaying = playerStatus === PlayerStatus.PLAYING;
|
||||||
@@ -293,7 +294,7 @@ const VisualizerInner = () => {
|
|||||||
}, [visualizer, butterchurnSettings.maxFPS]);
|
}, [visualizer, butterchurnSettings.maxFPS]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.container} ref={containerRef}>
|
<div className={styles.container} ref={containerRef} style={{ opacity }}>
|
||||||
<canvas className={styles.canvas} ref={canvasRef} />
|
<canvas className={styles.canvas} ref={canvasRef} />
|
||||||
{butterchurnSettings.currentPreset && (
|
{butterchurnSettings.currentPreset && (
|
||||||
<Text className={styles['preset-overlay']} isNoSelect size="sm">
|
<Text className={styles['preset-overlay']} isNoSelect size="sm">
|
||||||
|
|||||||
@@ -285,6 +285,7 @@ const AudioMotionAnalyzerSettingsSchema = z.object({
|
|||||||
mirror: z.number(),
|
mirror: z.number(),
|
||||||
mode: z.number(),
|
mode: z.number(),
|
||||||
noteLabels: z.boolean(),
|
noteLabels: z.boolean(),
|
||||||
|
opacity: z.number().min(0).max(1),
|
||||||
outlineBars: z.boolean(),
|
outlineBars: z.boolean(),
|
||||||
peakFadeTime: z.number(),
|
peakFadeTime: z.number(),
|
||||||
peakHoldTime: z.number(),
|
peakHoldTime: z.number(),
|
||||||
@@ -323,6 +324,7 @@ const ButterchurnSettingsSchema = z.object({
|
|||||||
ignoredPresets: z.array(z.string()),
|
ignoredPresets: z.array(z.string()),
|
||||||
includeAllPresets: z.boolean(),
|
includeAllPresets: z.boolean(),
|
||||||
maxFPS: z.number().min(0),
|
maxFPS: z.number().min(0),
|
||||||
|
opacity: z.number().min(0).max(1),
|
||||||
randomizeNextPreset: z.boolean(),
|
randomizeNextPreset: z.boolean(),
|
||||||
selectedPresets: z.array(z.string()),
|
selectedPresets: z.array(z.string()),
|
||||||
});
|
});
|
||||||
@@ -1451,6 +1453,7 @@ const initialState: SettingsState = {
|
|||||||
mirror: 0,
|
mirror: 0,
|
||||||
mode: 5,
|
mode: 5,
|
||||||
noteLabels: false,
|
noteLabels: false,
|
||||||
|
opacity: 1,
|
||||||
outlineBars: false,
|
outlineBars: false,
|
||||||
peakFadeTime: 900,
|
peakFadeTime: 900,
|
||||||
peakHoldTime: 500,
|
peakHoldTime: 500,
|
||||||
@@ -1483,6 +1486,7 @@ const initialState: SettingsState = {
|
|||||||
ignoredPresets: [],
|
ignoredPresets: [],
|
||||||
includeAllPresets: true,
|
includeAllPresets: true,
|
||||||
maxFPS: 0,
|
maxFPS: 0,
|
||||||
|
opacity: 1,
|
||||||
randomizeNextPreset: true,
|
randomizeNextPreset: true,
|
||||||
selectedPresets: [],
|
selectedPresets: [],
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user