{"id":17786780,"url":"https://github.com/hertzdevil/addmusick","last_synced_at":"2025-03-16T07:31:43.543Z","repository":{"id":91466019,"uuid":"88264990","full_name":"HertzDevil/AddmusicK","owner":"HertzDevil","description":"MML Compiler-Inserter for Super Mario World","archived":false,"fork":false,"pushed_at":"2018-11-01T16:35:41.000Z","size":3252,"stargazers_count":11,"open_issues_count":6,"forks_count":5,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-02-27T05:25:04.538Z","etag":null,"topics":["mml","rom-hacking","snes","sound","spc"],"latest_commit_sha":null,"homepage":null,"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/HertzDevil.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}},"created_at":"2017-04-14T12:15:47.000Z","updated_at":"2025-02-25T15:08:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"d590ea7e-b9dc-43ba-a118-ed68b48b8b68","html_url":"https://github.com/HertzDevil/AddmusicK","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HertzDevil%2FAddmusicK","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HertzDevil%2FAddmusicK/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HertzDevil%2FAddmusicK/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HertzDevil%2FAddmusicK/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HertzDevil","download_url":"https://codeload.github.com/HertzDevil/AddmusicK/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243806035,"owners_count":20350775,"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","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":["mml","rom-hacking","snes","sound","spc"],"created_at":"2024-10-27T10:08:27.978Z","updated_at":"2025-03-16T07:31:43.538Z","avatar_url":"https://github.com/HertzDevil.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AddmusicK\r\n\r\n![Travis CI](https://travis-ci.org/HertzDevil/AddmusicK.svg?branch=master)\r\n\r\nYou saw this coming!\r\n\r\nThis repository is based on AddmusicK version 1.0.5. (The new 1.1.0 beta will not be considered at this moment, but some of the changes planned / implemented here might be ported over there.) Changes to existing code are marked with `// // //`.\r\n\r\n#### Namespaces\r\n- `AMKd`: The top-level namespace for all new classes. \"AMKd\" is not the name of this fork; there is no name yet.\r\n  - `MML`: Classes related to parsing text files.\r\n    - `Lexer`: Classes that extract tokens.\r\n  - `Music`: Classes that deal with compile-time music data representation.\r\n  - `Binary`: Classes related to outputting music data, and things exclusive to SMW.\r\n    - `ChunkNSPC`: Binary command representations from the original N-SPC sound engine.\r\n    - `ChunkAMK`: Binary command representations added in Addmusic.\r\n  - `Utility`: Other things.\r\n\r\n#### Programming stuffs\r\n\r\n- [x] Replace `boost::filesystem` with `std::experimental::filesystem`\r\n- [ ] Remove VS-exclusive bloat\r\n- [ ] Decompose pretty much everything in `Music.cpp`\r\n- [ ] `AMKd::Music::Action` and `AMKd::Binary::Command` classes\r\n- [ ] Bring in the `Chunk` classes I wrote a while ago (originally for 0CC-FT) (maybe)\r\n- [x] Makefiles\r\n- [ ] Better makefiles (maybe)\r\n\r\n#### Compiler stuffs\r\n\r\n- [ ] Run AMK from anywhere as long as it is available in `$PATH`\r\n- [ ] Conditional compilation for both sound driver and music data\r\n- [ ] Makefile / Ruby script for inserting music into SMW\r\n- [x] Make AddmusicK's core compiler cross-platform\r\n- [ ] Single separate program to remove any old music data\r\n- [ ] Merge duplicate label loops and remote code definitions\r\n\r\n#### MML stuffs\r\n\r\n- [x] Separate `o`/`l`/`h`/`q` states for each track\r\n- [ ] Key signature and full accidental support\r\n- [ ] Legible names for all commands\r\n- [ ] Track multiplexing (e.g. `#0123`)\r\n- [ ] N-SPC block support\r\n- [ ] Globally defined patterns\r\n- [ ] `#include` directive, this allows for example core instruments to be defined solely using MML\r\n- [ ] Using label loops and remote code before they are defined\r\n\r\n#### Things that should die (and might irreversibly break some MMLs)\r\n\r\n- Hex validation, there is no reason to once all commands have names\r\n- Whitespace requirements, missing post-conditions, case-insensitivity etc.\r\n- Drop support for everything below `#amk 2`\r\n\r\n#### Things that have actually been added\r\n\r\n- There can be spaces between `#` and the preprocessor directive identifier\r\n- full nesting of `#ifdef` and friends for both music and sound effects\r\n- `#if` produces false instead of failing if the preprocessor constant is not defined\r\n- `#else`, `#elseif`\r\n- `#error` (mentioned in the doc but never really worked)\r\n- `#dumper` field\r\n\r\n#### Things that already died\r\n\r\n- `|` command used for bypassing hex validation, it is now a no-op (since there is no guarantee bytes already placed with `$` will be inserted verbatim)\r\n- `#define` and friends no longer accept arguments on a different line\r\n- Replacement macros are still allowed but each result must form complete tokens (tokens cannot cross macro boundaries)\r\n- Hex commands will become exactly identical to plain-text equivalents\r\n- `$DD` no longer accepts a note as its last parameter, it never worked properly and I have never seen anyone using it\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhertzdevil%2Faddmusick","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhertzdevil%2Faddmusick","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhertzdevil%2Faddmusick/lists"}