Coder Social home page Coder Social logo

trendingtechnology / modular-music-visualizer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tremeschinarchive/modularmusicvisualizer

0.0 2.0 0.0 3.67 MB

High quality video music visualization tool for the music production community. Support for Piano Roll and Music Bars mode, post processing with experimental custom GLSL shaders.

License: GNU General Public License v3.0

Python 98.40% GLSL 0.98% Shell 0.23% Batchfile 0.39%

modular-music-visualizer's Introduction

Modular Music Visualizer Project Logo

Modular Music Visualizer

High quality video music visualization tool for the music production community.


Support for Music Bars and Piano Roll mode, Video as background, enable / disable whatever you want. Hack the code at your will. Custom GLSL shaders for post processing.


  • Simply a full featured music visualization software.

  • No watermark, pay walls or any crap.

  • Everything available at no cost.

  • Everything configurable.

Officially works on Linux with all features, most work on macOS and Windows

Showcase

Demo image of MMV Demo image of MMV

Link on YouTube (Music Bars Mode)


Demo image of MMV Piano Roll

Link on YouTube (Piano Roll Mode)


Idea

I am a Free and Open Source music producer and code hobbyist, at some point I'd be releasing my tracks to the internet and create some project to make the music industry less harsh and more accessible, that was once my thought.

The problem is, I don't want to release a music video on a platform with a static image or just recording the screen, nor pay for some software to generate an "music visualization" for me without "much control" of it, taking out all the fun on hacking the non open source code.

So I searched up for a free (as in freedom and price) tool that does exactly that, they do exist but aren't as good as they could be, most of the time a bit basic or random looking.

I embraced this opportunity on making a suckless music visualization tool with the programming languages and tools I love and care.

I cannot deny I took some heavy inspiration on 3blue1brown's Manim project, specifically the way we configure the MObjects there and simply add attributes, ask them to be drawn. While both are very different projects their usability are somewhat similar in a core level of how to operate.

I also invite you to read about the Free Software Definition / Philosophy and join us on this amazing community!! :)

Let's make music more accessible for small producers and keep it affordable for such talented people, are you doing your part?


Table of contents


Community, Support, Help, Donations

I currently have a (very lonely) Telegram group.

Feel free to enter and ask, share anything regarding the MMV project!!

I haven't yet made a decision on financial support, probably I'll have a donation option in the future, even though I dislike donationware as a developer working "full time" or "serious" on a project, I think it'll be the healthiest one for this project.

Expect MMV to be forever Free (price and freedom).


Running

Please see the file docs/RUNNING.md for instructions on all platforms


Hacking the code

Want to understand how the code is structured so you can learn, modify, understand from it?

Please read HACKING.md file :)

Feel free DM me, I'd be happy to explain how MMV works.

Goals, what is being developed

Also see CHANGELOG.md file :)

Next stuff

  • Progression bar (square, circle, pie graph?)

  • Implement text support (lyrics.. ?)

  • Load and configure MMV based on a YAML file, so distributing binaries will be theoretically possible

  • Generate rain droplets using shaders

Ideas for the future or waiting to be executed

  • Rectangle bars visualizer (only circle + linear or symmetric currently)

Impossible / hard / dream

  • Make MMV Piano Roll interactive for learning, writing midi files?

  • (Help needed) Fully functional and configurable GUI


Contributing

Please read CONTRIBUTING.md file :)

This repository on GitHub is a mirror from the main development repository under GitLab, I'm mostly experimenting with the other service.

I didn't set up bidirectional mirroring as that can cause troubles, GitLab automatically pushed every change I make to GitHub.

Feel free to create issues on any of both platforms, PRs / Merge Requests I ask you to do under GitLab (as I'm not sure what would happen if I accept something here? perhaps some protected branches shenanigans to solve this?).


User Generated Content, copyrighted material, legal

Any information, images, file names you configure manually is considered (by me) user generated content (UGC) and I take no responsibility for any violations you make on copyrighted images, musics or logos.

I give you a few "free assets" files, those, apart from the MMV logo I created myself on Inkscape, were generated with Python with some old code written by me, you can use them freely. Some are generated on the go if configured (they are on by default) on the running script of MMV.

Acknowledgements, Thanks to

I want to show my gratitude to these projects, no joke, MMV wouldn't be possible if these projects didn't exist.

Those are not in order of importance at all, they are always used together.

I'll mainly list the main name and where to find more info, it's just impossible to list every contributor and person that took place into those.

Main ones

  • Python language (https://www.python.org), where development speed is also a feature.

  • Skia-Python wrapper, for a stable Python interface with the Skia Graphics Library.

    • Generates the base videos and piano roll mode graphics.
  • ModernGL Python package for making it simple to render fragment shaders at insane speeds under Python.

    • Also the ModernGL main developer einarf for helping me an substantial amount with some good practices and how to do's
  • FFmpeg, FFplay, "A complete, cross-platform solution to record, convert and stream audio and video." - and they are not lying!!

    • "The Only One". Transforms images into videos, adds sound, filters.
  • The GLSL language, OpenGL, Vulkan (on mpv flag), the Khronos group on its entirety, seriously, you guys are awesome!!

    • Also the Python wrapper for the GLFW library for setting up an GL canvas so Skia can draw on.
  • MPV, the best video player of all, mpv --list-options | wc -l -> 1097, near 1100 command line flags and options.

    • Used for applying specific post processing on videos and encoding them.
    • Might become deprecated code in the near future

Python packages and others involved

  • SciPy and NumPy, the two must have packages on Python, very fast and flexible for scientific computing, lots of QOL functions.

    • Mainly used for calculating the FFTs and getting their frequencies domain representation.
  • audio2numpy, audioread, soundfile for reading an WAV, MP3, OGG and giving me the raw audio data.

  • mido for reading MIDI files, transforming ticks to seconds and other utilities for the piano roll visualization.

  • OpenCV and opencv-python, for reading images of a video file without having to extract all of them in the start.

  • pip-chill for simplifying the requirements.txt.

  • Tom's Obvious, Minimal Language.: Python interface, main project; YAML Ain't Markup Language: Python interface, main project: Both for reading / saving configuration files.

    • I dislike a bit JSON due to its kinda steep UX at first on fixing the syntax the end user itself, those two helps a lot on the overhaul UX on project I believe.
  • The Python Image Library Pillow, was extensively used in the past as a render backend but now it is used only for rotating images then sending to Skia.

  • Python package samplerate for a binding to libsamplerate, used for downsampling audio before calculating the FFT so we get more information on the lower frequencies.

  • requests. tqdm, wget, pyunpack, patool for fetching, downloading, showing progress bars and extracting External dependencies automatically for the users.


(There are missing Python dependencies here, mostly others that these packages depends on, but micro managing would be very hard)

Extras

The GNU/Linux operating system, contributors with code or money, every distribution I / you used, their package managers, developers, etc; For this amazing platform to develop on.

The platforms MMV code is hosted on.

The Open Source community.

modular-music-visualizer's People

Contributors

tremeschin avatar

Watchers

 avatar  avatar

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.