{"id":22015077,"url":"https://github.com/dinaraparanid/music_generator","last_synced_at":"2025-03-23T08:43:43.907Z","repository":{"id":176617079,"uuid":"657219906","full_name":"dinaraparanid/music_generator","owner":"dinaraparanid","description":"Music generation app","archived":false,"fork":false,"pushed_at":"2023-08-17T12:36:25.000Z","size":1033,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-28T15:33:29.565Z","etag":null,"topics":["midi","music-generation","rust","synthwave"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dinaraparanid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-06-22T15:19:03.000Z","updated_at":"2023-07-25T09:26:36.000Z","dependencies_parsed_at":"2025-01-28T15:32:50.597Z","dependency_job_id":"f05e5077-34b1-4571-8af0-13daef648b8b","html_url":"https://github.com/dinaraparanid/music_generator","commit_stats":null,"previous_names":["dinaraparanid/music_generator"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dinaraparanid%2Fmusic_generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dinaraparanid%2Fmusic_generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dinaraparanid%2Fmusic_generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dinaraparanid%2Fmusic_generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dinaraparanid","download_url":"https://codeload.github.com/dinaraparanid/music_generator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245078145,"owners_count":20557279,"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":["midi","music-generation","rust","synthwave"],"created_at":"2024-11-30T04:19:30.431Z","updated_at":"2025-03-23T08:43:43.901Z","avatar_url":"https://github.com/dinaraparanid.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Synthwave Melody Generator\n\n### Music generation app written on Rust\n\nApplication produces MIDI files with the 8 bar lead melody.\nUser is free to manually choose any key,\nscale or mode with an input in the beginning of the program.\nBPM is randomly chosen as value in range 90..=120\n\nResults are generated in *./generated* folder. Additional information\n(such as key, scale, mode, BPM, melody type) are saved in *./track_settings.txt*\nfile. Some examples, as well as complete loops (with harmony, drums and arpeggio),\ncan be found in the source code as *.mid* files\n\n### Generated SMF Melody Example\n\n![melody view](melody_view.png)\n\n### Algorithm\n\nFirst bar is generated with a strict random algorithm: it traverses through all 16\nparts of the bar and puts notes or creates the delay. If note’s position % 4 == ’0’, note’s\nlength can be either 1, 2 or 4; ’1’ - length is 1; ’2’ - length is 1 or 2; otherwise - 1.\n\nAlgorithm relates to a chosen melody type (ABAB, AAAB or ABAC). ’A’ is always\ngenerated with the algorithm above. For ABAB, ’B’ is generated as the mutation of ’A’\n(some notes may change their pitch). For AAAB, ’B’ is generated with the algorithm above.\nFor ABAC, ’B’ is new, ’C’ is the mutation of ’A’.\n\nResult is checked with the filters. Finally, all generated 4 bars are duplicated to\ngenerate 8 bar melody and settings file with chosen parameters is generated.\n\n### Stack\n\n\u003cul\u003e\n    \u003cli\u003eRust 2021 standard (current project version - nightly 1.73.0)\u003c/li\u003e\n    \u003cli\u003eGhakuf (MIDI IO)\u003c/li\u003e\n    \u003cli\u003eFutures\u003c/li\u003e\n    \u003cli\u003eMonoio\u003c/li\u003e\n    \u003cli\u003eItertools\u003c/li\u003e\n    \u003cli\u003eRand\u003c/li\u003e        \n    \u003cli\u003eStrum + strum macro\u003c/li\u003e\n    \u003cli\u003eAstro float (PI number generation)\u003c/li\u003e\n\u003c/ul\u003e\n\n### Report\n\n[Full report](IMG_Team_Project_Report.pdf) and the [presentation](IMG_Team_Project_Presentation.pptx) are available\nfor the additional details and algorithms that are used to generate other batches","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdinaraparanid%2Fmusic_generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdinaraparanid%2Fmusic_generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdinaraparanid%2Fmusic_generator/lists"}