Skip to content

A Glyph composition player written with the Qt6 framework in C++ that plays Glyph compositions from Nothing Phones.

License

Notifications You must be signed in to change notification settings

SebiAi/GlyphVisualizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GlyphVisualizer

A Glyph composition player written with the Qt6 framework in C++ that plays Glyph compositions from Nothing Phones.
GitHub release (with filter) GitHub License

GlyphVisualizer.Demo.mp4
Credit: First composition by Mr Steel, Second composition by ImSteazyy


✍️ Table of contents


❔ What is this? Why would I need that?

This is a tool that is meant to be used in combination with my custom-nothing-glyph-tools scripts (GlyphTranslator, GlyphModder). When you create a custom ringtone or notification tone with these scripts, you want to test them as often as possible. You can use this tool to visualize your composition and rapidly iterate on it - no file transfer to your phone is needed.

And apart from that, you can use it if you want to view the composition without having access to a Nothing Phone.

Caution

The GlyphVisualizer version 1.1.0 and below does NOT work properly with the new v1-Glyph Format!


πŸ“Œ Disclaimer

This software is provided as-is without any warranty. I and all other contributors are not responsible for any damage, misuse or other kind of physical or mental damage that results from the use of this software. This repo is in no way, shape or form affiliated with Nothing Technology Limited (NOTHING).


🦺 Need help?

If you need help, look at the Troubleshooting chapter. If this does not help either feel free to use the Discussion feature on GitHub or reach out to me on Discord: @sebiai


πŸ“ƒ Roadmap

You can find the full roadmap here.


πŸš€ How to use

Audio only (Recommended)

Only the composition itself is needed:

  1. Open GlyphVisualizer
  2. Go to File->Open Composition OR press CTRL + O
  3. Make sure Audio file (ogg) is selected
  4. Select your composition and hit Open

Audio file and Light data file

This mode is for composition creators which use the custom-nothing-glyph-tools:

  1. Export your Audio from Audacity with the opus codec and change the extension from .opus to .ogg (Make sure that you show File name extensions on Windows!)
  2. Export your Label file from Audacity
  3. Use the GlyphTranslator.py script to get the .glypha file
  4. Open GlyphVisualizer
  5. Go to File->Open Composition OR press CTRL + O
  6. Make sure Audio file (ogg) + Light data file (glypha) is selected
  7. Select your Audio, your .glypha file and hit Open

Tip

If your Audio file and your .glypha file are

  • in the same directory and
  • have the same name

then GlyphVisualizer will automatically fill in the path for the .glypha file.

Audio file and Audacity Label file

This mode is not implemented yet. Please wait for an update.


πŸ“₯ Installation

Windows portable

  1. Download the latest portable version (GlyphVisualizer-*_windows-x64-portable.zip) from the latest release.
  2. (Optional) Verify file integrity by executing this in PowerShell: CertUtil -hashfile GlyphVisualizer_windows-x64.zip SHA256. Compare that output with the GlyphVisualizer-*_windows-x64-portable.zip.sha256.txt sha256 hash file. If they match, you are good.
  3. Extract the zip file
  4. Install vc_redist.x64.exe which is inside the zip
  5. Run GlyphVisualizer.exe

🐧 Linux

Ubuntu and derivatives

  1. Download the latest version (GlyphVisualizer-*_linux-ubuntu-x64.AppImage) from the latest release.
  2. (Optional) Verify file integrity by downloading GlyphVisualizer-*_linux-ubuntu-x64.AppImage.sha256 to the same directory as the AppImage and running shasum -a 256 -c ./GlyphVisualizer-*_linux-ubuntu-x64.AppImage.sha256. If it outputs 'OK', you are good.
  3. Install dependencies for AppImages: sudo apt install -y libfuse2*
  4. Make the AppImage executable: chmod +x ./GlyphVisualizer-*_linux-ubuntu-x64.AppImage
  5. Run the AppImage - you can use AppImageLauncher to update and integrate the application into your dekstop environment.

