Recent Releases
4.1.320 Dec 2024 15:05
minor feature:
lt;p gt;This is a maintenance release ing some internal and improving preset compatibility. lt;/p gt;.
lt;p gt;No new functionality or API changes have been introduced in this release. lt;/p gt;.
lt;h2 gt;What's Changed lt;/h2 gt;.
lt;ul gt;.
lt;li gt;wrong API exports definition in playlist build. lt;/li gt;.
lt;li gt;random texture selection and improve handling of presets using multiple conflicting sampler names like lt;code gt;sampler_rand00_a lt;/code gt; and lt;code gt;sampler_rand00_b lt;/code gt;. lt;/li gt;.
lt;li gt;Add lt;code gt;ldexp lt;/code gt; intrinsic to shader transpiler. lt;/li gt;.
lt;li gt;Add lt;code gt;faceforward lt;/code gt; intrisinc to shader transpiler. lt;/li gt;.
lt;li gt;variable name using a reserved word in a vertex shader. lt;/li gt;.
lt;li gt;Some build system and vcpkg improvements. lt;/li gt;.
lt;/ul gt;.
lt;p gt; lt;strong gt;Full Changelog lt;/strong gt;: lt;a class="commit-link" href="https://github.com/projectM-visualizer/projectm/compare/v4.1.2...v4.1.3" gt; lt;tt gt;v4.1.2...v4.1.3 lt;/tt gt; lt;/a gt; lt;/p gt;.
4.1.208 Oct 2024 08:05
minor feature:
lt;p gt;This release addresses two OpenGL-related causing GL errors, and adds some improvements to the vcpkg manifest which were required for adding the projectM library to the official vcpkg ports. This release does not contain any other functional improvements or API changes. lt;/p gt;.
lt;h2 gt;What's Changed lt;/h2 gt;.
lt;ul gt;.
lt;li gt;GL_INVALID_ENUM error in CopyTexture (PR lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2405432802" data-permission-text="Title is private" data-url="https://github.com/projectM-visualizer/projectm//826" data-hovercard-type="pull_request" data-hovercard-url="/projectM-visualizer/projectm/pull/826/hovercard" href="https://github.com/projectM-visualizer/projectm/pull/826" gt;#826 lt;/a gt;) lt;/li gt;.
lt;li gt;variable using reserved word in vertex shader (PR lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2447174007" data-permission-text="Title is private" data-url="https://github.com/projectM-visualizer/projectm//832" data-hovercard-type="pull_request" data-hovercard-url="/projectM-visualizer/projectm/pull/832/hovercard" href="https://github.com/projectM-visualizer/projectm/pull/832" gt;#832 lt;/a gt;) lt;/li gt;.
lt;li gt;vcpkg for projectm eval (PR lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2453619894" data-permission-text="Title is private" data-url="https://github.com/projectM-visualizer/projectm//835" data-hovercard-type="pull_request" data-hovercard-url="/projectM-visualizer/projectm/pull/835/hovercard" href="https://github.com/projectM-visualizer/projectm/pull/835" gt;#835 lt;/a gt;) lt;/li gt;.
lt;/ul gt;.
lt;p gt; lt;strong gt;Full Changelog lt;/strong gt;: lt;a class="commit-link" href="https://github.com/projectM-visualizer/projectm/compare/v4.1.1...v4.1.2" gt; lt;tt gt;v4.1.1...v4.1.2 lt;/tt gt; lt;/a gt; lt;/p gt;.
4.1.124 Mar 2024 13:05
minor feature:
lt;p gt;This is a small release that corrects some found in version 4.1. lt;/p gt;.
lt;h2 gt;Changes since 4.1.0 lt;/h2 gt;.
lt;h3 gt;Enhancements lt;/h3 gt;.
lt;ul gt;.
lt;li gt;Added CMake lt;code gt;USE_PTHREADS lt;/code gt; option for emscripten builds lt;/li gt;.
lt;/ul gt;.
lt;h3 gt; lt;/h3 gt;.
lt;ul gt;.
lt;li gt;a that prevented a preset's composite shader from being loaded if the warp shader was empty lt;/li gt;.
lt;li gt;to GLM CMake targets/usage lt;/li gt;.
lt;li gt;a broken #ifdef in the SDL test UI lt;/li gt;.
lt;li gt;SOIL2 include directories lt;/li gt;.
lt;/ul gt;.
4.111 Mar 2024 03:15
minor feature:
lt;p gt;After about a year of work, we're finally ready to release libprojectM 4.1, which is in fact the actual "major" release in regards of general improvements over the 3.1 release series. Most of libprojectM's codebase has been refactored or rewritten from scratch to bring it to more modern standards, make it easier to maintain and - most importantly - vastly improve Milkdrop compatibility and overall performance. lt;/p gt;.
lt;h2 gt;Target Audience: Users lt;/h2 gt;.
lt;p gt;While the 4.0 version was mainly focused on updating the build system and introducing a stable API which developers can use to integrate it into their applications, it didn't change much in regards to preset rendering quality and Milkdrop compatibility. lt;/p gt;.
lt;p gt;This release focuses on bringing libprojectM mostly on par with Milkdrop, implementing some missing features and improving the preset rendering process to match Milkdrop's code as ly as possible. lt;/p gt;.
lt;p gt;The libprojectM C API and ABI did not change since 4.0, making it a drop-in replacement with no changes required in application code. When using the shared library, replacing the library file(s) will be sufficient to use the new version, no rebuild/relink is required in this case. lt;/p gt;.
lt;p gt;The projectM team also wants to thank all contributors for their efforts, making this release possible! lt;/p gt;.
lt;h2 gt;Changes since 4.0 lt;/h2 gt;.
lt;ul gt;.
lt;li gt;A from-scratch rewrite of the parser running the math expressions in presets, implementing all previously missing features like megabuf, loops, regXX vars, compound operators like lt;code gt;+= lt;/code gt; and greatly improving the execution speed. lt;/li gt;.
lt;li gt;Reworked the whole preset rendering process, carefully implementing each step and effect to match Milkdrop's rendering process and math. lt;/li gt;.
lt;li gt;Reintroduced smooth preset transitions, using custom blending shaders. lt;/li gt;.
lt;li gt;Reimplemented the audio proces
4.1.007 Mar 2024 16:46
major feature:
After about a year of work, we're finally ready to release libprojectM 4.1, which is in fact the actual "major" release in regards of general improvements over the 3.1 release series. Most of libprojectM's codebase has been refactored or rewritten from scratch to bring it to more modern standards, make it easier to maintain and - most importantly - vastly improve Milkdrop compatibility and overall performance.
Target Audience: Users
While the 4.0 version was mainly focused on updating the build system and introducing a stable API which developers can use to integrate it into their applications, it didn't change much in regards to preset rendering quality and Milkdrop compatibility.
This release focuses on bringing libprojectM mostly on par with Milkdrop, implementing some missing features and improving the preset rendering process to match Milkdrop's code as closely as possible.
The libprojectM C API and ABI did not change since 4.0, making it a drop-in replacement with no changes required in application code. When using the shared library, replacing the library file(s) will be sufficient to use the new version, no rebuild/relink is required in this case.
The projectM team also wants to thank all contributors for their efforts, making this release possible!
Changes since 4.0
A from-scratch rewrite of the parser running the math expressions in presets, implementing all previously missing features like megabuf, loops, regXX vars, compound operators like += and greatly improving the execution speed.
Reworked the whole preset rendering process, carefully implementing each step and effect to match Milkdrop's rendering process and math.
Reintroduced smooth preset transitions, using custom blending shaders.
Reimplemented the audio processing code to match Milkdrop's spectrum analyzer and waveform preprocessing.
Added support for the new waveform modes added in BeatDrop and Milkdrop2077.
4.0.007 Feb 2024 17:21
major feature:
This is the final 4.0 release of libprojectM.
It's been about two years after the last 3.1 release, but the projectM core team and community worked hard to make projectM better for both end users and developers integrating the library into their own applications.
Since this release is mainly aimed at developers, we will only attach source packages to this release. If you want pre-built libraries, please download the latest artifacts from the automated GitHub Actions builds.
As always, if you find bugs or have feature suggestions or requests, please feel free to create an issue or post in the discussions board. We're also available for chat on our Discrod server, which is linked on the project page.
Target Audience: Developers
This release is mainly aimed at developers integrating projectM into their applications. The main focus of this major release was to provide a new, stable API based on pure C functions, which will make it easier to create bindings for other languages as well as using it as a shared library. We also fixed many crashes and improved the overall visual quality and compatibility of presets to some degree.
The API will remain stable and forward-compatible until the next major release. Any changes made will only include new functions, so the ABI will always stay forward-compatible. This means an application built and linked against a specific 4.x version will build and run with any libprojectM with a major version of 4 and the same or higher minor version. If an application uses libprojectM as a shared library, no relinking is required at all - simply swap the library file with the new one and it should work.
What About Users?
If you are an end user looking for the standalone visualizer or the Apple Music plug-in, this release isn't very useful as it only contains the projectM development libraries and headers, but no frontend or executable you can run.
Since modernizing the projectM ecosystem is a big undertaking, we've decided to postpone the