{"id":20255299,"url":"https://github.com/projectm-visualizer/frontend-sdl-cpp","last_synced_at":"2025-04-06T12:07:27.556Z","repository":{"id":37846823,"uuid":"458925265","full_name":"projectM-visualizer/frontend-sdl-cpp","owner":"projectM-visualizer","description":"Standalone application based on libSDL that turns your desktop audio into awesome visuals. Available on most platforms supported by both libprojectM and libSDL.","archived":false,"fork":false,"pushed_at":"2025-03-18T11:19:34.000Z","size":355,"stargazers_count":75,"open_issues_count":25,"forks_count":39,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-06T12:07:21.487Z","etag":null,"topics":["milkdrop","music-visualizer","projectm","sdl","visualizer"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/projectM-visualizer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-13T20:36:54.000Z","updated_at":"2025-03-20T18:21:18.000Z","dependencies_parsed_at":"2024-11-14T10:41:17.190Z","dependency_job_id":"c8c2252b-d37e-4689-b20f-a265bd9cb006","html_url":"https://github.com/projectM-visualizer/frontend-sdl-cpp","commit_stats":null,"previous_names":["projectm-visualizer/frontend-sdl-cpp","projectm-visualizer/frontend-sdl2"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/projectM-visualizer%2Ffrontend-sdl-cpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/projectM-visualizer%2Ffrontend-sdl-cpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/projectM-visualizer%2Ffrontend-sdl-cpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/projectM-visualizer%2Ffrontend-sdl-cpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/projectM-visualizer","download_url":"https://codeload.github.com/projectM-visualizer/frontend-sdl-cpp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247478318,"owners_count":20945266,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["milkdrop","music-visualizer","projectm","sdl","visualizer"],"created_at":"2024-11-14T10:38:02.437Z","updated_at":"2025-04-06T12:07:27.532Z","avatar_url":"https://github.com/projectM-visualizer.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ProjectM SDL2 Frontend\n\nThis is a reference implementation of an applicatiaon that makes use of the projectM music visualization library.\n\nIt will listen to audio input and produce mesmerizing visuals. Some commands are supported.\n\nThis project is in a bit of a transition state and is in the process of being modernized. There are many rough edges at\npresent.\n\n## Building from source\n\n### Build and install libprojectM\n\nFirst, [build libprojectM](https://github.com/projectM-visualizer/projectm/wiki/Building-libprojectM) or get it via your\nfavorite dependency management/packaging tool. For testing, you can install libprojectM somewhere inside your\nhome/development directory using `CMAKE_INSTALL_PREFIX`, then pass the same install path to the frontend-sdl2 build\nusing `CMAKE_PREFIX_PATH`. Please refer\nto [CMake's documentation](https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html) for details.\n\n### Dependencies\n\nThis project requires third-party libraries in addition to libprojectM's core library dependencies:\n\n- SDL2 (version 2.0.16 or higher)\n- POCO (recommended version 1.12 or higher, minimum is 1.9.x)\n- Freetype 2 (optional, will provide better looking UI text)\n\n**Important**: projectMSDL will _not compile_ against Poco versions from 1.10.0 up to 1.11.1, as these versions of Poco\ninclude a serious issue that causes the application to crash. Either use Poco 1.9.x, or upgrade to 1.11.2 or higher.\n\nDepending on your needs, you can either build them yourself or install them using your favorite package manager. Here\nare some examples for the three major desktop platforms:\n\n```shell\nsudo apt install libsdl2-dev libpoco-dev libfreetype-dev cmake  # Debian/Ubuntu Linux\nbrew install sdl2 poco freetype  # macOS\nvcpkg install sdl2 poco freetype # Windows, should be pulled in automatically via vcpkg.json\n```\n\n### Configure and build projectMSDL\n\nAfter cloning or updating the Git repository, always remember to initialize and update the submodules as well. this is\nnot required when building from a release tarball or ZIP.\n\n```shell\n# Newer git versions also support \"git submodule update --init\" to perform both step in a single command.\ngit submodule init\ngit submodule update\n```\n\nIf all dependencies are in the CMake and/or the system search directories, you can configure and build the application\nwith these commands, executed from the source dir:\n\n```shell\nmkdir cmake-build\ncmake -S . -B cmake-build -DCMAKE_BUILD_TYPE=Release\ncmake --build cmake-build --config Release\n```\n\nYou can optionally add the `--parallel` argument with the number of CPU cores to use to the build command to speed up\nthe build.\n\nIf your dependencies are in different locations than the default search paths, or you're cross-compiling, you'll need to\nadd more options like `CMAKE_PREFIX_PATH`. Covering all CMake options is out of the scope of this document. Please read\nthe [Mastering CMake guide](https://cmake.org/cmake/help/book/mastering-cmake/index.html) and\nthe [CMake documentation](https://cmake.org/cmake/help/latest/) for more information.\n\nThe above command will use CMake's default build file generator for your current platform and build the project in\nRelease (optimized) configuration. If the build was successful, you should have an executable in the build directory. On\nWindows, you may need to specify the correct Visual Studio generator and architecture manually.\n\n### Install projectMSDL\n\nWhile you can run projectMSDL directly from the build directory, it's recommended to install the project. This will copy\nall required files, including a default configuration file, into the installation dir.\n\nYou can set the installation target path in the first CMake command which configures the build. The `install` target\nwill then copy everything under this directory:\n\n```shell\nmkdir cmake-build\ncmake -S . -B cmake-build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/path/to/install/dir\ncmake --build cmake-build --config Release --target install\n```\n\n### Run directly from the build dir\n\nYou should have a directory of visual presets you wish to use. You can fetch a giant trove of curated\npresets [here](https://github.com/projectM-visualizer/presets-cream-of-the-crop). You will also need textures (images)\nused in many presets. The projectM team has\nassembled [a pack of textures](https://github.com/projectM-visualizer/presets-milkdrop-texture-pack), which covers the\nneeds of most presets.\n\nIf you want to run the executable from the build dir, you'll need to pass any non-default settings via arguments. You\ncan also create a user configuration file in your user's home directory. Depending on the platform, this will be:\n\n- Windows: `%APPDATA%\\projectM\\projectMSDL.properties`\n- Linux:\n    - If `XDG_CONFIG_HOME` env var is non-empty: `$XDG_CONFIG_HOME/projectM/projectMSDL.properties`\n    - Otherwise: `~/.config/projectM/projectMSDL.properties`\n- macOS: `~/Library/Preferences/projectM/projectMSDL.properties`\n\nYou can copy the [config file template](src/resources/projectMSDL.properties.in) there and change anything in `@@`.\n\nDepending on the build system, you'll find the projectM executable in `cmake-build/src/`, or a subdirectory with the\nname of your build type (`Release`, `Debug` and so on).\n\nIf you're not using a config file, provide the presets and texture paths you wish to use when starting projectMSDL:\n\n```shell\ncmake-build/src/projectMSDL --presetPath /path/to/presets-cream-of-the-crop --texturePath /path/to/textures\n```\n\nPress ESC to toggle the UI.\n\n## System-Specific CMake Examples\n\nThe following examples show how to configure and build projectMSDL with CMake on the different supported platforms.\n\n### Windows\n\nTo generate a Visual Studio 2022 project for Win64 and build for Release, with then option to also compile a Debug build\nfrom within the generated solution:\n\n```shell\nmkdir cmake-build\ncmake -G \"Visual Studio 17 2022\" -A x64 -S . -B cmake-build -DCMAKE_CONFIGURATION_TYPES=Debug,Release\ncmake --build cmake-build --config Release\n```\n\n### Linux\n\nTo generate a UNIX Makefile project build for Release:\n\n```shell\nmkdir cmake-build\ncmake -G \"Unix Makefile\" -S . -B cmake-build -DCMAKE_BUILD_TYPE=Release\ncmake --build cmake-build\n```\n\nTo generate a Ninja project build for Release:\n\n```shell\nmkdir cmake-build\ncmake -G \"Ninja\" -S . -B cmake-build -DCMAKE_BUILD_TYPE=Release\ncmake --build cmake-build\n```\n\n### macOS\n\nTo generate an Xcode project and build for Release:\n\n```shell\nmkdir cmake-build\ncmake -G Xcode -S . -B cmake-build -DCMAKE_CONFIGURATION_TYPES=Debug,Release\ncmake --build cmake-build --config Release\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprojectm-visualizer%2Ffrontend-sdl-cpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprojectm-visualizer%2Ffrontend-sdl-cpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprojectm-visualizer%2Ffrontend-sdl-cpp/lists"}