MacOS

  1. Download the latest version (GlyphVisualizer-*_macOS-12-x64.dmg) from the latest release.
  2. (Optional) Verify file integrity by downloading GlyphVisualizer-*_macOS-12-x64.dmg.sha256 to the same directory as the AppImage and running shasum -a 256 -c ./GlyphVisualizer-*_macOS-12-x64.dmg.sha256. If it outputs 'OK', you are good.
  3. Run the application

🚧 Compilation

πŸ”© Build Dependencies

You can use the Qt Online Installer to install Qt, Ninja, CMake and a C++ compiler

βš’οΈ Build

Clone the repo

git clone https://github.com/SebiAi/GlyphVisualizer.git
cd GlyphVisualizer

Set DCMAKE_PREFIX_PATH to the Qt location and build the application (This command assumes that the libraries like TagLib are properly installed and can be found by CMake)

cmake -G Ninja "-DCMAKE_PREFIX_PATH=/path/to/qt" "-DCMAKE_BUILD_TYPE:STRING=Release" -S . -B build && cmake --build build --config Release

The built application is now in the build directory.

Warning

The built application might not open right out of the box because dynamically linked libraries are not available without proper setup.

See πŸ“¦ Package up to fix that.

πŸ“¦ Package up

The application itself may not execute because it is not finding the linked libraries. Packaging guarantees that the application finds them and runs as expected.

Windows portable

Move the application to its own directory

mkdir GlyphVisualizer-main_windows-x64-portable
move build/GlyphVisualizer GlyphVisualizer-main_windows-x64-portable

Copy the built TagLib dll into the directory

copy C:\path\to\tag.dll GlyphVisualizer-main_windows-x64-portable

Use windeployqt

windeployqt --release GlyphVisualizer-main_windows-x64-portable\GlyphVisualizer.exe

The directory GlyphVisualizer-main_windows-x64-portable now contains the application and all its dynamic dependencies. Can be zip'ed up and transferred to other Windows machines.

Ubuntu and derivatives

Download dependencies (linuxdeploy, libfuse2, libxcb-cursor0)

wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
wget https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage
chmod +x linuxdeploy-x86_64.AppImage
chmod +x linuxdeploy-plugin-qt-x86_64.AppImage
chmod +x linuxdeploy-plugin-appimage-x86_64.AppImage
sudo apt install -y libfuse2 libxcb-cursor0

Set QMAKE to the qt qmake executable and use linuxdeploy

QMAKE="/path/to/my/qmake" LDAI_VERSION="main" LDAI_OUTPUT="GlyphVisualizer-main_linux-ubuntu-x64.AppImage" ./linuxdeploy-x86_64.AppImage --executable "build/GlyphVisualizer" --desktop-file "deploy/linux/AppImage/com.sebiai.GlyphVisualizer.desktop" --icon-file "deploy/linux/AppImage/GlyphVisualizer.png" --plugin qt --appdir AppDir --output appimage

You now have GlyphVisualizer-main_linux-ubuntu-x64.AppImage, which can be transferred to other Ubuntu-based distributions.

MacOS

Navigate to the build folder

cd build

Create the directory and copy the built TagLib into the directory

mkdir GlyphVisualizer.app/Contents/Frameworks/
copy /path/to/libtag.2.dylib GlyphVisualizer.app/Contents/Frameworks/

Use macdeployqt

macdeployqt GlyphVisualizer.app -dmg

Rename

mv GlyphVisualizer.dmg GlyphVisualizer-main_macOS-12-x64.dmg

You now have GlyphVisualizer-main_macOS-12-x64.dmg, which can be transferred to other MacOS machines.

⁉️ Troubleshooting

Windows portable

Missing dlls

Missing dll error popup
GlyphVisualizer.exe - System Error

The code execution cannot proceed because MSVCP140.dll was not found. Reinstalling the program may fix this problem.

If you get the error popup above, you need to install the Microsoft Visual C++ Redistributable, which is shipped alongside GlyphVisualizer. Please execute vc_redist.x64.exe to install it.

Important

This also applies if the missing dll is one of the following:

  • MSVCP140.dll
  • VCRUNTIME140_1.dll
  • VCRUNTIME140.dll

About

A Glyph composition player written with the Qt6 framework in C++ that plays Glyph compositions from Nothing Phones.

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published