{"id":27170237,"url":"https://github.com/dheerajshenoy/sonifycpp","last_synced_at":"2026-05-01T19:34:35.740Z","repository":{"id":285800164,"uuid":"704611872","full_name":"dheerajshenoy/sonifycpp","owner":"dheerajshenoy","description":"Convert images into out of this world audio signals","archived":false,"fork":false,"pushed_at":"2025-08-22T06:08:19.000Z","size":3973,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-22T07:31:38.345Z","etag":null,"topics":["audio-processing","cpp","gui","image-processing","image-sonification","qt"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dheerajshenoy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["dheerajshenoy"]}},"created_at":"2023-10-13T16:29:21.000Z","updated_at":"2025-08-22T06:08:22.000Z","dependencies_parsed_at":"2025-08-05T20:13:11.565Z","dependency_job_id":"519adcbc-02af-4693-bc92-f68aeefd0428","html_url":"https://github.com/dheerajshenoy/sonifycpp","commit_stats":null,"previous_names":["dheerajshenoy/sonifycpp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dheerajshenoy/sonifycpp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dheerajshenoy%2Fsonifycpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dheerajshenoy%2Fsonifycpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dheerajshenoy%2Fsonifycpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dheerajshenoy%2Fsonifycpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dheerajshenoy","download_url":"https://codeload.github.com/dheerajshenoy/sonifycpp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dheerajshenoy%2Fsonifycpp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32510808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio-processing","cpp","gui","image-processing","image-sonification","qt"],"created_at":"2025-04-09T07:45:15.056Z","updated_at":"2026-05-01T19:34:35.722Z","avatar_url":"https://github.com/dheerajshenoy.png","language":"C++","funding_links":["https://github.com/sponsors/dheerajshenoy"],"categories":[],"sub_categories":[],"readme":"# SonifyCPP\n\nSonifyCPP is a powerful program for transforming image data into sound. It provides a flexible framework to sonify visual information — enabling new ways to interpret, analyze, or experience images through audio.\n\n**Current development version: 0.1.2**\n\n\u003e [!WARNING]\n\u003e This is still a work in progress\n\n## Table of Contents\n\n1. [Introduction](#introduction)\n2. [Features](#features)\n3. [Traversal Methods](#traversal)\n    1. [Left to Right (Linear)](#left_to_right)\n    2. [Right to Left (Linear)](#right_to_left)\n    3. [Top to Bottom (Linear)](#top_to_bottom)\n    4. [Bottom to Top (Linear)](#bottom_to_top)\n    5. [Circular Outwards](#circular_outwards)\n    6. [Circular Inwards](#circular_inwards)\n    7. [Clockwise (Linear)](#clockwise)\n    8. [Anti-Clockwise (Linear)](#anti_clockwise)\n    9. [Draw Path](#draw_path)\n4. [Pixel Mapping](#pixel_mapping)\n5. [Reference](#reference)\n6. [Things to do](#todo)\n7. [Demo](#demo)\n8. [Installation](#installation)\n9. [Changelogs and Bug fixes](#changelogs_and_bug_fixes)\n10. [Inspirations](#inspirations)\n\n\u003ca name=\"introduction\"/\u003e\n\n## Introduction\n\nImage sonification refers to the process of converting images to audio signals. This is done by mapping the pixels of the image to frequencies of sound. The way in which the image is traversed changes the resultant audio, and the way in which the pixels are mapped to frequencies also changes the audio. So, there can be an infinite possibilites of mapping things.\n\nThis project is a performant successor to [Sonify](https://github.com/dheerajshenoy/sonify/) which was written in Python.\n\n\u003ca name=\"features\" /\u003e\n\n## Features\n\nApart from sonifying the images, sonifyCPP ships with few features.\n\n* Tone Generator\n\n    Just generate single frequency tones. It's fun\n\nhttps://github.com/user-attachments/assets/d00d3c65-ccbb-42d5-90e7-c1b127f9cfe9\n\n\n* Waveform visualizer\n\n    Visualize the sonified sound waveform\n\n  ![image](https://github.com/user-attachments/assets/65f23858-88f9-4ceb-85d1-e3f13ff9b572)\n\n* Frequency Spectrum Analyzer\n\n    Visualize the frequency vs amplitude plot\n\n  ![image](https://github.com/user-attachments/assets/1c8997f1-b2d4-45cf-b50e-67f18348cc62)\n\n\u003ca name=\"traversal\"/\u003e\n\n## Traversal Methods\n\nSonifyCPP is currently able to traverse images in the following manner:\n\n\u003ca name=\"left_to_right\" /\u003e\n\n### 1. Left to Right (Linear)\n\n![Left to Right](https://github.com/user-attachments/assets/5342b735-028f-429a-9c82-d8ac401a0769)\n\n\u003ca name=\"right_to_left\" /\u003e\n\n### 2. Right to Left (Linear)\n\n![Right to Left](https://github.com/user-attachments/assets/68a9f8da-1116-4a0c-8f82-4806da90ba18)\n\n\u003ca name=\"top_to_bottom\" /\u003e\n\n### 3. Top to Bottom (Linear)\n\n![Top to Bottom](https://github.com/user-attachments/assets/d0d54029-6cf5-43b9-a31d-cbf22b5f6ac2)\n\n\u003ca name=\"bottom_to_top\" /\u003e\n\n### 4. Bottom to Top (Linear)\n\n![Bottom to Top](https://github.com/user-attachments/assets/7f4b1aef-1ea1-4208-874f-487adb1eb0ea)\n\n\u003ca name=\"circular_outwards\" /\u003e\n\n### 5. Circular Outwards\n\n![Circular Outwards](https://github.com/user-attachments/assets/33dbc508-8a17-44b2-ac1c-2db59b249d1d)\n\n\u003ca name=\"circular_inwards\" /\u003e\n\n### 6. Circular Inwards\n\n![Circular Inwards](https://github.com/user-attachments/assets/077c4ae8-e7e9-4e3c-931e-156799afd3a7)\n\n\u003ca name=\"clockwise\" /\u003e\n\n### 7. Clockwise (Linear)\n\n![Clockwise](https://github.com/user-attachments/assets/3fb24eb7-847a-46f3-86f5-07962d3841bc)\n\n\u003ca name=\"anti_clockwise\" /\u003e\n\n### 8. Anti-Clockwise (Linear)\n\n![Anti-Clockwise](https://github.com/user-attachments/assets/9c813886-d9b1-466d-ab91-4b40c0fde28c)\n\n\u003ca name=\"draw_path\" /\u003e\n\n### 9. Draw Path\n\n![Draw Path](https://github.com/user-attachments/assets/7825fb6d-7b3e-4763-9604-b6b46677bdd7)\n\n\u003ca name=\"pixel_mapping\"/\u003e\n\n### 10. Region\n\n\u003e [!NOTE]\n\u003e Not implemented yet!\n\n### Pixel mapping\n\nBy default, there are two kinds of pixel to sound mapping:\n\n1. **intensity** of the input image, mapping the pixel position (x, y) to (t, frequency) and pixel intensity to amplitude.\n\n2. **hsv**, map the hue to amplitude.\n\nYou can write your own pixel sound mapping through C++ code, check out [PIXEL_MAPPING_DOC.md](./pixel_mapping_doc.md)\n\n### Reference\n\n![paper0](https://github.com/user-attachments/assets/4c64fdbf-7d45-439c-b873-848dd09dd490)\n\nCredit: [Link](https://www.seeingwithsound.com/im2sound.htm)\n\n\u003ca name=\"todo\"/\u003e\n\n## TODO\n\n* [x] Nice GUI\n* [x] Save resulting audio\n* [x] Waveform visualizer\n* [x] Path-based Sonification: Draw a path on the image and sonify along that path.\n* [x] Color Mapping: Map different colors to different sounds or musical notes.\n* [x] Frequency Analyzer\n* [x] Implement multi-threading\n* [x] Option for mapping selection\n* [x] Support for custom mapping user functions (add scripting support ?)\n* [ ] Pixel audio visualiser (inpsecting each column or row of pixel from the image and producing the audio instantly).\n* [ ] Video Export: Create a video file that combines the image and the sonification, showing the progression over time.\n* [ ] **Reverse audio to produce image**\n* [ ] Sonify specific regions or objects within the image.\n* [ ] Map textures or patterns within the image to different sound effects.\n* [ ] Effect Processing: Add reverb, echo, or other audio effects to enhance the sonification experience.\n* [ ] Dynamic Range Compression: Ensure that the sound levels are balanced and not too harsh or too quiet.\n* [ ] Adjustable Speed: Allow users to slow down or speed up the sonification process.\n* [ ] MIDI Support: Allow users to export sonification data as MIDI files for further musical manipulation.\n* [ ] Spectrogram: Display a spectrogram that shows the frequency content of the sonified sound over time.\n* [ ] 3D Visualization: Provide a 3D view of the image and its corresponding soundscape.\n* [ ] **Handle Large Images**\n\n\u003ca name=\"demo\"/\u003e\n\n# Demo\n\n\u003e [!WARNING]\n\u003e Lower your volume when listening to the video.\n\nThese are demo from when the software was in version 0.1. Have to update the videos.\n\nhttps://github.com/user-attachments/assets/8486dbb2-789e-456c-ac6e-8df99d13e622\n\nhttps://github.com/user-attachments/assets/5749613d-6004-4d84-90ae-adaa8904268f\n\n**The new GUI looks like this**\n\n![image](https://github.com/user-attachments/assets/95d032fa-a642-4063-bbde-a555baa6b47d)\n\n\u003ca name=\"installation\" /\u003e\n\n# Installation\n\n\u003e [!NOTE]\n\u003e I haven't tested this software on Windows, but it works on Linux.\n\n1. Make sure you have the following dependencies\n\n    - `Qt6` (GUI)\n    - `libsndfile` (reading and writing audio files)\n    - `SDL2` (audio playback)\n    - `ninja` (build dependency)\n    - `fftw3` (fast fourier transforms and inverse transforms)\n\nSince I use Arch Linux, the commands to install these packages is `sudo pacman -S qt6 libsndfile sdl2 fftw ninja`\n\n2. Clone this repo and go to the directory\n\n    `git clone https://github.com/dheerajshenoy/sonifycpp \u0026\u0026 cd sonifycpp`\n\n3. Create a build directory and run cmake`\n\n    `mkdir build \u0026\u0026 cmake -G Ninja -Bbuild -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release`\n\n4. Run make inside the build directory\n\n    `make -j$(nproc)`\n\n\u003ca name=\"changelogs_and_bug_fixes\" /\u003e\n\nPlease see [CHANGELOG.md](./CHANGELOG.md)\n\n\u003ca name=\"faq\" /\u003e\n\n# FAQ\n\n## Why ?\n\nMain reason why I started this is because of an earlier basic Python version I started on 2023\nwhen I participated in the 2023 NASA Hackathon. It was slow... it was python, and I love C++, so I thought I'll create this in C++.\n\n## Why the wierd name ?\n\nBecause I already had a python project called sonify, and i wanted CPP in the name, hence sonifyCPP.\n\n\u003ca name=\"inspirations\"/\u003e\n\n# Inspirations\n\n* NASA has been a big inspiration for making me create this software. If you haven't checked out yet, they have good sonification videos on youtube.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdheerajshenoy%2Fsonifycpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdheerajshenoy%2Fsonifycpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdheerajshenoy%2Fsonifycpp/lists"}