Giter VIP home page Giter VIP logo

projectm's Introduction

Windows Build Status Linux Build Status macOS Build Status Emscripten Build Status Android Build Status

Discord Shield Chat with us on Discord

Logo

projectM - The most advanced open-source music visualizer

Experience psychedelic and mesmerizing visuals by transforming music into equations that render into a limitless array of user-contributed visualizations.

projectM is an open-source project that reimplements the esteemed Winamp Milkdrop by Geiss in a more modern, cross-platform reusable library.

Its purpose in life is to read an audio input and to produce mesmerizing visuals, detecting tempo, and rendering advanced equations into a limitless array of user-contributed visualizations.

Important: This repository only contains libprojectM for use in application development!

This repository now only contains the projectM shared/static library. All frontends, plug-ins and other tools were outsourced into separate repositories. If you're not a developer and just look for a download to run projectM visuals on your machine or device, please use one of the links listed below. The releases section in this repository only contains source-code and binary releases of the projectM development libraries and headers, which aren't useful for end users.

End-User Applications

Important: projectM is currently undergoing heavy development, so the available end-user frontends are either outdated or unavailable. We've released a few development previews, which are not feature-complete and may have bugs. As soon as we've finished the current modernization of libprojectM, we'll release new and tested versions of most of the frontends listed below, while we may remove or replace some of those which are no longer maintained by their original developers.

Windows

macOS

Linux

  • Standalone (currently only available as a development preview for Ubuntu 22.04 and compatible distributions)
  • Steam (Same as standalone development preview)

Or check your distribution's package manager for a binary release. If it is outdated, please contact the package maintainer, as the projectM development team does not maintain any of the distribution-specific packages.

Android

Note: Both the free and paid apps plus the Android TV app are not created or supported by the projectM developers! If you have technical troubles or other inquiries, please contact the app author via the means provided in the Play Store. Any bug reports in the projectM issue tracker regarding the apps will be closed immediately.

Xbox / Windows Phone

Other

Source code and other resources, mostly aimed at developers.

Discord chat

Chat with us on Discord!

Demo Video

Presets

The preset files define the visualizations via pixel shaders and Milkdrop-style equations and parameters.

The projectM library does not ship with any presets. The frontends come with varying preset packs which can be found in separate repositories in the projectM repository list:

Included with projectM are the bltc201, Milkdrop 1 and 2, projectM, tryptonaut and yin collections. You can grab these presets here.

You can also download an enormous 41,000 preset pack of presets here (123MB zipped).

Also Featured In

Kodi Kodi (formerly XBMC)

Helix Helix

Silverjuke Silverjuke (FOSS Jukebox)

VLC Media Player VLC Media Player (AKA VideoLAN Client)

Reminder: These are all third-party integrations of libprojectM and not developed or supported by the projectM development team. Please report bugs in those applications to their respective developers.


Screenshots

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot


Architecture

Building from source

See BUILDING.md and the developer documentation in the wiki.

Using the library

At its core projectM is a library, libprojectM. This library is responsible for parsing presets, analyzing audio PCM data with beat detection and FFT, applying the preset to the audio feature data and rendering the resulting output with OpenGL. It can render to a dedicated OpenGL context or a texture.

To get started using projectM in your own projects, please go to the wiki and read the developer documentation available there.

There are some open-source applications that make use of libprojectM which can be found in the projectM organization's repositories and elsewhere.


Todo

  • Improve projectM using the recently-released Milkdrop source (WIP).
  • Update the various implementations using libprojectM.
  • Update downstream projects with new versions.

Help

Report issues on GitHub in the respective repositories:

If unsure, post your issue in the main libprojectM issue tracker. Please always check any existing issues if your problem has already been posted by another user. If so, add your logs and findings to the existing issue instead of opening a new ticket.

Get in contact with us

Chat with us on Discord.

Contribute to projectM

If you would like to help improve this project, either with documentation, code, porting, hardware or anything else please let us know! We gladly accept pull requests and issues.

Before starting to write code, please take your time to read the contribution guidelines in our wiki.

Package Maintainers

If you maintain packages of libprojectM, we are happy to work with you! Please note well:

  • The main focus of this project is libprojectM. It's a library that only really depends on OpenGL. The other applications are more like examples and demos.
  • Many of the frontend applications are likely outdated and of less utility than the core library. If you desire to use them or depend on them, please file an issue in the respective repository so we can help update them.
  • The "canonical" application for actually viewing the visualizations is now projectM-SDL, based on libSDL2 because it supports audio input and is completely cross-platform.
  • If you like Rust, there is a SDL3 rust frontend in the works looking for contributors.
  • This is an open source project! If you don't like something, feel free to contribute improvements!
  • Yes, you are looking at the official version. This is not a fork.

