-
Notifications
You must be signed in to change notification settings - Fork 9
Home
Welcome to the Better-nothing-music-visualizer wiki! The usage is pretty simple and straightforward. Nevertheless, we explain the installation, usage, configuration files in detail and also troubleshooting. You can also find out how to make new presets.
It's recommended to read to full wiki!
- Drop your song into
/Input. - Run
python musicViz.py --[your_phone_model]. - Get your
.oggand.nglyphfrom/Output.
Make sure you have Python 3.14+ and ffmpeg installed. How to install FFmpeg)
After you set up the prerequisites install the required Python packages:
pip install numpy scipy pydubYou can also install the dependencies with the requirements.txt file:
pip install -r requirements.txtInput/ β Drop your audio files here (`.mp3`, `.m4a`, or `.ogg` are supported).
Output/ β Final .ogg compositions appear here.
Nglyph/ β Generated .nglyph files are saved here.
zones.config β Required configuration file.
The zones.config file defines how frequencies map to phone LED zones and amplitude settings.
It contains multiple presets for the different phone models. Each model requires a specific number of zones:
- Phone 1: 5 zones (simple) or 15 zones (extended)
- Phone 2: 33 zones
- Phone 2a: 26 zones
- Phone 3a: 36 zones
{
"amp": { //ignore this
"min": 0.5,
"max": 4.0,
"target": 3000,
"percentile": 50
},
"decay-alpha": 0.8, //Controls the time it takes to fade out,
//it's explained in the file itself don't worry
"np1": {
"description": "Phone 1 with 15 zones",
"phone_model": "PHONE1",
"zones": [
[200, 600, "Camera glyph"],
[2000, 6000, "Essential glyph"],
...
]
},
"np2a": {
"description": "Phone 2a with 26 zones",
"phone_model": "PHONE2A",
"zones": [
[20, 35, "Zone 1 - Sub bass"],
[35, 55, "Zone 2"],
...
]
}
}Each zone is defined as [low_freq, high_freq, "description"] where frequencies are in Hz.
You can create presets by adding one to the file, it'll automatically be working with the script. Just choose a different name, like np1supergood.
python musicViz.py --np1Processes all files in Input/ using the np1 config.
python musicViz.pyIf no arguments are given, it shows available phone configs listed in
zones.config.
python musicViz.py --updateDownloads the latest GlyphModder.py from SebiAIβs GitHub repo if missing or outdated.
python musicViz.py --nglyphOnly produces .nglyph files inside Nglyph/ and skips GlyphModder.py.
The output .nglyph file is a JSON file containing:
-
VERSION: format version (currently1) -
PHONE_MODEL: which Nothing phone itβs for (PHONE1,PHONE2A, etc.) -
AUTHOR: the frame-by-frame light intensity data -
CUSTOM1: metadata for the dots in the Glyph Composer app.
{
"VERSION": 1,
"PHONE_MODEL": "PHONE2A",
"AUTHOR": [
"0,0,0,0,4095,4095,0,",
"0,0,0,4095,4095,4095,0,"
],
"CUSTOM1": ["1-0", "150-1"]
}For full format details, see 10_The NGlyph File Format.md.
| Flag | Description |
|---|---|
--update |
Force re-download of GlyphModder.py from SebiAIβs repo |
--nglyph |
Only make .nglyph files (skip audio processing and GlyphModder.py) |
--np1, --np1s, --np2, --np2a, --np3a
|
Selects which glyph config to use |
| (no args) | Shows a available glyph configs and a short description of what each do. |
-
Place
mysong.mp3insideInput/. -
Run:
python musicViz.py --np2a
-
Wait for the FFT and processing.
-
Your results:
Output/mysong.ogg Nglyph/mysong.nglyph
- Missing zones.config β Create or download it from the repo.
-
GlyphModder not found β Use
--updateto fetch it. -
No Input files β Add your songs in
/Inputfirst.