Skip to content

Commit c3140f0

Browse files
committed
Visualizers
1 parent c5454ae commit c3140f0

67 files changed

Lines changed: 240 additions & 196 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎Build/src/platform/visualizers/visualizerLoader.ts‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,20 @@ interface VisualizerDrawFunction {
1414
): void;
1515
}
1616

17+
export function getByteFrequencyData(
18+
analyser: AnalyserNode,
19+
dataArray: Uint8Array | Float32Array,
20+
): void {
21+
analyser.getByteFrequencyData(dataArray as Uint8Array<ArrayBuffer>);
22+
}
23+
24+
export function getByteTimeDomainData(
25+
analyser: AnalyserNode,
26+
dataArray: Uint8Array | Float32Array,
27+
): void {
28+
analyser.getByteTimeDomainData(dataArray as Uint8Array<ArrayBuffer>);
29+
}
30+
1731
export interface VisualizerType {
1832
name: string;
1933
draw: VisualizerDrawFunction;

‎Build/src/ui/resources/themes/Wallpapers/MusicViz/MusicViz.wallpaper.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ const MusicViz: React.FC<WallpaperProps> = ({ playbackState }) => {
3232
(analyser as any).getByteFrequencyData(dataArray);
3333
const barWidth = canvas.width / dataArray.length;
3434
for (let i = 0; i < dataArray.length; i++) {
35-
const v = dataArray[i] / 255;
35+
const v = (dataArray[i] ?? 0) / 255;
3636
const h = v * canvas.height;
3737
ctx.fillStyle = `hsl(${(i / dataArray.length) * 360}, 80%, ${30 + v * 50}%)`;
3838
ctx.fillRect(i * barWidth, canvas.height - h, Math.ceil(barWidth), h);

‎Build/src/ui/resources/themes/Wallpapers/Particles/Particles.wallpaper.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ const ParticlesWallpaper: React.FC<WallpaperProps> = () => {
3636
vy: (Math.random() - 0.5) * 0.5,
3737
size: Math.random() * 3 + 1,
3838
opacity: Math.random() * 0.8 + 0.2,
39-
color: colors[Math.floor(Math.random() * colors.length)],
39+
color: colors[Math.floor(Math.random() * colors.length)] ?? "#dda0dd",
4040
});
4141

4242
const updateParticles = (width: number, height: number) => {

‎Build/src/ui/resources/visualizers/abstractart.visualizer.tsx‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { VisualizerType } from "../../../platform/visualizers";
1+
import { VisualizerType, getByteFrequencyData } from "../../../platform/visualizers";
22

33
const abstractArt: VisualizerType = {
44
name: "Abstract Art",
@@ -20,13 +20,13 @@ const abstractArt: VisualizerType = {
2020
} = settings;
2121

2222
if (dataType !== "frequency") return;
23-
analyser.getByteFrequencyData(freqDataArray);
23+
getByteFrequencyData(analyser, freqDataArray);
2424

2525
ctx.fillStyle = backgroundColor;
2626
ctx.fillRect(0, 0, canvas.width, canvas.height);
2727

2828
for (let i = 0; i < shapeCount; i++) {
29-
const amplitude = (freqDataArray as Uint8Array)[i] / 256.0;
29+
const amplitude = (freqDataArray[i] ?? 0) / 256.0;
3030

3131
ctx.fillStyle = shapeColor
3232
.replace("{hue}", `${(i * 360) / bufferLength}`)

‎Build/src/ui/resources/visualizers/architecturalblueprint.visualizer.tsx‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { VisualizerType } from "../../../platform/visualizers";
1+
import { VisualizerType, getByteFrequencyData } from "../../../platform/visualizers";
22

33
const architecturalBlueprint: VisualizerType = {
44
name: "Architectural Blueprint",
@@ -22,15 +22,15 @@ const architecturalBlueprint: VisualizerType = {
2222
} = settings;
2323

2424
if (dataType !== "frequency") return;
25-
analyser.getByteFrequencyData(freqDataArray);
25+
getByteFrequencyData(analyser, freqDataArray);
2626

2727
ctx.fillStyle = backgroundColor;
2828
ctx.fillRect(0, 0, canvas.width, canvas.height);
2929

3030
const gridSize = (canvas.width - margin * 2) / Math.sqrt(bufferLength);
3131

3232
for (let i = 0; i < bufferLength; i++) {
33-
const amplitude = freqDataArray[i] / 256.0;
33+
const amplitude = (freqDataArray[i] ?? 0) / 256.0;
3434
const col = i % Math.floor(Math.sqrt(bufferLength));
3535
const row = Math.floor(i / Math.floor(Math.sqrt(bufferLength)));
3636

‎Build/src/ui/resources/visualizers/bargraph.visualizer.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const barGraph: VisualizerType = {
2828
let x = 0;
2929

3030
for (let i = 0; i < bufferLength; i++) {
31-
const barHeight = (dataArray[i] / 255) * canvas.height;
31+
const barHeight = ((dataArray[i] ?? 0) / 255) * canvas.height;
3232
ctx.fillStyle = barColor.replace("{hue}", `${(i * 360) / bufferLength}`);
3333
ctx.shadowBlur = shadowBlur;
3434
ctx.shadowColor = ctx.fillStyle as string;

‎Build/src/ui/resources/visualizers/biologicalcell.visualizer.tsx‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { VisualizerType } from "../../../platform/visualizers";
1+
import { VisualizerType, getByteFrequencyData } from "../../../platform/visualizers";
22

33
const biologicalCell: VisualizerType = {
44
name: "Biological Cell",
@@ -22,7 +22,7 @@ const biologicalCell: VisualizerType = {
2222
} = settings;
2323

2424
if (dataType !== "frequency") return;
25-
analyser.getByteFrequencyData(freqDataArray);
25+
getByteFrequencyData(analyser, freqDataArray);
2626

2727
ctx.fillStyle = backgroundColor;
2828
ctx.fillRect(0, 0, canvas.width, canvas.height);
@@ -37,7 +37,7 @@ const biologicalCell: VisualizerType = {
3737
ctx.stroke();
3838

3939
for (let i = 0; i < bufferLength; i++) {
40-
const amplitude = freqDataArray[i] / 256.0;
40+
const amplitude = (freqDataArray[i] ?? 0) / 256.0;
4141
const angle = (i * Math.PI * 2) / bufferLength;
4242
const radius = cellRadius * (0.2 + amplitude * 0.6);
4343

‎Build/src/ui/resources/visualizers/circuitboard.visualizer.tsx‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { VisualizerType } from "../../../platform/visualizers";
1+
import { VisualizerType, getByteFrequencyData } from "../../../platform/visualizers";
22

33
const circuitBoard: VisualizerType = {
44
name: "Circuit Board",
@@ -20,13 +20,13 @@ const circuitBoard: VisualizerType = {
2020
} = settings;
2121

2222
if (dataType !== "frequency") return;
23-
analyser.getByteFrequencyData(freqDataArray);
23+
getByteFrequencyData(analyser, freqDataArray);
2424

2525
ctx.fillStyle = backgroundColor;
2626
ctx.fillRect(0, 0, canvas.width, canvas.height);
2727

2828
for (let i = 0; i < bufferLength; i++) {
29-
const amplitude = freqDataArray[i] / 256.0;
29+
const amplitude = (freqDataArray[i] ?? 0) / 256.0;
3030
const x = (i % (canvas.width / gridSize)) * gridSize;
3131
const y = Math.floor(i / (canvas.width / gridSize)) * gridSize;
3232

‎Build/src/ui/resources/visualizers/circularspectrogram.visualizer.tsx‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { VisualizerType } from "../../../platform/visualizers";
1+
import { VisualizerType, getByteFrequencyData } from "../../../platform/visualizers";
22

33
const circularSpectrogram: VisualizerType = {
44
name: "Circular Spectrogram",
@@ -20,7 +20,7 @@ const circularSpectrogram: VisualizerType = {
2020
} = settings;
2121

2222
if (dataType !== "frequency") return;
23-
analyser.getByteFrequencyData(freqDataArray);
23+
getByteFrequencyData(analyser, freqDataArray);
2424

2525
ctx.fillStyle = backgroundColor;
2626
ctx.fillRect(0, 0, canvas.width, canvas.height);
@@ -31,7 +31,7 @@ const circularSpectrogram: VisualizerType = {
3131

3232
for (let i = 0; i < bufferLength; i++) {
3333
const angle = (i * 2 * Math.PI) / bufferLength;
34-
const amplitude = freqDataArray[i] / 256.0;
34+
const amplitude = (freqDataArray[i] ?? 0) / 256.0;
3535
const x = centerX + radius * amplitude * Math.cos(angle);
3636
const y = centerY + radius * amplitude * Math.sin(angle);
3737

‎Build/src/ui/resources/visualizers/circularwave.visualizer.tsx‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { VisualizerType } from "../../../platform/visualizers";
1+
import { VisualizerType, getByteTimeDomainData } from "../../../platform/visualizers";
22

33
const circularWave: VisualizerType = {
44
name: "Circular Wave",
@@ -20,7 +20,7 @@ const circularWave: VisualizerType = {
2020
} = settings;
2121

2222
if (dataType !== "time") return;
23-
analyser.getByteTimeDomainData(timeDataArray);
23+
getByteTimeDomainData(analyser, timeDataArray);
2424

2525
ctx.fillStyle = backgroundColor;
2626
ctx.fillRect(0, 0, canvas.width, canvas.height);
@@ -32,7 +32,7 @@ const circularWave: VisualizerType = {
3232
ctx.beginPath();
3333
for (let i = 0; i < bufferLength; i++) {
3434
const angle = (i * 2 * Math.PI) / bufferLength;
35-
const value = (timeDataArray as Uint8Array)[i] / 128.0 - 1;
35+
const value = (timeDataArray[i] ?? 0) / 128.0 - 1;
3636
const r = radius + value * waveAmplitude;
3737
const x = centerX + r * Math.cos(angle);
3838
const y = centerY + r * Math.sin(angle);

0 commit comments

Comments
 (0)