Skip to content

Releases: projectM-visualizer/frontend-sdl-cpp

projectMSDL 2.0 Pre-Release 1

04 May 09:33
86885be

Choose a tag to compare

Pre-release

This is a development pre-release of projectMSDL, built against a shared libprojectM library from upstream master (commit projectM-visualizer/projectm@64fe364). This release is not meant for production use, and should not be added to any package manager such as any Linux distribution, Homebrew or vcpkg.

The application bundles contain the "Cream of the Crop" preset pack and our Milkdrop texture pack and is pre-configured to use those. To use your own preset pack or textures, change either path in the settings window, save the settings and restart the app.

Windows (64-bit only)

Download the Windows ZIP and unpack it, then run projectMSDL.exe. Due to file name length limitations in Windows Installer preventing packaging of most presets, we currently can't provide a proper installer.

Linux (x86_64 arch only)

We currently provide a DEB package for APT-based distributions such as Debian, Ubuntu and Mint. The package should work on any recent version of those distributions, given that libSDL2 and glibc 2.35 are available/installed. The same minimum requirements are valid for the stand-alone .tar.gz version.

We do not provide i386 or arm64/Raspberry Pi builds as of now.

macOS (Intel/Silicon Universal Binary)

In the asset list below, you can find both a macOS Installer package (.pkg) and a DMG volume for easy drag & drop installation. both packages contain the exact same application, so it's just about your installation preference which one to choose.

Being a Universal Binary, this application will run natively on both Apple-Silicon- and Intel-based Macs without requiring Rosetta emulation.

Hotkeys

  • ESC toggles the built-in UI/menu bar.
  • r immediately switches to a random preset.
  • Shift+r smoothly transitions to a random preset.
  • n immediately switches to the next preset in the list, ignoring shuffle.
  • Shift+n smoothly switches to the next preset in the list, ignoring shuffle.
  • p immediately switches to the previous preset in the list, ignoring shuffle.
  • Shift+p smoothly switches to the previous preset in the list, ignoring shuffle.
  • BACKSPACE immediately switches to the previous preset in the playback history, ignoring shuffle.
  • Shift+BACKSPACE smoothly switches to the previous preset in the playback history, ignoring shuffle.
  • Shift+<preset switch key> uses a smooth transition for the above switch hotkeys.
  • SPACE locks/unlocks the current preset.
  • y toggles shuffle mode.
  • Ctrl+i / ⌃+i rotates through audio capture devices.
  • Ctrl+f / ⌃+f toggles fullscreen mode.
  • Ctrl+m / ⌃+m moves the window through available monitors (works in fullscreen and windowed mode).
  • Ctrl+q / ⌃+q quits the application.

Preset Drag & Drop Support

To add presets on the fly, you can drag and drop them from your file manager onto the projectM window. If a single preset is dropped, projectM will automatically load it (can be disabled in the settings). If a path is dropped, all presets within will be added recursively, but not immediately played.

Any presets added via this method will only remain in the playlist until the application is closed.

Editing The Configuration File

If you want to edit the configuration manually, the user-specific configuration is stored at the OS-specific location for configuration files. The path/file might not exist until you save the settings once in the application (Open th menu with ESC, Go to File->Settings and click "Save" once in the Settings window.

  • Windows: %APPDATA%\projectM\projectMSDL.properties
    Default configuration file with comments (projectMSDL.properties) is located in the same directory as projectMSDL.exe
  • Linux: ~/.config/projectM/projectMSDL.properties
    Default configuration file with comments: /usr/share/projectM/projectMSDL.properties
  • macOS: ~/Library/Preferences/projectM/projectM.properties
    Default configuration file with comments: /Applications/projectM.app/Contents/Resources/projectM.properties

Command-Line Arguments

The application supports numerous command-line arguments, which can be used to start projectMSDL automatically with a specific set of settings. On Linux and macOS, running the projectMSDL executable with the --help argument will display all available parameters and their description. This help is also available within the application via the Help -> Quick Help menu.

Please note that on Windows, arguments need to be written as /arg instead of --arg.

Known Issues / Missing Features

Remember this is a feature-incomplete development build, so UI/UX issues, crashes and bugs are to be expected. The following list is an overview of known bugs and still to-be-implemented features.

  • Some hotkeys (such as Ctrl+s) shown in the UI menu don't work yet.
  • There is currently no playlist management available within the application. Presets are solely added alphabetically.
  • macOS only: Due to CoreAudio restrictions, the application cannot capture audio played by local applications. It can only record audio from external sources like microphones or line-in. To record system audio, you'll have to install a virtual loopback driver like BlackHole.
  • Some menu entries in the File menu aren't implemented yet and will not do anything when clicked on.
  • On Windows, loading presets with non-ASCII characters (such as cyrillic) in their filename may not be properly supported.

Other bugs and requested features can be found in the issue tracker of this repository.

Please report any newly found issues in the main projectM issue tracker.

Linux Audio Recording Issues

On Linux, there are different audio APIs/servers available, which may differ between distributions. The application uses libSDL2's audio recording features, and thus will mostly default to the pulseaudio input driver. Most modern distributions use Pipewire though, and might not provide a proper PulseAudio fallback. If you're not able to capture audio, and your devices aren't listed in the Settings window's Audio tab or Audio menu, try passing a different audio driver to the application via SDL2's SDL_AUDIODRIVER environment variable:

  • When using Pipewire: SDL_AUDIODRIVER=pipewire
  • When using PulseAudio: SDL_AUDIODRIVER=pulseaudio
  • When using ALSA: SDL_AUDIODRIVER=alsa
  • When using JACK: SDL_AUDIODRIVER=jack

Depending on your SDL2 installation, not all of the above drivers might be available though.