{"id":20125058,"url":"https://github.com/jpcima/fmidi","last_synced_at":"2025-05-06T17:34:15.453Z","repository":{"id":45507006,"uuid":"118005554","full_name":"jpcima/fmidi","owner":"jpcima","description":"A library to read and play back MIDI files","archived":false,"fork":false,"pushed_at":"2022-08-24T08:22:27.000Z","size":163,"stargazers_count":19,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2023-03-04T12:00:00.114Z","etag":null,"topics":["file-format","midi","music-player","player","sequencer"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jpcima.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-18T16:05:54.000Z","updated_at":"2022-07-27T18:36:12.000Z","dependencies_parsed_at":"2022-08-01T01:49:05.946Z","dependency_job_id":null,"html_url":"https://github.com/jpcima/fmidi","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpcima%2Ffmidi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpcima%2Ffmidi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpcima%2Ffmidi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpcima%2Ffmidi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jpcima","download_url":"https://codeload.github.com/jpcima/fmidi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224517388,"owners_count":17324407,"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":["file-format","midi","music-player","player","sequencer"],"created_at":"2024-11-13T19:54:20.456Z","updated_at":"2024-11-13T19:54:21.127Z","avatar_url":"https://github.com/jpcima.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fmidi\nFmidi is a library to read and play back MIDI files. It supports both standard MIDI files and RIFF MIDI files.\n\nThe functionality is exposed as a C programming interface, and it is implemented with C++.\n\nIt is a simple library which is good for implementing a MIDI file player, or any program taking MIDI files as inputs.\nIn fact, a player with a terminal interface is provided as an [example](https://github.com/jpcima/fmidi/blob/master/programs/midi-play.cc). Build it with [ncurses](https://www.gnu.org/software/ncurses/), [libev](https://github.com/enki/libev) and [RtMidi](https://github.com/thestk/rtmidi).\n\n## Design goals\n\nThis library is designed for excellent compatibility. Downloaded MIDI files often come as corrupted, incomplete, or non-standard in many ways. Fmidi has a permissive reader, which attempts repairs when errors are detected, without compromise on the MIDI file standard.\n\n## Quality comparison\n\nFmidi is tested on a collection of MIDI files and the results are displayed in the table below. The data gives an idea of the relative compatibility and robustness of the library.\n\nTests are performed under different libraries with AddressSanitizer and identical environments. Under each error situation, the data indicates the number of problematic files.\n\n\u003ctable\u003e\n  \u003ctr\u003e\u003cth\u003eLibrary\u003c/th\u003e\u003cth\u003eReading error\u003c/th\u003e\u003cth\u003eAddressSanitizer issue\u003c/th\u003e\u003cth\u003eLeakSanitizer issue\u003c/th\u003e\u003c/tr\u003e\n  \u003ctr\u003e\u003ctd\u003eFmidi 0.1\u003c/td\u003e\u003ctd\u003e20\u003c/td\u003e\u003ctd\u003e0\u003c/td\u003e\u003ctd\u003e0\u003c/td\u003e\u003c/tr\u003e\n  \u003ctr\u003e\u003ctd\u003elibsmf 1.3\u003c/td\u003e\u003ctd\u003e468\u003c/td\u003e\u003ctd\u003e265\u003c/td\u003e\u003ctd\u003e108\u003c/td\u003e\u003c/tr\u003e\n  \u003ctr\u003e\u003ctd\u003eportsmf 228\u003c/td\u003e\u003ctd\u003e979\u003c/td\u003e\u003ctd\u003e7\u003c/td\u003e\u003ctd\u003e0\u003c/td\u003e\u003c/tr\u003e\n  \u003ctr\u003e\u003ctd\u003elibtimidity 0.2.5\u003c/td\u003e\u003ctd\u003e493\u003c/td\u003e\u003ctd\u003e0\u003c/td\u003e\u003ctd\u003e0\u003c/td\u003e\u003c/tr\u003e\n  \u003ctr\u003e\u003cth\u003eTotal files\u003c/th\u003e\u003ctd colspan=\"3\"\u003e86808\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpcima%2Ffmidi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjpcima%2Ffmidi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpcima%2Ffmidi/lists"}