{"id":13783069,"url":"https://github.com/trentgill/fn_ptr_graph","last_synced_at":"2025-05-11T17:30:48.622Z","repository":{"id":66746928,"uuid":"93708249","full_name":"trentgill/fn_ptr_graph","owner":"trentgill","description":"Forth-y CLI for DSP graphs. C (DSP) \u0026 Haskell (interpreter \u0026 graph compiler) backend. Wrapped in libsoundio","archived":false,"fork":false,"pushed_at":"2018-04-25T16:46:12.000Z","size":68,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-08-03T18:18:13.988Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/trentgill.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}},"created_at":"2017-06-08T04:45:44.000Z","updated_at":"2023-10-02T12:25:03.000Z","dependencies_parsed_at":"2023-03-11T00:19:56.587Z","dependency_job_id":null,"html_url":"https://github.com/trentgill/fn_ptr_graph","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trentgill%2Ffn_ptr_graph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trentgill%2Ffn_ptr_graph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trentgill%2Ffn_ptr_graph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trentgill%2Ffn_ptr_graph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trentgill","download_url":"https://codeload.github.com/trentgill/fn_ptr_graph/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253604444,"owners_count":21934860,"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-08-03T18:01:52.327Z","updated_at":"2025-05-11T17:30:48.348Z","avatar_url":"https://github.com/trentgill.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# fn_ptr_graph\nForth-y CLI for DSP graphs. C (DSP) \u0026amp; Haskell (interpreter \u0026amp; graph compiler) backend. Wrapped in libsoundio\n\nCheckout the 'goth_wrath' branch for current status.\n\nlibsoundio is used as a host for an audio application. it starts out doing nothing.\n\ninteract with the CLI to add modules (taken from github.com/whimsicalraps/wrDsp) \u0026 change parameters.\n\nthe CLI is a very basic forth (written in Haskell), which currently doesn't even have conditionals.\npush values to the stack, then call the words that use them (eg. 43.0 01.LPG.level).\n\nthe DSP graph details are stored \u0026 compiled into a computable list inside of Haskell.\nC does as little as possible:\n- all _process() fns are called with pointers to their in\u0026out buffers (supplied by haskell)\n- on init, each module reports it's parameters \u0026 fnptrs for access \u0026 process -\u003e stored in haskell\nthis approach attempts to reduce the IO access, and encourage more functional use of the libs\n\nall DSP optimization is done in Haskell, mostly for ease.\nthis means, any non-obvious optimizations that a C lib can do, must be exposed as a set of rules in the *_cli.h\neg: volume controls set to 0, will always result in no output, but may need internal state updated.\nthis system has not been completed.\n\nin fact, much of this has not been completed!\n\n# why\noriginally intended as a desktop-hosted testbed for dsp written for embedded systems.\nsimplifies the debugging process \u0026 makes testing on the go much easier.\nit should run on raspberry pi 3 hardware, which is a key platform for further development of this project.\nall the existing code was written for cortex-m series microcontrollers, so is generally fast \u0026 efficient\n\nthere will be a ui at some point, probably using brick\n\nmaybe one day it will live in a plugin too.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrentgill%2Ffn_ptr_graph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrentgill%2Ffn_ptr_graph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrentgill%2Ffn_ptr_graph/lists"}