{"id":13629787,"url":"https://github.com/cycfi/q","last_synced_at":"2025-05-14T16:05:37.895Z","repository":{"id":37432005,"uuid":"109459331","full_name":"cycfi/q","owner":"cycfi","description":"C++ Library for Audio Digital Signal Processing","archived":false,"fork":false,"pushed_at":"2024-10-27T00:52:45.000Z","size":179524,"stargazers_count":1265,"open_issues_count":5,"forks_count":160,"subscribers_count":45,"default_branch":"master","last_synced_at":"2025-04-05T19:07:13.755Z","etag":null,"topics":["audio","audio-processing","c-plus-plus","cpp","cpp-library","cpp20","dsp","dsp-library","effects","frequency","function-composition","guitar-processor","modern-cpp","music","pitch-detection","pitch-tracking","synth"],"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/cycfi.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":"2017-11-04T02:06:19.000Z","updated_at":"2025-04-03T01:47:54.000Z","dependencies_parsed_at":"2023-02-01T07:01:19.182Z","dependency_job_id":"141bd891-eeaf-4146-8ae9-2362c0feaf03","html_url":"https://github.com/cycfi/q","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cycfi%2Fq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cycfi%2Fq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cycfi%2Fq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cycfi%2Fq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cycfi","download_url":"https://codeload.github.com/cycfi/q/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248631668,"owners_count":21136554,"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","audio-processing","c-plus-plus","cpp","cpp-library","cpp20","dsp","dsp-library","effects","frequency","function-composition","guitar-processor","modern-cpp","music","pitch-detection","pitch-tracking","synth"],"created_at":"2024-08-01T22:01:19.248Z","updated_at":"2025-04-12T20:39:06.707Z","avatar_url":"https://github.com/cycfi.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# ![Q-Logo](docs/modules/ROOT/images/q-logo-small.png) Audio DSP Library\n\n[![CMake Build Matrix](https://github.com/cycfi/q/workflows/Build/badge.svg)](https://github.com/cycfi/q/actions?query=workflow%3ABuild)\n\n## Introduction\n\nQ is a cross-platform C++ library for audio digital signal processing. Q is named after the \"Q factor,\" a dimensionless parameter that describes the quality of a resonant circuit. The Q DSP Library is designed to be simple and elegant, as the simplicity of its name suggests, and efficient enough to run on small microcontrollers.\n\nQ simplifies complex DSP programming tasks without sacrificing readability by leveraging the power of modern C++ and efficient use of functional programming techniques, especially function composition using fine-grained and reusable function objects (both stateless and stateful).\n\nQ is the host of some experimental Music related DSP facilities [the author](#jdeguzman) has accumulated over the years as part of research and development, and will continue to evolve to accommodate more facilities necessary for the fulfillment of various Music related projects.\n\nThe library is Open Source and released under the very liberal [MIT license](http://tinyurl.com/p6pekvo).\n\n\u003e **NOTE:** The library has now reached version 1.0 and has stabilized. The documentation is in sync with the code in the master branch. Any future changes will be developed in feature branches and merged incrementally to the master branch. The develop branch will cease to exist. The API is now stable, and any changes will be documented accordingly.\n\u003e\n\u003e Versions will be in separate branches. The master branch will target the latest version. Currently, it targets v1.5, which will be a significant departure from v1.0, when completed. This update includes the retirement of the BACF (bitstream autocorrelation) based pitch detector and the introduction of a new, much better pitch detection algorithm with integrated onset detection.\n\n**Update:** We're closing in towards v1.5. The Hz pitch detection system is presented in this article series: [Pitch Perfect: Enhanced Pitch Detection Techniques (Part 1)\n](https://www.cycfi.com/2024/09/pitch-perfect-enhanced-pitch-detection-techniques-part-1/)\n\n## Overview\n\nThe Q library comprises of two layers:\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://cycfi.github.io/q/q/v1.5-dev/_images/q-layers.svg\" width=\"50%\"\u003e\n\u003c/p\u003e\n\n1. q_io: Audio and MIDI I/O layer. The q_io layer provides cross-platform audio and MIDI host connectivity straight out of the box. The q_io layer is optional. The q_lib layer is usable without it.\n\n2. q_lib: The core DSP library, q_lib is a no-frills, lightweight, header-only library.\n\n### Dependencies\nThe dependencies are determined by the arrows.\n\n* q_io has very minimal dependencies ([portaudio](http://www.portaudio.com/) and\n   [portmidi](http://portmedia.sourceforge.net/portmidi/)) with very loose coupling via thin wrappers that are easy to transplant and port to a host, with or without an operating system, such as an audio plugin or direct to hardware ADC and DAC.\n\n* q_io is used in the tests and examples, but can be easily replaced by other mechanisms in an application. DAW (digital audio workstations), for example, have their own audio and MIDI I/O mechanisms.\n\n* q_lib has no dependencies except the standard c++ library.\n\nThe *q_io* layer provides cross-platform audio and MIDI host connectivity straight out of the box. The *q_io* layer is optional. The *q_lib* layer is usable without it. *q_io* is used in the tests and examples, but can be easily replaced by other mechanisms in an application.\n\n## Documentation\n\n* [Setup and Installation](https://cycfi.github.io/q/q/v1.5-dev/setup.html)\n* [Quick Start](https://cycfi.github.io/q/q/v1.5-dev/quick_start.html)\n* [Fundamentals](https://cycfi.github.io/q/q/v1.5-dev/fundamentals.html)\n* [Reference](https://cycfi.github.io/q/q/v1.5-dev/index.html)\n\n## \u003ca name=\"jdeguzman\"\u003e\u003c/a\u003eAbout the Author\n\nJoel got into electronics and programming in the 80s because almost\neverything in music, his first love, is becoming electronic and digital.\nSince then, he builds his own guitars, effect boxes and synths. He enjoys\nplaying distortion-laden rock guitar, composes and produces his own music in\nhis home studio.\n\nJoel de Guzman is the principal architect and engineer at [Cycfi\nResearch][1]. He is a software engineer specializing in advanced C++ and an\nadvocate of Open Source. He has authored a number of highly successful Open\nSource projects such as [Boost.Spirit][3], [Boost.Phoenix][4] and\n[Boost.Fusion][5]. These libraries are all part of the [Boost Libraries][6],\na well respected, peer-reviewed, Open Source, collaborative development\neffort.\n\n[1]: https://www.cycfi.com/\n[2]: https://ciere.com/\n[3]: http://tinyurl.com/ydhotlaf\n[4]: http://tinyurl.com/y6vkeo5t\n[5]: http://tinyurl.com/ybn5oq9v\n[6]: http://tinyurl.com/jubgged\n\n## Discord\n\nFeel free to join the [discord channel](https://discord.gg/4MymV4EaY5) for\ndiscussion and chat with the developer.\n\n*Copyright (c) 2014-2024 Joel de Guzman. All rights reserved.*\n*Distributed under the [MIT License](https://opensource.org/licenses/MIT)*\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcycfi%2Fq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcycfi%2Fq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcycfi%2Fq/lists"}