Fără Descriere

rexim 2de17e7922 Remove unnecessary ifdef-s 1 an în urmă
.github 592a848310 Typo 1 an în urmă
raylib 48f3d6da3d Upgrade raylib 4.5.0 -> 5.0 2 ani în urmă
resources f319d93742 Add microphone button 1 an în urmă
src 2de17e7922 Remove unnecessary ifdef-s 1 an în urmă
src_build 97c49650fd Tuck up some file creation code 1 an în urmă
.gitignore 88703e1ebc add hotreload support for windows 1 an în urmă
CHANGELOG.txt b1359641ce Update CHANGELOG 1 an în urmă
CONTRIBUTING.md 44877f2a49 Update CONTRIBUTING.md 2 ani în urmă
LICENSE 7d46a7aace Update LICENSE 2 ani în urmă
README.md 83d019df6b Replace single MUSIALIZER_TARGET with a bunch of MUSIALIZER_TARGET_* 1 an în urmă
musializer-logged.bat 8a6ba615ac Add musializer-logged.bat script for Windows build 2 ani în urmă
nob.c 97c49650fd Tuck up some file creation code 1 an în urmă
nob.h 797baf4de3 Factor out everything related to the buidl to src_build/ folder 1 an în urmă

README.md

Musializer

[!WARNING] This software is unfinished. Keep your expectations low.

The project aims to make a tool for creating beautiful music visualizations and rendering high quality videos of them.

Please, read CONTRIBUTING.md before making a PR.

Demo

Music by @nu11 from https://soundcloud.com/nu11_ft/nu11-wip-works-2016-2022 at 20:38

https://github.com/tsoding/musializer/assets/165283/8b9f9653-9b3d-4c04-9569-338fa19af071

Supported Audio Formats

  • wav
  • ogg
  • mp3
  • qoa
  • xm
  • mod
  • flac

Download Binaries

Build from Source

External Dependencies:

  • ffmpeg executable available in PATH environment variable. It is called as a child process during the rendering of the videos. So if you don't plan to render any videos it's completely optional.

We are using Custom Build System written entirely in C called nob. It is similar to nobuild in spirit. nob.h is the Build System and nob.c is the program that builds Musializer.

Before using nob you need to bootstrap it. Just compile it with the available C compiler. On Linux it's usually $ cc -o nob nob.c on Windows with MSVC from within vcvarsall.bat it's $ cl.exe nob.c. You only need to boostrap it once. After the bootstrap you can just keep running the same executable over and over again. It even tries to rebuild itself if you modify nob.c (which may fail sometimes, so in that case be ready to reboostrap it).

I really recommend to read nob.c and nob.h to get an idea of how it all actually works. The Build System is a work in progress, so if something breaks be ready to dive into it.

Linux and OpenBSD

$ cc -o nob nob.c # ONLY ONCE!!!
$ ./nob
$ ./build/musializer

Keep in mind that the application needs ./resources/ to be present in the folder it is ran from.

If the build fails because of missing header files, you may need to install the X11 dev packages.

On Debian, Ubuntu, etc, do this:

$ sudo apt install libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev

On other distro's, use the appropriate package manager.

Windows MSVC

From within vcvarsall.bat do

> cl.exe nob.c # ONLY ONCE!!!
> nob.exe
> build\musializer.exe

Cross Compilation from Linux to Windows using MinGW-w64

Install MinGW-w64 from your distro repository.

Edit ./build/config.h and set MUSIALIZER_TARGET_WIN64_MINGW instead of MUSIALIZER_TARGET_LINUX.

$ ./nob
$ wine ./build/musializer.exe

Hot Reloading

Edit ./build/config.h and enable MUSIALIZER_HOTRELOAD.

$ ./nob
$ ./build/musializer

Keep the app running. Rebuild with ./nob. Hot reload by focusing on the window of the app and pressing h.

The way it works is by putting the majority of the logic of the application into a libplug dynamic library and just reloading it when requested. The rpath (aka hard-coded run-time search path) for that library is set to . and ./build/. See src/nob_linux.c for more information on how everything is configured.