{"id":50862270,"url":"https://github.com/stepbrobd/swproj","last_synced_at":"2026-06-14T22:03:45.835Z","repository":{"id":358548340,"uuid":"1241825387","full_name":"stepbrobd/swproj","owner":"stepbrobd","description":"toolkit for sonarworks soundid","archived":false,"fork":false,"pushed_at":"2026-06-06T07:07:24.000Z","size":2161,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-06T09:07:29.377Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","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/stepbrobd.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-17T21:29:20.000Z","updated_at":"2026-06-06T07:07:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/stepbrobd/swproj","commit_stats":null,"previous_names":["stepbrobd/swproj"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stepbrobd/swproj","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepbrobd%2Fswproj","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepbrobd%2Fswproj/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepbrobd%2Fswproj/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepbrobd%2Fswproj/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stepbrobd","download_url":"https://codeload.github.com/stepbrobd/swproj/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepbrobd%2Fswproj/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34339196,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":"2026-06-14T22:03:45.270Z","updated_at":"2026-06-14T22:03:45.821Z","avatar_url":"https://github.com/stepbrobd.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SWProj\n\nBinary Cache:\n\n- Cache: \u003chttps://cache.ysun.co\u003e\n- Key: `cache.ysun.co-1:WxPYwT5g3kt9XhUhHPpNLZKI9HIOsVVAuqSHpok8Qt4=`\n\n\u003c!-- deno-fmt-ignore --\u003e\n\u003e [!Caution]\n\u003e Status: pre pre pre alpha DO NOT USE...\n\nTaken from SoundID Reference Measure output file format name, `swproj` is a CLI\ntool to parse, visualize, and \"transpile\" the SoundID measurement files to work\non Linux machines (e.g. export to\n[PipeWire Filter-Chain](https://docs.pipewire.org/page_module_filter_chain.html)\nconfiguration, or [CamillaDSP](https://github.com/HEnquist/camilladsp), or other\nopen source DSP/RC software).\n\nRoom measurement:\n\n```console\n$ swproj measure examples/measurement.swproj -o examples/measurement.png\nmeasurement: measurement.swproj\n  points:                355\n  span:                  20.0 hz .. 22000.0 hz (log-spaced)\n  left:\n    dynamic range:        13.51 db\n    min / max:           -6.54 / +6.97 db\n    mean (\u003e= 200 hz):    -0.11 db\n    top peaks:             53.8 hz +6.97 db,  128.4 hz +6.54 db,  512.9 hz +3.47 db\n    top dips:              88.2 hz -2.88 db, 11228.2 hz -2.66 db, 13153.6 hz -2.43 db\n  right:\n    dynamic range:        13.95 db\n    min / max:           -6.24 / +7.71 db\n    mean (\u003e= 200 hz):    -0.06 db\n    top peaks:             54.9 hz +7.71 db,  153.4 hz +6.85 db,  676.6 hz +3.04 db\n    top dips:            11228.2 hz -2.50 db,   95.4 hz -2.09 db,  261.8 hz -1.42 db\n  L-R asymmetry (30-300 hz):  max 3.17 db, rms 1.68 db\nwrote examples/measurement.png\n```\n\n![Room measurement](examples/measurement.png)\n\nTarget EQ:\n\n```\n$ swproj target examples/target.json -o examples/target.png\ntarget eq: target.json  (name: 'Low volume')\n  [0]       bell  f=  250.0 hz  gain=-1.00 db  Q=1.00\n  [1] high-shelf  f= 9000.0 hz  gain=+1.50 db  Q=1.00\n  [2]  low-shelf  f=   45.0 hz  gain=+3.50 db  Q=1.00\n  realised over 20-22k hz:  max +3.76 db at 22.9 hz, min -1.06 db at 246.6 hz\nwrote examples/target.png\n```\n\n![Target EQ](examples/target.png)\n\n```console\n# swproj camilladsp -m examples/measurement.swproj -t examples/target.json -f minimum -o examples/camilladsp.yaml\n$ swproj camilladsp -h\nUsage: swproj camilladsp [OPTIONS]\n\n  Emit CamillaDSP filters+pipeline YAML built from a SoundID measurement\n  and/or target EQ.\n\nOptions:\n  -m, --measure FILE             Room measurement (.swproj).\n  -t, --target FILE              Target EQ (.json).\n  -f, --filter [linear|minimum]  Phase character of the room-correction FIR.\n                                 [default: (linear)]\n  -r, --rate INTEGER RANGE       Sample rate (Hz).  [default: 48000;\n                                 8000\u003c=x\u003c=384000]\n  -n, --taps INTEGER RANGE       FIR length (samples).  [default: 8192;\n                                 x\u003e=256]\n  -b, --max-boost FLOAT RANGE    Cap on inverse magnitude (dB).  [default:\n                                 12.0; x\u003e=0.0]\n  -o, --output FILE              Write YAML to file (default: stdout).\n  -h, --help                     Show this message and exit.\n# swproj pipewire -f minimum -m examples/measurement.swproj -t examples/target.json -o examples/pipewire.conf\n$ swproj pipewire -h\nUsage: swproj pipewire [OPTIONS]\n\n  Emit a PipeWire module-filter-chain config with inline FIR coefficients,\n  loadable via services.pipewire.configPackages or\n  /etc/pipewire/pipewire.conf.d/.\n\nOptions:\n  -m, --measure FILE             Room measurement (.swproj).\n  -t, --target FILE              Target EQ (.json).\n  -f, --filter [linear|minimum]  Phase character of the room-correction FIR.\n                                 [default: (linear)]\n  -r, --rate INTEGER RANGE       Sample rate (Hz).  [default: 48000;\n                                 8000\u003c=x\u003c=384000]\n  -n, --taps INTEGER RANGE       FIR length (samples).  [default: 8192;\n                                 x\u003e=256]\n  -b, --max-boost FLOAT RANGE    Cap on inverse magnitude (dB).  [default:\n                                 12.0; x\u003e=0.0]\n  -o, --output FILE              Write conf to file (default: stdout).\n  -h, --help                     Show this message and exit.\n```\n\nSee output example at [`examples/camilladsp.yaml`](examples/camilladsp.yaml) and\n[`examples/pipewire.conf`](examples/pipewire.conf).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstepbrobd%2Fswproj","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstepbrobd%2Fswproj","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstepbrobd%2Fswproj/lists"}