{"id":21989195,"url":"https://github.com/repcomm/c-audio-graph","last_synced_at":"2025-06-20T03:39:21.176Z","repository":{"id":130853826,"uuid":"342868015","full_name":"RepComm/c-audio-graph","owner":"RepComm","description":"Audio graph library written in C, inspiration from WebAudioAPI","archived":false,"fork":false,"pushed_at":"2021-03-04T04:55:07.000Z","size":54,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-23T03:14:45.140Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RepComm.png","metadata":{"files":{"readme":"ReadMe.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-02-27T13:52:54.000Z","updated_at":"2021-03-04T04:55:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"5f4c1bc7-3cf8-4e7b-a053-aac6fdd8c948","html_url":"https://github.com/RepComm/c-audio-graph","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RepComm/c-audio-graph","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RepComm%2Fc-audio-graph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RepComm%2Fc-audio-graph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RepComm%2Fc-audio-graph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RepComm%2Fc-audio-graph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RepComm","download_url":"https://codeload.github.com/RepComm/c-audio-graph/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RepComm%2Fc-audio-graph/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260874403,"owners_count":23075821,"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-11-29T19:28:20.935Z","updated_at":"2025-06-20T03:39:16.150Z","avatar_url":"https://github.com/RepComm.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# c-audio-graph\n\nAn audio graph library written in C\n\n## Why\nIn js/ts I'm used to having the WebAudioAPI audio graph\u003c/br\u003e\n\nI didn't feel like using some bloated OS dep. libs, so here we are.\n\n## State\nCurrently the code can render a (slightly buggy) scene graph where an\nOscillator node connects to the destination node\n\n## How it works\nOn the top level, this is a node graph where nodes connect to other nodes, and/or node params (like frequency, gain, etc)\n\nIntermediately, it is a recursive reverse lookup tree structure of nodes\nThe first node to evaluate is the context destination, which triggers\nall other nodes connected to it\n\nAll nodes are stored in a linked list in the graph context,\nwhich can be modified during runtime w/ dynamic heap memory allocation.\n\nI *might* be a huge fan of linked lists\n\nNodes can be source, destination, or both.\n\nOscillators are sources, with no inputs\nDestinationNode is specifically meant for graph output, there should only be one of these\n\nOther nodes are planned:\n- gain (amplifier)\n- fft (frequency analysis)\n- ifft (frequencies to sample)\n- adsr (attack-decay-sustain-release) controller\n- note (adsr, gain, frequency) controller\n- biquad filter\n- equalizer (something like 16 bands?)\n- delay (buffer)\n- reverb\n- AM pitch shift\n- PCM buffer (for easily playing of sounds that loop, or microphone)\n\n## Intentions\nI intend to try and compile this for arduino, rpi, and arm, but for now\nI'm doing all testing on Ubuntu x64, so the included built binary is x64\n\nThis library does not depend on anything other that libc at the moment, and\nhopefully I'll remove that as well soon.\n\nThis lib only renders the audio to a float[]\nI am writing a stdin audio player that plays floats directly from terminal/stdin\nas a pipe solution that won't require you to bind dumb libraries, but you could\njust stream the data to a web browser through a web socket.\n\nTODO - write lots of readme\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frepcomm%2Fc-audio-graph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frepcomm%2Fc-audio-graph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frepcomm%2Fc-audio-graph/lists"}