Final personal project for the course PV178 Introduction to C#/.NET on FI MUNI.
The app is a cross-platform Avalonia desktop app and runs natively on Linux, Windows and macOS — no Docker needed.
- .NET SDK 9.0 or newer (the project targets
net9.0, but it builds with the .NET 10 SDK and rolls forward to newer runtimes) - Linux only: an X11 session (or XWayland),
fontconfigand a sound system (PipeWire / PulseAudio / ALSA). These are present on any standard desktop distribution.
dotnet run # build and start the app (Debug)
dotnet watch run # rebuild on file changes
dotnet build # build onlyIn VS Code, use the .NET Core Launch (console) debug configuration from .vscode/launch.json.
Self-contained builds bundle the .NET runtime, so the target machine does not need .NET installed. Builds for any platform can be made from any OS:
dotnet publish AudioVisualizer.csproj -c Release -r linux-x64 --self-contained -o publish/linux-x64
dotnet publish AudioVisualizer.csproj -c Release -r win-x64 --self-contained -o publish/win-x64
dotnet publish AudioVisualizer.csproj -c Release -r osx-arm64 --self-contained -o publish/osx-arm64Other runtime identifiers (e.g. linux-arm64, osx-x64) work too. Run the AudioVisualizer (or AudioVisualizer.exe) executable from the output folder.
- Main goal: a theme that uses AI audio embedding vectors (e.g. from VGGish) as the source of information for rendering video
- Project mode — the app can open a directory that then acts as a project
- outputs are saved into the project folder, and the project folder is the default directory for FileInput inputs
- ability to save a Theme locally within the project instead of system-wide
- Creating custom themes with custom parameters and associated rendering methods
- Ability to export only a selected part of the timeline
- Ability to map a different theme onto different parts of the audio, or to have multiple graphical outputs for the same part (layers + opacity could be nice)
- Loading and working with multiple audio tracks
- Video export unsupported
- Theme module forms are not validated against nonsense inputs
- Theme Explorer double-click to select works only on the text part of a node
- Theme Explorer doesn't show a drop location indicator when hovering over an edge of a category (style issue)
- App displays playing sound icon in the taskbar all the time, even when not playing sound
- Theme module groups are not used in UI yet