Authors

Authors

License

The core projectM library is released under the GNU Lesser General Public License 2.1 to keep any changes open-sourced, but also enable the use of libprojectM in closed-source applications (as a shared library) as long as the license terms are adhered to. The up- and downstream projects may use different licenses - please check all parts of the software to be compatible with your specific project if you plan an integration.

Wiki

More information for developers is available from the projectM Wiki.

projectm's People

Contributors

anton-latukha avatar axe312ger avatar blaquewithaq avatar deltaoscarmike avatar dpw13 avatar erikprantare avatar fughilli avatar growingant avatar hartwork avatar hibengler avatar johanneskauffmann avatar kblaschke avatar kockie69 avatar labkey-matthewb avatar lgbaldoni avatar luzpaz avatar mbellew avatar mertovun avatar milkdropper avatar mrray avatar peak3d avatar psperl avatar revmischa avatar schnitzeltony avatar sean5446 avatar sergiomb2 avatar snd1 avatar struktured avatar tatokis avatar yurivict avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

projectm's Issues

fatal error: immintrin.h: No such file or directory

Building on arm-linux-gnueabihf linux
gcc version 4.8.4 (Ubuntu/Linaro 4.8.4-2ubuntu1~14.04.4)

make[4]: Entering directory `/home/ubuntu/projectm/src/libprojectM/MilkdropPresetFactory'
/bin/bash ../../../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../..  -Wall -Wchar-subscripts -Wformat-security -Wmissing-declarations -Wpointer-arith -Wshadow -Wsign-compare -Wtype-limits -DDATADIR_PATH=\""/usr/local/share/projectM"\" -I../../../src/libprojectM    -g -O2 -pthread -std=c++11 -MT libMilkdropPresetFactory_la-BuiltinParams.lo -MD -MP -MF .deps/libMilkdropPresetFactory_la-BuiltinParams.Tpo -c -o libMilkdropPresetFactory_la-BuiltinParams.lo `test -f 'BuiltinParams.cpp' || echo './'`BuiltinParams.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I../../.. -Wall -Wchar-subscripts -Wformat-security -Wmissing-declarations -Wpointer-arith -Wshadow -Wsign-compare -Wtype-limits -DDATADIR_PATH=\"/usr/local/share/projectM\" -I../../../src/libprojectM -g -O2 -pthread -std=c++11 -MT libMilkdropPresetFactory_la-BuiltinParams.lo -MD -MP -MF .deps/libMilkdropPresetFactory_la-BuiltinParams.Tpo -c BuiltinParams.cpp  -fPIC -DPIC -o .libs/libMilkdropPresetFactory_la-BuiltinParams.o
In file included from CustomShape.hpp:34:0,
                 from PresetFrameIO.hpp:7,
                 from BuiltinParams.hpp:31,
                 from BuiltinParams.cpp:3:
Param.hpp:61:23: fatal error: immintrin.h: No such file or directory
 #include <immintrin.h>
                       ^
compilation terminated.
make[4]: *** [libMilkdropPresetFactory_la-BuiltinParams.lo] Error 1

@mbellew maybe you know what to do?

Build fails on ppc64

In file included from PerFrameEqn.cpp:29:
Param.hpp:61:10: fatal error: immintrin.h: No such file or directory
 #include <immintrin.h>
          ^~~~~~~~~~~~~
compilation terminated.

This commit 17942b7 seems to have introduced the problem.

Windows build

Try to get projectM building on windows, most likely with visual studio but whatever works.

Use the glsl branch

To build projectM you need to build in libprojectM:

  • Renderer
  • NativePresetFactory
  • MilkdropPresetFactory
  • libprojectM
    as libraries.

Then build projectM-sdl and link it against those libraries. You'll need libsdl2
Most likely you will need a few other libraries too, like libftgl and libz, and need to link against OpenGL.

Make sure the proper windows define is set for all the header #ifdefs to work right

projectM Visualizer.xcodeproj Shadow Developer Private Dir...

Hi, I would also like to know how my code is run on other box/machines.
.... best regards
This is error code from Xcode...
ld: warning: directory not found for option '-L/Users/snooz/dev/projectm/src/libprojectM'
ld: warning: directory not found for option '-L/Users/snooz/dev/projectm/src/libprojectM/Renderer'
ld: warning: directory not found for option '-L/Users/snooz/dev/projectm/src/libprojectM/MilkdropPresetFactory'
ld: warning: directory not found for option '-L/Users/snooz/dev/projectm/src/libprojectM/NativePresetFactory'

dyld: Library not loaded: @rpath/SDL2.framework/Versions/A/SDL2

I'm trying to install projectM-SDL-mac, but it returns:

dyld: Library not loaded: @rpath/SDL2.framework/Versions/A/SDL2
  Referenced from: /Users/marty/Downloads/projectM-SDL-mac/./SDLprojectM
  Reason: image not found
Abort trap: 6

Shouldn't SDL2 be embedded into the SDLprojectM binary? How can I solve this issue?

Are preset ratings persisted?

In the presetloader, there is code in rate a preset and in the preset chooser there is code to use that rating to do a weighted random selection of a preset

But, it looks like the rating is set to 3 each time:

_ratings = std::vector<RatingList>(TOTAL_RATING_TYPES, RatingList( _presetNames.size(), 3 ));

Is there code to persist the ratings?

advice for creating a python-based wrapper to projectM?

I just heard about projectM and I'm very excited to learn more about this. For a little background I am a podcaster who does mostly audio podcasts and would like to create a video version that is some kind of visualization based on the audio file. and export that as a mp4 for upload to YouTube. My current plan is to use this audio visualizer based in python which gives you animated bars in front of a static image. This is cool but myself and others in podcasting would like more variety in the visualizations, and projectM could give us a lot of unique visuals. I was thinking a first step would be to create a wrapper to the projectM code in python so it could eventually be incorporated in to other audio visualization tools like the aforementioned visualizer, but I was wondering if there were additional documentation or other general advice for created a wrapper to projectM?

build error

Hi, I try to cross compile but it fails for some error. Strangely it shows no error so I have no idea why it fails.
Happens with 3.0.0 and 3.1.0-beta1 - could someone hint me what goes wrong ?
https://pastebin.com/YbWYp96f

Stand Alone Mac Version

I would love a stand alone version of this that would work with Mac OS. Also a version for (or instructions on how to use with ) VLC on Mac OS.

Thanks!

[Suggestion] projectM IRC channel?

Hi,
A lot of open source projects have IRC channels that help people follow the project and provide a community for people interested in the project. I don't see any IRC channels for projectM or milkdrop development, but I think there are people interested - as projectM is the most capable and portable milkdrop compatible visualizer out there.

IRC Channels can also be a great place for potential contributors to ask questions that may not necessarily warrant a github issue or hunting down developer email addresses.

It's pretty simple to register a channel on freenode and post something in the README. I know I would /join if there was an official channel.

Just wanted to pass this suggestion along - I'd love to see a #projectM on freenode or somewhere!

flatpak app doesn't load audio sources

hey, IDK if you maintain your flatpak app of projectM or not but when I get it to launch on bootup its missing all the audio sources & doesn't react to sound... if I close & re-open it the sources will be there, but I need them working at boot & compiling projectM from source only gives me segmentation faults that I cannot solve.

Overlay track / song data / information

Hi. Is there a way to have ProjectM overlay information about the currently playing track? From what I understand about the way PM works, I suspect this isn't a no-brainer?

Cheers

Uninitialized variable

rpmlint tells me this:

I: Program is using uninitialized variables.
   Note the difference between "is used" and "may be used"
W: projectM uninitialized-variable /home/abuild/rpmbuild/BUILD/projectM-0.9.1_beta+git154.g04001c2/src/NativePresets/MstressJuppyDancer.cpp:198

No milkdrop on OSX these days?

Not working on itunes 12.6.2, osx 10.9.5 over here. .bundle is installed but no projectm available in visualisers?

Also tried installing projectm-Jackosx with Jack 0.92 and projectm app won't launch:

Dyld Error Message:
Library not loaded: QtGui.framework/Versions/4/QtGui
Referenced from: /Applications/projectM-jack.app/Contents/MacOS/projectM-jack
Reason: image not found

Binary Images:
0x8feb7000 - 0x8fee9497 dyld (239.5) <86B9ED65-6A74-340B-A990-2E21CAF0BB21> /usr/lib/dyld
0x994f0000 - 0x994f0fff com.apple.Carbon (154 - 157) <33457512-4EA2-373B-BB04-A6A7B6D4E54A> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon

help! =(

ProjectM on ARM?

Seeing as projectM has been ported to both android and iOS is there any chance of it getting ported to ARM linux based distros? I think the rpi 3 should be strong enough to support it

Optimization Projects

Things to speed up:

  • PresetOutputs::PerPixelMath - this can probably be optimized a lot. It's called frequently.
  • Convert shaders to GLSL (#26)

Methodology:

Need to pick a preset and crank the mesh size up and then optimize things until framerate goes up.

Attached is some profile data in CSV form.
Sampler - SDLprojectM_Run2.csv.zip

Implement as a plugin.

I'd like to integrate ProjectM to this, but I do not manage do find the informations I need either on the doc or the code.
While I'm conscious I probably missed something huge, I prefer asking now if anything similar as been done, or if you could consider making a tutorial to this (to which I'd gladly contribute if I manage to get started).
Please tell me if this seems unclear.
Thanks for the beautiful project.

Native preset disable config flag

I think the native presets are not very interesting and should be disabled by default. If someone wants to make some cool native presets they can enable it, but normal users have no need for this functionality.

windows binary release

Are there any plans to add a Windows binary to the releases, either as a standalone or VLC plugin?

Small rpmlint complaints

I'll leave them here (they refer to 3.0.0):

I: Program is likely to break with new gcc. Try -fno-strict-aliasing.
W: projectM strict-aliasing-punning Expr.hpp:111, 112

I: Program is using uninitialized variables.
   Note the difference between "is used" and "may be used"
W: projectM uninitialized-variable MstressJuppyDancer.cpp:198

Bundle glm with project

glm is just some header files. We should bundle them with the project to eliminate this dependency. Would make installing easier, especially on OSX where it's the only non-SDL2 dep.

windows support

whats with the lack of windows support ?
is there some major roadblock ?
id like to see a plugin for AIMP4 now that its mature

Support OpenGL ES

On the projectM website, it says that it has been ported to OpenGL ES 2.0 for Android and iOS use. Has that code ever been released anywhere? All I see in the repo seems to be ES 1.0 support and so far I've only been able to get that to half work in a test iOS app (it renders but not correctly).

Is the ES 2.0 version of the library closed source?

Building on Arch Linux - glew issue?

I'm getting this currently with glew 2.1.0-1 installed. Is that the right version?

Making all in projectM-sdl
make[3]: Entering directory '/home/milk/src/projectm/src/projectM-sdl'
/bin/sh ../../libtool  --tag=CXX   --mode=link g++  -g -O2 -static  -o projectMSDL pmSDL.o projectM_SDL_main.o -lSDL2	../../src/libprojectM/libprojectM.la -lGL  -ldl
libtool: link: g++ -g -O2 -o projectMSDL pmSDL.o projectM_SDL_main.o  -lSDL2 ../../src/libprojectM/.libs/libprojectM.a -lGL -ldl
../../src/libprojectM/.libs/libprojectM.a(libRenderer_la-Renderer.o): In function `Renderer::SetPipeline(Pipeline&)':
/home/milk/src/projectm/src/libprojectM/Renderer/Renderer.cpp:116: undefined reference to `ShaderEngine::loadShader(Shader&)'
/home/milk/src/projectm/src/libprojectM/Renderer/Renderer.cpp:117: undefined reference to `ShaderEngine::loadShader(Shader&)'
../../src/libprojectM/.libs/libprojectM.a(libRenderer_la-ShaderEngine.o): In function `ShaderEngine::makeShader(unsigned int, char const*)':
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:351: undefined reference to `__glewCreateShader'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:352: undefined reference to `__glewShaderSource'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:353: undefined reference to `__glewCompileShader'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:354: undefined reference to `__glewGetShaderiv'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:357: undefined reference to `__glewGetShaderInfoLog'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:357: undefined reference to `__glewGetShaderiv'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:358: undefined reference to `__glewDeleteShader'
../../src/libprojectM/.libs/libprojectM.a(libRenderer_la-ShaderEngine.o): In function `ShaderEngine::InitShaderProgram()':
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:387: undefined reference to `__glewCreateProgram'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:388: undefined reference to `__glewAttachShader'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:390: undefined reference to `__glewLinkProgram'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:391: undefined reference to `__glewGetProgramiv'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:394: undefined reference to `__glewGetProgramInfoLog'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:395: undefined reference to `__glewDeleteProgram'
../../src/libprojectM/.libs/libprojectM.a(libRenderer_la-ShaderEngine.o): In function `ShaderEngine::SetupShaderVariables(unsigned int, Pipeline const&, PipelineContext const&)':
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:409: undefined reference to `__glewProgramUniform4fv'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:409: undefined reference to `__glewGetUniformLocation'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:414: undefined reference to `__glewProgramUniform1f'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:415: undefined reference to `__glewProgramUniform4f'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:416: undefined reference to `__glewProgramUniform4f'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:437: undefined reference to `__glewProgramUniform4f'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:439: undefined reference to `__glewProgramUniform4f'
../../src/libprojectM/.libs/libprojectM.a(libRenderer_la-ShaderEngine.o): In function `ShaderEngine::SetupShaderQVariables(unsigned int, Pipeline const&)':
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:492: undefined reference to `__glewProgramUniform4f'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:492: undefined reference to `__glewGetUniformLocation'
../../src/libprojectM/.libs/libprojectM.a(libRenderer_la-ShaderEngine.o): In function `ShaderEngine::RenderBlurTextures(Pipeline const&, PipelineContext const&, int)':
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:531: undefined reference to `__glewProgramUniform4f'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:531: undefined reference to `__glewGetUniformLocation'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:566: undefined reference to `__glewProgramUniform4f'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:566: undefined reference to `__glewGetUniformLocation'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:594: undefined reference to `__glewProgramUniform4f'
/home/milk/src/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:594: undefined reference to `__glewGetUniformLocation'
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:434: projectMSDL] Error 1

Scope Update Rate Incredibly Slow

Seems like the last several versions, the rate of drawing new waveforms is barely 1/s whereas it was always much faster in Milkdrop. I'm interested in fixing this if you know what might control it for PulseAudio.

Warping effect incomplete

The preset "Eo.S.+Phat Non-eucliden" relies mostly on the warp effect which is applied between each frames. The rendering is different since the SSE optimization of PresetOutputs::PerPixelMath introduced by commit d157822. The idle preset also reveals this issue, another presets could be affected.
The Winamp/Milkdrop capture confirms the issue.

ProjectM with PerPixelMath_sse

pm_with_sse

ProjectM with PerPixelMath_c

pm_without_sse

Winamp/Milkdrop

winamp

iTunes Plugin Won't Start (glsl)

In #26 the itunes plugin immediately crashes. Almost certainly the problem is that it's using too old of a GL version:

default	09:54:21.966621 +0300	VisualizerService	GL_VERSION: 2.1 ATI-1.68.20
default	09:54:21.966688 +0300	VisualizerService	GL_SHADING_LANGUAGE_VERSION: 1.20
default	09:54:21.966735 +0300	VisualizerService	GL_VENDOR: ATI Technologies Inc.

"cmake go away" not complete

When you removed cmake last month, you broke it. The library doesn't get installed, the headers don't get installed, and subprojects like pulse and jack aren't built.

Qt implementation

Hi,

I'm glad to have stumbled upon your project.
I'd like to implement ProjectM in mine (https://github.com/RalfVB/rde), which is Qt5-based.

I'm interested in the projectm-pulseaudio example, but the code for that is pretty old since the qprojectmwidget class derives from the deprecated QGLWidget class.

Is there a better example available somewhere?

Fails to find GLuint

--- libRenderer_la-Renderer.lo ---
In file included from Renderer.cpp:1:
In file included from ./Renderer.hpp:4:
./FBO.hpp:78:3: error: unknown type name 'GLuint'
  GLuint initRenderToTexture();
  ^

GL/gl.h is included only when EMSCRIPTEN is defined, and EMSCRIPTEN isn't defined. It seems that it is defunct, it isn't ever defined.

Version 2.2.0

Crashes on macOS / iTunes 12.6.1.25

Love having MilkDrop available on OSX/macOS...brings back great memories - please keep this up! You're doing a great service to the community by maintaining this.

That being said, the application/plugin appears to crash upon changing presents frequently. It works but crashes and then iTunes needs to be restarted in order to be able to select the plugin again.

projectM_resetGL not resizing as expected

Hi,

I've been learning how to use libprojectM, and thought this issue was due to my misunderstanding of the library, but noticed the exact same problem occurs for the SDL and Qt/pulseaudio versions compiled from the current git master.

It appears that something goes wrong during the resize of the GL viewport or similar (the call to projectM_resetGL does not seem to resize as expected). It seems the correct window size is being passed to libprojectM, stored in the settings struct and passed on to the Renderer, but from there I can't see what is going wrong.

This can easily be seen by running the SDL or Qt version, and then resizing the window. If shrinking the window, the rendering gets cropped, like only part of the image is copied onto the window surface. If enlarging the window, the resolution does not increase, and instead the original size image is stretched/scaled to fill the window (if the code is modified to start with a small window size, this effect is more noticeable). A screenshot is attached, showing artefacts from the partial rendering only into the upper-left corner after shrinking of the window.

I've reproduced this on both Ubuntu 16.04 and Arch Linux (both x86_64).

screenshot from 2018-07-03 11-05-20

osx build fails, ftgl not found

Followed your instructions, also tried to install a different ftgl from github in the regular way and still get this:

[ 83%] Linking CXX executable projectMSDL
ld: library not found for -lftgl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/projectM-sdl/projectMSDL] Error 1
make[1]: *** [src/projectM-sdl/CMakeFiles/projectMSDL.dir/all] Error 2
make: *** [all] Error 2

Also, your most recent app installer fails to appear in itunes 12.6.2.20 / osx 10.9.5

glsl threading crash

libc++abi.dylib: Pure virtual function called!
Process 53368 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    frame #0: 0x00007fff5ba5bb66 libsystem_kernel.dylib`__pthread_kill + 10
libsystem_kernel.dylib`__pthread_kill:
->  0x7fff5ba5bb66 <+10>: jae    0x7fff5ba5bb70            ; <+20>
    0x7fff5ba5bb68 <+12>: movq   %rax, %rdi
    0x7fff5ba5bb6b <+15>: jmp    0x7fff5ba52ae9            ; cerror_nocancel
    0x7fff5ba5bb70 <+20>: retq   
Target 0: (projectMSDL) stopped.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
  * frame #0: 0x00007fff5ba5bb66 libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0x00007fff5bc26080 libsystem_pthread.dylib`pthread_kill + 333
    frame #2: 0x00007fff5b9b71ae libsystem_c.dylib`abort + 127
    frame #3: 0x00007fff598b1f8f libc++abi.dylib`abort_message + 245
    frame #4: 0x00007fff598ce952 libc++abi.dylib`__cxa_pure_virtual + 18
    frame #5: 0x0000000100087111 projectMSDL`Renderer::RenderFrame(Pipeline const&, PipelineContext const&) [inlined] Renderer::RenderItems(this=<unavailable>, pipeline=<unavailable>, pipelineContext=<unavailable>) at Renderer.cpp:233 [opt]
    frame #6: 0x000000010008704d projectMSDL`Renderer::RenderFrame(this=0x0000000105052200, pipeline=0x00007ffeefbff288, pipelineContext=0x00000001030253d0) at Renderer.cpp:305 [opt]
    frame #7: 0x0000000100019fad projectMSDL`projectM::renderFrame(this=0x00000001030362c0) at projectM.cpp:408 [opt]
    frame #8: 0x0000000100001e1c projectMSDL`projectMSDL::renderFrame(this=0x00000001030362c0) at pmSDL.cpp:213 [opt]
    frame #9: 0x000000010000348d projectMSDL`main(argc=<unavailable>, argv=<unavailable>) at projectM_SDL_main.cpp:193 [opt]
    frame #10: 0x00007fff5b90b015 libdyld.dylib`start + 1

