{"id":30614001,"url":"https://github.com/gaiger/chiptunemidi","last_synced_at":"2026-05-09T02:18:11.651Z","repository":{"id":310686844,"uuid":"1040820157","full_name":"Gaiger/ChiptuneMIDI","owner":"Gaiger","description":"A lightweight C99 chiptune engine with a Qt-based application for MIDI playback, timbre editing, and WAV export.","archived":false,"fork":false,"pushed_at":"2025-09-19T14:01:25.000Z","size":1010,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-19T16:24:22.659Z","etag":null,"topics":["c","chiptune","cpp","midi","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/Gaiger.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-19T14:53:45.000Z","updated_at":"2025-09-17T17:08:45.000Z","dependencies_parsed_at":"2025-08-19T17:39:19.479Z","dependency_job_id":"b752f5c7-d243-4dea-a939-dde7355a21f9","html_url":"https://github.com/Gaiger/ChiptuneMIDI","commit_stats":null,"previous_names":["gaiger/chiptunemidi"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Gaiger/ChiptuneMIDI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gaiger%2FChiptuneMIDI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gaiger%2FChiptuneMIDI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gaiger%2FChiptuneMIDI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gaiger%2FChiptuneMIDI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Gaiger","download_url":"https://codeload.github.com/Gaiger/ChiptuneMIDI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gaiger%2FChiptuneMIDI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279136627,"owners_count":26111586,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-15T02:00:07.814Z","response_time":56,"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":["c","chiptune","cpp","midi","qt"],"created_at":"2025-08-30T07:01:03.738Z","updated_at":"2026-05-09T02:18:11.644Z","avatar_url":"https://github.com/Gaiger.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ChiptuneMIDI\r\n\r\n## Description\r\n\u003c!--- Short introduction of the project. --\u003e\r\nChiptuneMIDI interprets MIDI files as retro chiptune (8-bit–style) sound.  \r\nIt is built around a portable C99 chiptune engine, \r\nwith a Qt application as a reference front-end that showcases real-time playback, instrument controls, and audio export.  \r\n![ChiptuneMIDI Screenshot](screenshot.png)\r\n\r\n## Demo\r\n- [梁靜茹 如果有一天 — ChiptuneMIDI cover](https://www.youtube.com/watch?v=3lz47rfHsxA)  \r\n  *(Generated with ChiptuneMIDI engine — [original song](https://www.youtube.com/watch?v=K3o6SfwZq_w) by 梁靜茹)*\r\n\r\n## Features\r\n\u003c!--- Key features. --\u003e\r\n\r\n### Engine (Core Library)\r\n- Pure C99, no external dependencies\r\n- Stereo/mono output at configurable sampling rates\r\n- Retro waveforms (square with multiple duty cycles, triangle, saw, noise)\r\n- Customizable ADSR envelopes with various curve types\r\n- Supports common MIDI effects (e.g., vibrato, reverb, chords)\r\n- Tempo control, pitch shift, and playback speed adjustable\r\n- Exports audio samples (8-bit/16-bit) for any backend\r\n\r\n### Application (Qt GUI)\r\n- Play MIDI files directly with retro 8-bit sound\r\n- Visual note sequencer (score-like interface)\r\n- Export audio output as `.wav`\r\n- Core engine features (waveforms, ADSR, etc.) are configurable via the GUI.\r\n\r\n\r\n## Requirements / Dependencies\r\n\u003c!--- List of software, libraries, or frameworks required. --\u003e\r\n\r\n- C++11 compiler\r\n- Qt 5.x (Core, Widgets, Charts, Multimedia; on Windows: WinExtras)\r\n- Qt 6.x (Core, Widgets, Charts, Multimedia)\r\n- CMake ≥ 3.20 (recommended), or QtCreator with qmake\r\n\r\n## Installation\r\n\u003c!--- Steps to install and build. --\u003e\r\nYou can build ChiptuneMIDI in two ways:\r\n\r\n### Option A: CMake (Qt5 or Qt6)\r\n1. Open `qt/player/CMakeLists.txt` with QtCreator or run CMake manually\r\n2. Select a Qt kit (Qt5 or Qt6)\r\n3. Build and run\r\n\r\n### Option B: qmake (Qt5 only)\r\n1. Open `qt/player/qt5_qmake_project/ChiptuneMIDI.pro` in QtCreator\r\n2. Build and run\r\n\r\n## Usage\r\n\u003c!--- Examples of how to run or use the project. --\u003e\r\n\r\n- Start the application after building.\r\n- Open a `.mid` file either by:\r\n  - Dragging the file into the window, or\r\n  - Clicking the **Open MIDI File** button and selecting from the file explorer.\r\n- Playback starts automatically.\r\n- To export audio, click the **Save as .wav File** button.\r\n\r\n**Note:** A sample MIDI file (`qt/暗黒舞踏会8bit ver..mid`) is included for quick testing. Additional MIDI test files can be downloaded as [`midi_files.zip`](https://drive.google.com/uc?export=download\u0026id=19hkeXNSYX80RGQMtTQ6RaFjBnu4ZCKod).\r\n\r\n## Project Structure\r\n\u003c!--- Overview of folders and files. --\u003e\r\n```text\r\nChiptuneMIDI/\r\n├─ (root) # Core chiptune engine in portable C99\r\n├─ mid_reader/ # MIDI parsing module\r\n│ ├─ qt/ # Qt integration layer\r\n│ └─ test/ # Tests and reference materials\r\n├─ qt/ # Qt GUI application\r\n│ ├─ player/ # Qt MIDI player application\r\n│ │ └─ qt5_qmake_project/ # qmake project (Qt5 only)\r\n│ ├─ module_tests/ # Qt-side module tests\r\n│ └─ icons/ # Application icons\r\n```\r\n\r\n## Configuration\r\n\u003c!--- How to configure settings, environment variables, etc. --\u003e\r\nNo special configuration is required.  \r\nOpen the project in QtCreator and build with either Qt5 or Qt6 — both are supported.\r\n\r\n\r\n## Roadmap\r\n\u003c!--- Planned future improvements. --\u003e\r\n- [ ] Port the engine to microcontrollers to run as a standalone chiptune player.\r\n- [ ] Open to future extensions and contributions (e.g., new front-ends, extra MIDI features)\r\n\r\n## Contributing\r\n\u003c!--- Guidelines for external contributors --\u003e\r\nContributions are welcome!  \r\nPlease fork the repository and submit pull requests.  \r\nFor major changes, open an issue first to discuss what you would like to add or modify.  \r\n\r\nMake sure your code passes existing builds/tests and follows the coding style:\r\n- Functions use `CamelCase`\r\n- Variables use `snake_case`\r\n- Avoid abbreviations\r\n\r\n\r\n## License\r\n\u003c!--- Type of license and conditions. --\u003e\r\nThis project is licensed under the MIT License — see the [LICENSE](https://rem.mit-license.org/) file for details.\r\n\r\n## Acknowledgements\r\n\u003c!--- Credits, references, inspirations. --\u003e\r\n- [QMidi](https://github.com/waddlesplash/QMidi), referenced here for MIDI file parsing\r\n- Inspired by Dragon Guardian's [*暗黒舞踏会 8bit ver.*](https://www.youtube.com/watch?v=RFkPC6qlFmo) — thanks to composer [勇者アーサー](https://x.com/dragonguardiana)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaiger%2Fchiptunemidi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgaiger%2Fchiptunemidi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaiger%2Fchiptunemidi/lists"}