{"id":13636449,"url":"https://github.com/insomnimus/nodi","last_synced_at":"2025-04-07T15:10:51.675Z","repository":{"id":57645403,"uuid":"403756541","full_name":"insomnimus/nodi","owner":"insomnimus","description":"A rust library for playing and abstraction of MIDI files.","archived":false,"fork":false,"pushed_at":"2025-01-01T13:33:13.000Z","size":157,"stargazers_count":26,"open_issues_count":1,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-31T14:12:01.138Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/insomnimus.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":"2021-09-06T20:56:52.000Z","updated_at":"2025-03-01T09:44:41.000Z","dependencies_parsed_at":"2024-11-09T06:31:43.801Z","dependency_job_id":"921f59d5-d0ce-4fda-a39d-abd83709136b","html_url":"https://github.com/insomnimus/nodi","commit_stats":{"total_commits":88,"total_committers":2,"mean_commits":44.0,"dds":"0.19318181818181823","last_synced_commit":"e0ceae50cbcf117600f690e48ce2ffcc28adaec4"},"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insomnimus%2Fnodi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insomnimus%2Fnodi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insomnimus%2Fnodi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insomnimus%2Fnodi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/insomnimus","download_url":"https://codeload.github.com/insomnimus/nodi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247675607,"owners_count":20977378,"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":[],"created_at":"2024-08-02T00:01:01.352Z","updated_at":"2025-04-07T15:10:51.660Z","avatar_url":"https://github.com/insomnimus.png","language":"Rust","funding_links":[],"categories":["Libraries","库 Libraries"],"sub_categories":["Audio and Music","音频和音乐 Audio and Music"],"readme":"# Nodi\r\n\r\n[![Build Status](https://github.com/insomnimus/nodi/actions/workflows/main.yml/badge.svg)](https://github.com/insomnimus/nodi/actions)\r\n [![crates.io](https://img.shields.io/crates/v/nodi.svg)](https://crates.io/crates/nodi)\r\n [![docs.rs](https://docs.rs/nodi/badge.svg)](https://docs.rs/nodi/)\r\n\r\nNodi provides types and functions for playback and abstraction of MIDI files.\r\n \r\nThis crate works alongside the [midly][] and [midir][] crates. \r\nHowever you can implement your own MIDI player, instead of relying on [midir][].\r\n\r\n# Features\r\n\r\n-\tTime-map MIDI events.\r\n-\tJoin or merge multiple MIDI tracks.\r\n-\tPlay MIDI files.\r\n -\tSplit a MIDI track into measures/bars.\r\n-\tTranspose a track.\r\n\r\n# Examples\r\nCheck out `/examples/play_midi.rs` for a basic midi player.\r\n\r\nI started developping this crate because I needed the features it now offers.\r\nHere are some real-world examples of nodi in action:\r\n\r\n-\t[midnote][]: An accessible MIDI note viewer/ player.\r\n-\t[plmidi][]: A MIDI player for the command line.\r\n\r\n# Crate Features\r\nFeatures enabled by default:\r\n\r\n- `hybrid-sleep`: A more accurate sleep, mixing regular sleep with spin locking efficiently. With this feature enabled the default implementations of timers in this crate will use this. Highly recommended for Windows users but it may also increase timing on other platforms.\r\n\r\nOptional features:\r\n\r\n- `midir`: Adds implementations of `Connection` for `midir::MidiOutputConnection`.\r\n- `midir-jack`: Same with `midir` but uses the Jack backend.\r\n- `midir-winrt`: Same with `midir` but uses the WinRT backend.\r\n\r\n[midir]: https://crates.io/crates/midir\r\n[midly]: https://crates.io/crates/midly\r\n[plmidi]: https://github.com/insomnimus/plmidi\r\n[midnote]: https://github.com/insomnimus/midnote\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finsomnimus%2Fnodi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finsomnimus%2Fnodi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finsomnimus%2Fnodi/lists"}