Qt build fails on linux

There's a linking problem with projectm-pulseaudio; it disappears if I set LDFLAGS="-lQt5OpenGL".
Not sure where's the cleanest spot to add it in the Makefile.am though.

See log snippet.

Marvelous

Wow! revmischa, thank you so much for all the work you have clearly put into this!!!

I tried for months/years to get the older, original projectM to build and run without full success (the one on sourceforge that hasn't been updated for 6 years at least!). Granted, that was 5+ years ago and I didn't have a lot of experience with building software from sources, much less all the errors that were coming up! But I had been able to figure things out until projectM... there were so many problems with cmake and in the code/scripts itself! (I eventually got some help and managed to build a binary, but it was not too stable and didn't fully support Milkdrop v2 presets as promised. There were also problems trying to get textures to load.)

I just read your awesome "introduction to projectM" article. That was very informative and well-written.
What you have done with this project is remarkable! I have wanted to make this project work so badly that I actually signed up for a class in C++ so that I would be able to work on it myself. But it turns out my brain doesn't work like that at all! In any case, I am so happy that someone who cares is working on this!
I learned two important things from your article. First of all, you have basically finally set the record straight for me regarding pixel shaders.
[A while back someone told me that the nvidia's CG toolkit wasn't actually even capable of providing support for the pixel shaders except in Windows. That seemed to be true because I have never seen an instance of projectM that is able to properly play the v2 presets that rely on pixel shaders (on any platform, including Android). Also, the CG documentation (which I found sketchy & vague) did not explicitly clarify the matter.]
The other thing I learned is that projectM may not actually as pathetic as I had concluded. You certainly speak highly of it several times.

You mentioned basically re-writing a bunch of the code to make use of VBOs in OpenGL ES and provide better support for shaders. I'm very excited! I hope that goes as smoothly & easily as possible.

I presume you are already well aware and familiar with what Ryan Geiss has written about MD over the years, and his posts and comments in various places (I know some are gone though.)
At some point after finally getting the latest version open-sourced, he wrote somewhere about his thoughts and ideas for future improvements & potential new features for Milkdrop; very interesting and exciting.
Ryan seems to have a special place in his heart for MD and despite always being very busy he has found the time to answer questions; and he always throws in some insightful ideas & perspectives.
I would encourage you to reach out to him and let him know what you're doing. I'm sure he will be very pleased and supportive; and he may have some great thoughts; after all, the Milkdrop code/concept has had plenty of time to ripen & mature in his subconscious.

I was a little bit surprised by how little you talked about Milkdrop—focusing almost exclusively on projectM. Maybe I'm just projecting my own perspective, but it seems to me that your ultimate, underlying goal is a cross-platform app/plug-in that can accurately reproduce/play all of the available MD2 presets. That seemed to be the object of projectM as well; although as far as I've ever seen they never really seemed to even come close!
Since you basically seem to be doing a rewrite of most (or at least quite a bit) of the project, I'm wondering how much have you gone back to the original Milkdrop code? I can't help but think it makes more sense to just go back to the real, original source.
I don't know; that may not actually be as helpful as it seems in my mind. Have you looked at the Milkdrop code much? Is that even of any use/value for what you're doing?
Obviously my idea isn't really based on anything particularly substantial, except for the fact that you are basically maintaining the commitment retain compatibility with MD presets — which I FULLY support and praise because there are SO many of them! Plus, once you get a cross-platform, very smooth & stable version of the software running (especially if it's been streamlined & optimized for the latest hardware & APIs while providing full support for all the presets) that will open up a lot of possibilities and potential new & returning users.
And if you also decide to include/restore all the controls, settings, customization and on-the-fly tweaking that was possible in Milkdrop, and maybe a few extra controls/features, I bet people would start writing presets again and upgrading some of the old ones!
I guess what I'm really getting at here is: in light of all the code that you have already and are planning to re-write... have you considered re-branding your project?
There is no real benefit to holding onto the projectM name! It's actually associated with a lot of frustration and bad ju-ju for a LOT of people; and it's not catchy, clever or memorable at all...

What you're working on is a cross-platform version/re-write/port of Milkdrop. The Milkdrop name/brand is well-known and catchy, and it has a long history and legacy associated with it; as well as a lot of nostalgia and "prestige". Milkdrop is also open source now. It seems like it would make sense to re-associate with that name. You are much more likely to garner support and even assistance if you do so.
And since both projects are open source now, you don't have to give up any of the investments you've already made.
Maybe you could call it Project Milkdrop or something?

I don't know, just some ideas to ponder and consider if you wish...

It definitely makes sense to me- particularly when I consider all the frustrating, disappointing and negative experiences that so many people inevitably associate with projectM. (One thing that stands out is scamming fiasco that the original developers did with their mobile apps... Basically, at some point they came out with a "major" update promising a number of improvements, fixes and new features. But then they decided to create it as a new app (with just a slightly different name) which meant that all the people that had paid for the "pro version" were left high & dry. And their new app had very limited, restricted capabilities in the free version, trying to 'force' users to buy it again. Many users were understandably very upset! In light of those and other experiences I'm not surprised that they decided not to share the updated code with the community. I hold them in quite low regard actually.

I haven't tried out your plug-in for iTunes yet (or any of your versions- I just learned of this today!); but I guess this will be the moment of truth and we'll see if my presets actually work, or if they don't! I'm certainly excited!

I really can't thank you enough! You have just brought me so much joy- just by the fact that someone is actually interested and CAPABLE of doing something with this! I truly wish there was something I could do to assist or participate! Maybe I'll figure something out...

Hard Cut to Visualizations

Good Day
When I change to any other visualization than the principal, the program turns black, showing "Hard cut to ..." . What's the problem?

Cleanup ?

I have just built the version 3.0.0 and when I look at what has been installed I see things like this:

/usr/share/projectM/presets/!!!---flexi + amandio c - organic12-3d-2.milk
/usr/share/projectM/presets/.DS_Store
/usr/share/projectM/presets/._.DS_Store
/usr/share/projectM/presets/._Aderrasi + Geiss - Airhandler (Kali Mix) - Canvas Mix.milk
/usr/share/projectM/presets/._Aderrasi - Accelerator (Hot Lead Transfusion).milk
/usr/share/projectM/presets/._Aderrasi - Arcworld (Arcwheel - Train Wheel).milk
/usr/share/projectM/presets/._Aderrasi - Calabi-Jau Space Bar.milk
/usr/share/projectM/presets/._Aderrasi - Contortion (Flair Mix).milk
/usr/share/projectM/presets/._Aderrasi - Potion of Spirits.milk
/usr/share/projectM/presets/._Eo.S.+Phat Fractical_dancer - light in the distance.milk
/usr/share/projectM/presets/._Eo.S.+Phat Quadrent_fractal.milk
/usr/share/projectM/presets/._Eo.S.+Phat Speak with the orb_more_colour_mix.milk
/usr/share/projectM/presets/._Eo.S.+Phat last of it's kind_sinking.milk
/usr/share/projectM/presets/._Flexi - reality tunnel.milk
/usr/share/projectM/presets/._Flexi - smashing fractals [acid etching mix].milk
/usr/share/projectM/presets/._Fvese - Round and Round (geiss gamma mix).milk
/usr/share/projectM/presets/._Fvese - The Tunnel (Final Stage Mix).milk
/usr/share/projectM/presets/._Geiss - Aieeeeee!!!.milk
/usr/share/projectM/presets/._Geiss - Asymptote.milk
/usr/share/projectM/presets/._Geiss - Bass Kaleidosphere.milk
/usr/share/projectM/presets/._Geiss - Bass Zoom.milk
/usr/share/projectM/presets/._Geiss - Bipolar 1.milk
/usr/share/projectM/presets/._Geiss - Bonfire.milk
/usr/share/projectM/presets/._Geiss - Calligraphy.milk
/usr/share/projectM/presets/._Geiss - Cartographie.milk
/usr/share/projectM/presets/._Geiss - Cepiasound.milk
/usr/share/projectM/presets/._Geiss - Constant Velocity.milk
/usr/share/projectM/presets/._Geiss - Iris.milk
/usr/share/projectM/presets/._Geiss - Music Box.milk
/usr/share/projectM/presets/._Image415.jpg
/usr/share/projectM/presets/._Phat and Eo.S. _ shapes are cool smoke move2.milk
/usr/share/projectM/presets/._Phat_Eo.S._Swim_waveform_mix.milk
/usr/share/projectM/presets/._Phat_Zylot_Eo.S. spiral_faces_ravers_phantom.milk
/usr/share/projectM/presets/._PieturP - triptrap_(ultimate-trip-mix).milk
/usr/share/projectM/presets/._Zylot + Geiss - Enlightenment.milk
/usr/share/projectM/presets/._Zylot - Age of Science (seeking truth mix).milk
/usr/share/projectM/presets/._Zylot - Block Of Sound (Abstract Architecture Mix).milk
/usr/share/projectM/presets/._Zylot - Color Of Music.milk
/usr/share/projectM/presets/._Zylot - In death there is life (Dancing Lights mix).milk
/usr/share/projectM/presets/._Zylot - In death there is life (Geiss Layered Mix).milk
/usr/share/projectM/presets/._fiShbRaiN - white scream firefly.milk
/usr/share/projectM/presets/._fiShbRaiN - witchcraft.milk
/usr/share/projectM/presets/._kaite.jpg
/usr/share/projectM/presets/._manyfish.jpg
/usr/share/projectM/presets/._onefish.jpg

Are these files required or is that some rubbishes that can be deleted ?

Thank you.

A couple of questions about your project

Hello hello! I have been using ProjectM for YEARS every day! I have a secondary PC that acts as a "stereo-server", with two smaller 19-21" inch screens on each side of my 40 inch screen, with ProjectM set to open on boot-up, its really beautiful!

There hasn't been an update to ProjectM in a very long time on Arch Linux, I can't even remember when the last time was I saw an update for ProjectM... So I'm just wondering... Is that because you haven't made an official release in a while or perhaps it just hasn't been getting updated in the arch linux repositories? And can the iProjectM HD be ported to Linux or is there perhaps a "ProjectM HD"? It'd be really awesome if we had a similar plugin for Clementine if that is even possible.

The version in the Arch Linux "Community" repo is: 2.1.0-17
For the record I'm using Artix, which is OpenRC arch that shares a few repos with the official Arch.

Thank you for your time & especially for your work.

Accessing per_pixel variable from per_point expression

I added a bunch of assert()s to make sure I am understanding the parameter behavior. I found this behavior which seemed suspicious. In 'martin - reflections on the black tiles' there are these expressions

wave_0_per_point6=dx = dx*.99 + xi;
wave_0_per_point7=dy = dy*.99 + yi;

'dx' on the rhs make sense, reading from the preset.dx parameter. On the lhs, is this is writing to the per_pixel matrix (which I would think would corrupt memory). What is the intended behavior here?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.