Details:
- New options to control building projectM as either static, shared or both libraries.
- The reference UIs can now also be linked to the shared library if it is built.
- Added an option to disable building the SDL frontend. SDL2 is still required for tests and the Emscripten build.
- Initial option for building Doxygen documentation, but the feature is currently not implemented beyond that.
- The SDL frontend no longer derives from the projectM class, but uses the C-based API calls instead.
This will make it easier to integrate projectM into C applications and also removes potential issues of STL/C++ version differences between host and library.
Changed visibility of all symbols except the C API to "hidden". This effectively prevents the C++ API from being used in the shared library.
Added an option "ENABLE_CXX_INTERFACE" to re-enable the old export behaviour, displaying a prominent author warning after configuring the build if enabled.
* Fix SDL and Qt CMake option dependencies.
- Forcibly enable Qt if either the PulseAudio or JACK frontends were enabled.
- Fix condition for ENABLE_SDL, forcing it only if Emscripten or tests are enabled.
- Also check for SDL being enabled in the SDL app dir and skip it if SDL is disabled.
- Spell PulseAudio correctly.
* Add a failure message for the missing GLES support.
* Fixed another broken GLES check.
Changes:
- Added new parameter QT_VERSION to let the user force a specific Qt version to be searched.
- Auto-detect Qt version if not forced, preferring Qt 6.
- Updated the projectM render widget to use QOpenGLWidget instead of the deprecated QGLWidget.
- Changed some calls and types to be compatible between Qt 5 and 6, e.g. QXmlStreamReader.
- Some small fixes pointed out by assertions in the debug Qt 6 version.
The old configure script either did not #define USE_GLES at all, or defined it to 1. CMake only supports #define or #undef without a value, or #define it to either 0 or 1. Using #if will make it compatible with both ways of configuring the macro.
Mainly two problems:
- MilkdropPresetFactory deleted a private reference-typed member in MilkdropPreset. Changed this into a plain pointer which is now checked and properly cleaned up.
- In the library interface class, projectM, the active preset pointers were not deleted before the factors, which lead to a use-after-free when the presets tried to dereference the factory pointer.
* Initial set of CMake files with options and some targets.
* Added all targets to build libprojectM shared/static libraries.
* Updated currently unused (and seemingly unfinished) SDL-based JACK visualizer to use SDL2.
* Converted more targets to CMake and added install directives.
New targets:
- Presets
- Test application
- Pulseaudio/Qt visualizer
- JACK/Qt visualizer
- JACK/SDL2 visualizer
* Added libvisual plug-in target. Changed default install paths to relative.
* Use debug suffix for libraries by default, but make it configurable.
* Added target for projectMSDL application.
* Added CMake code for the ENABLE_THREADING switch, install desktop, icon, manpage and pkgconfig files.
Also added some dependency version output to the post-configuration summary and made Qt switch implicit based on Pulsaudio/JACK UI selection.
* Added CMake package config files and exported targets. Some restructuring of libprojectM targets.
Kept pkgconfig module name for CMake.
* Add -name parameter to RCC command in existing autotools Makefile.
Fixes symbol name mismatch with CMake auto-generated resources which always add the QRC file basename as resource name.
* Display an author warning that CMake files aren't production ready yet.
* Prefer system GLM library, with fallback to bundled version if not available.
Removed the option to use the system library in favor of automated detection.
* Link correct OpenGL libraries, the previous ones were Linux-specific, with GLVND not being required.
* Recreate config.h as generated by autoheader, even if most defines weren't used.
Will also force-include the file on all platforms.
* Add option to build native preset libraries, disabled by default.
* Only install "tests" presets if building the test suite.
* Fix linking LLVM libraries to libprojectM.
Wasn't inherited anymore due to changing MilkdropPresetFactory library type to OBJECT.
* Use INTERFACE IMPORTED libraries in find scripts, set minimum CMake version to 3.19.
* Added missing config.h template and renamed to config.h.cmake.in, was in the .gitignore list.
* Added Windows-specific CMake configuration and some related code changes.
These changes enable building for Windows with both Visual Studio and Ninja project generators. Installation and packaging for Windows is not yet supported. Source groups, filters and support for embedded debug symbols will be added later.
* Link required CoreFoundation framework on MacOS.
* Work around SDL2 include dir issue (upstream SDL bug #4004) by removing "/SDL2" from the path.
* Fix existing Windows build by moving bundled GLEW files into "GL" subdir.
* Place libprojectM-related targets in a "libprojectM" folder in IDEs supporting it, e.g. Visual Studio.
* Fix displaying whether system GLM is used or not in config summary.
* Disable threading support on Windows unless we don't rely solely on pthreads anymore.
* Add version check for SDL2 (>=2.0.5).
* Complete overhaul of build instructions, adding CMake build and use instructions.
* Added check for OpenMP support and fixed a compiler error in OMPTL.
Also moved compiler warning checks to features.cmake and added the DEBUG define for debug builds.
* Added a quick start guide for building on Debian and Ubuntu.
* Lower minimum required CMake version to 3.14.
Co-authored-by: Kai Blaschke <kai.blaschke@gdata.de>
GLES 2.0 mode. GLES needs Version 3.00 ES.
This was done by switching the order of how a StaticGl Shader is constructed,
And there is additional code that properly sets up the GLSLGenerator for GLES mode.
to be Double precision numbers instead of /as well as integers.
This will allow more complex transitions, such as transitions on measure
detect or 4 beat detects for example.
Forsing this to generte youtube videos, it would be good for the transitions to happen precisely when measures or stances in the music change.
* Enable text for SDL app on mac
* fix screenshots
* brew readme
* wip
* Split SDL project up into more managable pieces
* clean
* clean
* Fixed Windows build, made (unused) FPS counter portable to non-POSIX platforms.
Co-authored-by: Kai Blaschke <kai.blaschke@kb-dev.net>
* rewrite PCM interface
use public methods, hide internal implementation
use ifft for smoothing
* AutoLeveler
* remove slow std::transform()
* faster smooth algorithm
* perf - quick check for no equations
* adjustments for wavecode.bspectrum=1
* cleanup use of BeatDetect.beatSensitivity
* comments
* more comments
* enum CHANNEL
* fix windows build
* fix windows build
* wip
* macOS installer signing works finally
* version bump
Co-authored-by: Matthew Bellew <matthewb@labkey.com>
* small rewrite to PerPixelMath to use one nested for loop instead of multiple nested for loops
hopefully better memory locality and maybe help the C optimizer
Also, some presets are very sensitive to zoom/zoomexp such as "Aderrasi - Contortion (Escher's Tunnel Mix).milk"
Tracked down the discrepancy in rendering to the different scaling of "rad" variable.
see also "Idiot24-7 - Ascending to heaven 2.milk"
* Try to minimize calls to transcendental functions in PerPixelMath_c
(harder to do in PerPixelMath_sse)
* minimize calls to transcendental functions in PerPixelMath_sse
* Update src/libprojectM/MilkdropPresetFactory/PresetFrameIO.cpp
Co-authored-by: Mischa Spiegelmock <me@mish.dev>
* Mac installer now contains both the app and Music plugin
* Major xcode projects cleanup
* Working universal binary build with xcode and installer (needs universal sdl2 to link against)
* Fix#460 - texture2D is renamed texture (#462)
* test all wavemodes
* fix wavemode=7 DoubleLine
* don't install test presets
* and don't create test directory
Co-authored-by: Matthew Bellew <matthewb@labkey.com>
* Fix: Parser can blow up if no [preset00] header
* fix no debug mode
* Remove assert that is blowing up because it looks like this is sort of handled.
* Only do rdft() on powers of 2 samples
* Only do rdft() on powers of 2 samples
* Revert changes to PCM.cpp sampling, needs more thoughtful fixing