{"id":17057667,"url":"https://github.com/davidmoreno/rtpmidid","last_synced_at":"2025-04-12T17:45:14.888Z","repository":{"id":36275766,"uuid":"171186513","full_name":"davidmoreno/rtpmidid","owner":"davidmoreno","description":"RTP MIDI (AppleMIDI) daemon for Linux","archived":false,"fork":false,"pushed_at":"2024-12-15T13:27:02.000Z","size":1580,"stargazers_count":201,"open_issues_count":25,"forks_count":42,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-04-03T20:11:15.377Z","etag":null,"topics":["alsa","alsaseq","linux","midi","network","rtp","rtpmidi"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/davidmoreno.png","metadata":{"files":{"readme":"README.librtpmidid.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-daemon.txt","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":"2019-02-17T23:56:47.000Z","updated_at":"2025-04-03T08:30:49.000Z","dependencies_parsed_at":"2023-10-13T17:05:17.732Z","dependency_job_id":"3295cb6f-8114-4da1-8a61-34e2d0314da6","html_url":"https://github.com/davidmoreno/rtpmidid","commit_stats":{"total_commits":770,"total_committers":24,"mean_commits":"32.083333333333336","dds":"0.10909090909090913","last_synced_commit":"e3d131061e103ea4dc9eda62422f7c4767e8de06"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidmoreno%2Frtpmidid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidmoreno%2Frtpmidid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidmoreno%2Frtpmidid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidmoreno%2Frtpmidid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davidmoreno","download_url":"https://codeload.github.com/davidmoreno/rtpmidid/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248609541,"owners_count":21132915,"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":["alsa","alsaseq","linux","midi","network","rtp","rtpmidi"],"created_at":"2024-10-14T10:27:45.573Z","updated_at":"2025-04-12T17:45:14.867Z","avatar_url":"https://github.com/davidmoreno.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# librtpmidid\n\nlibrtpmidid allows to easy adding rtpmidi capabilities to your own free or\ncommercial project.\n\nThe main element is the class rtpmidid::rtppeer, which allows to create peers,\nbe it clients or servers.\n\nThe rtpserver and rtpclient are ready to use client and server as used on rtpmidid \ndaemon, and do all the required IO, using the\nrtpmidid::poller_t.\n\nIn all classes it tries to expose al internal state as can be needed for\nextending funciontalities.\n\nAlso a `rtpmidid::signal_t` is used all around as a subscription service to\nevents.\n\n## rtpmidid::poller_t\n\nThe poller can be reimplemented as needed in other projects, but it may require\nrecompilation from source code.\n\n## rtpmidid::rtppeer\n\nThe flow of a basic rtppeer can be seen on the `test_rtppeer.cpp` file.\n\nIt mainly needs to be initialized and connect both the command and control\nends, and then can receive the data buffers, and will call the `send_event` when\nneeds to send some events, normally due to a `send_midi` call (but can be\n`send_ck0`)\n\n## rtpmidid::rtpclient and rtpmidid::rtpserver\n\nThese are the network IO handlers. It receives the data as needed to create the\nclient or server (ip and port) and then it handles all using the\n`rtpmidid::poller_t`.\n\n# Tips\n\n## CK0\n\nAs client you must follow some extra dance after connecting, as seen at\n`rtpclient::connected`:\n\n- Send 6 ck0 in 1500ms intervals\n- Send ck every 10 seconds\n\nFailure to do this as a client may result in disconnect from Mac OS and Tobias\nErichsen Rtpmidi for Windows.\n\n## mDNS\n\nAt first we had a custom implementation. Bad idea. Better just use avahi.\n\nAlso if the computer has several network interfaces it may return several IPS to\nconnect to. Try them all. The order may be better first ehternet than Wifi, but\njust because is listed does not mean it will work.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidmoreno%2Frtpmidid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavidmoreno%2Frtpmidid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidmoreno%2Frtpmidid/lists"}