Skip to content
tukkek edited this page Sep 10, 2024 · 16 revisions

This stub-page is a list of ideas for Project M's next-generation visualizer. Every-one with a Git Hub account is able and welcome to edit it!

For now, this page will be used to collect and organize pre-liminar ideas instead of pull-requests or proof-of-concept code.

See the read-me file for more information: https://github.com/projectM-visualizer/visualizer-ng-ideas/blob/master/ReadMe.md

Technical discussion

Engine and architecture

  1. While highly successful on its own merits, Project M has not seen wide-spread adoption as an embedded visualizer in music-players (even open-source ones to which anyone could contribute the integration). Clementine and Straw Berry are two players that have struggled to maintain support for Project M [1] [2]. The stand-alone Steam version is very out-dated [3]. A next-generation Project M should strive to excel where the current project has failed, as integration with popular audio players is the best way to promote the world-class work of any Project M's developers and visualization-artists.
  2. Project M is currently written in C++. Rust is the world's most-admired language today [4] and its creator described it as a C++ alternative [5]. As such, it seems that any next-generation of an older C++ project should include a due-diligence discussion and analysis of Rust as its potential new language. Since Rust is both a high-quality and an extremely popular language, it could also help in attracting more programmers to collaborate with development.
  3. An independent audio-analyzer https://github.com/projectM-visualizer/visualizer-ng-ideas/discussions/2

[1]: Clementine: Visualizations missing or broken https://github.com/clementine-player/Clementine/issues/7151

[2]: Straw-berry: Reintegrate Project M https://forum.strawberrymusicplayer.org/topic/1286/reintegrate-projectm-visualizer

[3]: Discord message https://discord.com/channels/737206408482914387/737206408948220057/1280712455965642752

[4] 2023 Developer Survey: Programming, scripting, and markup languages https://survey.stackoverflow.co/2023/#section-admired-and-desired-programming-scripting-and-markup-languages.

[5]: Rust: Syntax and features https://en.wikipedia.org/wiki/Rust_(programming_language)#Syntax_and_features

Visualization file format

  1. Use JSON, YAML or another common text-based format for its familiarity, interoperability and support.
  2. Bundling of preset resources, e.g. textures, meshes etc.

Audio analysis

(Currently empty).

User interface

(Currently empty).

Milk Drop compatibility

  1. While directly supporting .milk and .milk2 file-formats is likely to be counter-productive in terms of the development- and maintenance-effort, a conversion utility from those formats to the next-generation Project M file-format would be greatly beneficial in porting a very-large-number of pre-existing visualizations compared to having to rebuild decades-worth of visualization-artists' effort to achieve the same. While being able to automatically convert every and any file automatically isn't necessary or realistic, identifying an ideal sub-set of features needed to convert a large number of scripts could be an attainable goal without making this utility a large project of its owe.

Creative discussion

Features

  1. Interactive elements would be an interesting novel feature not seen previously in Project M or Milk Drop. With Java Script, Python and Lua being ubiquitously used as integrated scripting languages, the possibility of turning Project M as a base for creative developers to work from could be an interesting feature to consider. The possibilities range anywhere from live-interactions; mini-games; streaming; to art-exhibits...
  2. A built-in or stand-alone visualization editor with live-rendering as you change the visualization.
    • A utility that is able to generate random visualizations based on a simple template (or using a pre-existing visualization as template) and then randomizing effects and parameters could be a fun way for artists to explore unusual ideas and to get a crude base to work from without having to start from zero. This could be achieved by using effects from the existing visualization library (including potential ones converted from Milk-drop) as building blocks. This could be an external script, which an editor command could call if the system has an interpreter installed.
  3. Support for 3D scenes

Community

  1. A recurring "visualization of the month" coopetition would be a fun way to keep the community vibrant; reward visualization-artists; promote their work; and to deliver new visualizations to users. For several reasons, this would be better handled by community members on side-channels (such as You Tube or Discord), rather than as part of the official project but it can still be discussed as a valuable goal.

Visuals and aesthetic

  1. Support for skins could be interesting, similarly to another Llama-based music player. Minimal skin support could be implemented then expanded if user-demand exists. This depends, of course on how much interface would even be shown (especially when embedded) as it might not be worth it if fairly minimal.