{"id":20375537,"url":"https://github.com/mrene/minidsp-rs","last_synced_at":"2025-05-16T08:05:06.263Z","repository":{"id":37820748,"uuid":"258874442","full_name":"mrene/minidsp-rs","owner":"mrene","description":"MiniDSP Controller","archived":false,"fork":false,"pushed_at":"2025-04-04T02:35:51.000Z","size":1519,"stargazers_count":130,"open_issues_count":30,"forks_count":16,"subscribers_count":9,"default_branch":"dev","last_synced_at":"2025-05-09T03:08:27.774Z","etag":null,"topics":["audio","dsp","hacktoberfest","minidsp","raspberry-pi"],"latest_commit_sha":null,"homepage":"http://minidsp-rs.pages.dev","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrene.png","metadata":{"files":{"readme":"README-API.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":"2020-04-25T21:06:56.000Z","updated_at":"2025-05-08T08:32:58.000Z","dependencies_parsed_at":"2023-11-28T01:42:55.971Z","dependency_job_id":"f441994b-77b0-486f-af34-14c570535706","html_url":"https://github.com/mrene/minidsp-rs","commit_stats":{"total_commits":557,"total_committers":11,"mean_commits":50.63636363636363,"dds":0.3177737881508079,"last_synced_commit":"8cfa96d460017055ad3df16aec4345affdcfe25b"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrene%2Fminidsp-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrene%2Fminidsp-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrene%2Fminidsp-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrene%2Fminidsp-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrene","download_url":"https://codeload.github.com/mrene/minidsp-rs/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254493378,"owners_count":22080126,"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":["audio","dsp","hacktoberfest","minidsp","raspberry-pi"],"created_at":"2024-11-15T01:31:23.677Z","updated_at":"2025-05-16T08:05:01.252Z","avatar_url":"https://github.com/mrene.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"A default installation will serve an HTTP API on localhost. Users can edit /etc/minidsp/config.toml in order to change the server's bind address.\n\n`minidspd` will attach to any compatible devices it can find (WI-DGs should be automatically discovered).\n\nThis document is a summary of what the API can do, until there's a proper openapi spec.\n\n## API Overview\n#### GET /devices\nJSON Schema URL: /devices/get.schema\n\nGets the list of detected devices.\n\n```json\n[\n  {\n    \"url\": \"usb:0001%3A0005%3A04?vid=2752\u0026pid=0011\",\n    \"version\": {\n      \"hw_id\": 10,\n      \"dsp_version\": 100,\n      \"serial\": 965535\n    },\n    \"product_name\": \"2x4HD\"\n  }\n]\n```\n\n#### GET /devices/0\nJSON Schema URL: /devices/0/get.schema \n\nGet details about the first device.\n```json\n{\n  \"master\": {\n    \"preset\": 0,\n    \"source\": \"Toslink\",\n    \"volume\": -27.0,\n    \"mute\": false\n  },\n  \"available_sources\": [\n    \"analog\",\n    \"toslink\",\n    \"usb\"\n  ],\n  \"input_levels\": [\n    -28.04515,\n    -28.10996\n  ],\n  \"output_levels\": [\n    -57.139038,\n    -60.7054,\n    -120.0,\n    -120.0\n  ]\n}\n```\n\n#### POST /devices/0\nJSON Schema URL: /devices/0/post.schema\n\nChanges master status (current preset, source, master volume/mute)\n\n#### POST /devices/0/config\n\nJSON Schema URL: /devices/0/config/post.schema \n\nChanges *any* parameters, including master status.\n\nThe main structure of this is in the JSON schema, every object is optional and only the objects that are set will trigger a change on the device. For this reason, an `index` field is present (on inputs, outputs, peqs) to indicate which entry should change - all of these are 0-index so inputs on the 2x4HD are `[0, 1]`, outputs `[0, 1, 2, 3]` and PEQs go from `0` to `9`.\n\nHere is an example to change the current config preset to 0, set the first PEQ on inputs 0 and 1, and bypass the 2nd PEQ on both inputs.\n\nNote that the `master_status` object is applied before any other setting. It's therefore safe to send a current preset change followed by PEQ updates in the same call.\n\n```json\n{\n  \"master_status\": {\n    \"preset\": 1\n  },\n  \"inputs\": [\n    {\n      \"index\": 0,\n      \"peq\": [\n        {\n          \"index\": 0,\n          \"coeff\": { \"b0\": 1, \"b1\": 0, \"b2\": 0, \"a1\": 0, \"a2\": 0 },\n          \"bypass\": false\n        },\n        { \"index\": 1, \"bypass\": true }\n      ]\n    },\n    {\n      \"index\": 1,\n      \"peq\": [\n        {\n          \"index\": 0,\n          \"coeff\": { \"b0\": 1, \"b1\": 0, \"b2\": 0, \"a1\": 0, \"a2\": 0 },\n          \"bypass\": false\n        },\n        { \"index\": 1, \"bypass\": true }\n      ]\n    }\n  ]\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrene%2Fminidsp-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrene%2Fminidsp-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrene%2Fminidsp-rs/lists"}