{"id":16379723,"url":"https://github.com/owencochell/maec","last_synced_at":"2025-10-26T10:30:54.187Z","repository":{"id":155433011,"uuid":"532660906","full_name":"OwenCochell/maec","owner":"OwenCochell","description":"Modular Audio Engine in C++","archived":false,"fork":false,"pushed_at":"2024-07-15T03:29:54.000Z","size":547,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-07-15T04:38:46.796Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OwenCochell.png","metadata":{"files":{"readme":"README.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":"2022-09-04T21:19:20.000Z","updated_at":"2024-07-15T04:38:54.032Z","dependencies_parsed_at":"2023-11-07T17:45:57.197Z","dependency_job_id":"937ce452-111d-4ace-9098-5e3989275307","html_url":"https://github.com/OwenCochell/maec","commit_stats":null,"previous_names":["owencochell/maec"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OwenCochell%2Fmaec","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OwenCochell%2Fmaec/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OwenCochell%2Fmaec/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OwenCochell%2Fmaec/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OwenCochell","download_url":"https://codeload.github.com/OwenCochell/maec/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219863201,"owners_count":16555951,"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-10-11T03:49:32.172Z","updated_at":"2025-10-26T10:30:53.764Z","avatar_url":"https://github.com/OwenCochell.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# maec\n\nModular Audio Engine in C++\n\n![maec info](./assets/maec.png)\n\n## Disclaimer\n\nThis project is a work in progress!\nThis project will remain in an experimental state for a long time.\nAny components or features may change in a massive way with no warning.\nUse at your own risk.\n\n## Theory\n\nIn theory, this project will provide modules that can be chained\ntogether to produce/ work with audio data.\nThis can be anything ranging from generating audio data from scratch\nto playing back audio data.\n\nThis project takes a lot of inspiration from modular analog synthesizers,\nwhich provided a very simple yet powerful way to work with audio data.\n\nWhen completed, this project will contain modules for generating/playing back audio data,\naltering audio data (filters and whatnot), and outputting this data to multiple sources and backends.\nThis project is geared towards realtime audio playback and analysis.\n\nIdeally, this project will be used as a framework for working with sound programably,\nas well as providing an environment for creating and using digital instruments and voices!\n\nIn short, with the power of MAEC, you can:\n\n- Create audio data from scratch!\n- Alter existing audio data!\n- Link discreet modules together to form a meaningful chain!\n- Use our home grown DSP functions! (Ok maybe don't do this one...)\n- Import and export audio data to various places/services!\n- Hook your own custom functionality into MAEC!\n- Impress your friends!\n\n## Current Features\n\nWe currently have a lot of things implemented!\nAs of now, most of this stuff is simply framework oriented,\nbut as time goes on we will be shifting focus more and more onto the process\nof signal processing and audio synthesis.\n\nHere are some of our features:\n\n- A module framework!\n    - Fully polymorphic! It is trivial to create and integrate your custom modules into MAEC\n    - Modules can be linked and interact with each other (forming a module chain)\n    - A complete state chain, describing how the state of each module changes,\n        while allowing developers to hook custom actions into each state\n    - Module chains share a collection of information\n    - Modules expose parameters which define how it operates. These parameters can be constant values,\n        or can have modules attached to them for value modulation\n    - Custom timekeeping done in relation to the chain, allowing modules to have an \n        understanding of time independent of 'wall' time.\n- Sources and Sinks:\n    - Sinks allow for audio data to leave the module chain\n        - Output to ALSA devices\n- Home grown DSP algorithms!\n    - Various convolution implementations\n    - DFT and inverse DFT\n    - Radix2 Cooley-Turkey FFT (in place and out of place)\n    - Methods and processing for FFT operations on real data\n    - Fast convolution via FFT\n    - Filter kernel generation\n    - Implementations for recursive digital filters\n    - Hooks into more common, better algorithms created by others\n- A custom buffer for holding multi-channel signals!\n    - Custom iterators for accessing this data in a standardized way(also works with STD methods that utilize iterators!)\n    - Provides different representations of multi-channel audio\n    - Tools for \"squishing\" data into something more workable\n- Useful modules included!\n    - Various meta modules for testing, profiling, and simplifying your experience\n        (LatencyModule, Counter, UniformBuffer)\n    - Fundamental oscillators (Sine, Square, Saw, Triangle)\n    - Envelopes of all sorts (SetValue, Linear, Exponential, Chain, ADSR)\n    - Module mixers allow for n:1, 1:n, and n:n relationships\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fowencochell%2Fmaec","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fowencochell%2Fmaec","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fowencochell%2Fmaec/lists"}