{"id":19934580,"url":"https://github.com/maxmarsc/dave","last_synced_at":"2025-04-05T16:03:24.025Z","repository":{"id":257812624,"uuid":"797670330","full_name":"maxmarsc/dave","owner":"maxmarsc","description":"Debugger Audio Visualization Extension","archived":false,"fork":false,"pushed_at":"2025-03-01T10:23:44.000Z","size":405,"stargazers_count":84,"open_issues_count":7,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-28T08:36:24.746Z","etag":null,"topics":["audio","cpp","gdb","lldb","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxmarsc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2024-05-08T09:39:33.000Z","updated_at":"2024-12-25T19:50:31.000Z","dependencies_parsed_at":"2024-10-06T16:39:19.234Z","dependency_job_id":"beaa6d81-2d34-47a7-9ce1-72efbba4add2","html_url":"https://github.com/maxmarsc/dave","commit_stats":null,"previous_names":["maxmarsc/dave"],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxmarsc%2Fdave","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxmarsc%2Fdave/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxmarsc%2Fdave/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxmarsc%2Fdave/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxmarsc","download_url":"https://codeload.github.com/maxmarsc/dave/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247361600,"owners_count":20926641,"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","cpp","gdb","lldb","python"],"created_at":"2024-11-12T23:17:19.960Z","updated_at":"2025-04-05T16:03:23.993Z","avatar_url":"https://github.com/maxmarsc.png","language":"Python","readme":"# Debugger Audio Visualization Extension\n![logo](.pictures/dave_logo_long_v6.png  )\n\nDAVE is a GDB \u0026 LLDB extension which provide commands to visualize audio data\ndirectly from your buffers/classes. No need to recompile your code and/or instrument\nit with nasty macros or fancy libs, just start your debugger !\n\n\u003cp align=\"center\"\u003e\n    \u003cb\u003e The DAVE GUI \u003c/b\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\".pictures/gui_demo.png\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cb\u003e The DAVE ascii formatters \u003c/b\u003e\n\u003c/p\u003e\n\n```\n2 channels 256 samples, min -9.9998E-01, max 1.0000E+00 {\n  dSparkline[0] = \"[0⎻⎺‾⎺⎻x⎼_⎽⎼x⎺‾⎺⎻x⎽_⎽—x⎺‾⎺⎻x⎽_⎽⎼x⎺‾⎺⎻x⎽_⎽—x⎺‾⎺⎻x⎽_⎼x⎺‾⎺—x_⎽—x⎺‾⎺⎻x⎽_⎽⎼x⎺‾⎺⎻x⎽_⎽—x⎺‾⎺—x_⎼x⎺‾⎺⎻x⎽_⎽⎼x⎺‾⎺x⎽_⎽⎼x⎺‾⎺—x_⎽⎼x⎺‾⎻x⎽_⎽—x‾⎺⎻x⎽_⎼x⎺‾⎺—x_⎽—x‾⎺⎻x_⎽⎼x‾⎺⎻x_⎽⎼x‾⎺⎻x_⎽—x‾⎺—x_]\"\n  dSparkline[1] = \"[0⎻⎺‾⎺⎻x⎼_⎽⎼x⎺‾⎺⎻x⎽_⎽—x⎺‾⎺⎻x⎽_⎽⎼x⎺‾⎺⎻x⎽_⎽—x⎺‾⎺⎻x⎽_⎼x⎺‾⎺—x_⎽—x⎺‾⎺⎻x⎽_⎽⎼x⎺‾⎺⎻x⎽_⎽—x⎺‾⎺—x_⎼x⎺‾⎺⎻x⎽_⎽⎼x⎺‾⎺x⎽_⎽⎼x⎺‾⎺—x_⎽⎼x⎺‾⎻x⎽_⎽—x‾⎺⎻x⎽_⎼x⎺‾⎺—x_⎽—x‾⎺⎻x_⎽⎼x‾⎺⎻x_⎽⎼x‾⎺⎻x_⎽—x‾⎺—x_]\"\n  [...]\n}\n```\n\u003c!-- \u003cp align=\"center\"\u003e\n    \u003cimg src=\".pictures/pretty_printers.png\"\u003e\n\u003c/p\u003e --\u003e\n\nCurrently supported audio containers (both in `float` and `double`) are :\n\n__1D (mono) containers__:\n- `std::array`\n- `std::vector`\n- `std::span`\n- [Microsoft's `gsl::span`](https://github.com/microsoft/GSL/blob/main/include/gsl/span) \n- `C array`\n- `pointer`\n- `choc::buffer::MonoView`\n- `choc::buffer::MonoVBuffer`\n\n__2D (multichannel) containers__:\n- Any nesting of C/C++ standards 1D containers\n- `juce::AudioBuffer`\n- `juce::dsp::AudioBlock`\n- `choc::buffer::InterleavedView`\n- `choc::buffer::InterleavedBuffer`\n- `choc::buffer::ChannelArrayView`\n- `choc::buffer::ChannelArrayBuffer`\n\n\n### Current support\n| Operating System  | Status       |\n|-------------------|--------------|\n| Linux             | ✅           |\n| MacOS             | ✅           |\n| Windows           | ❌           |\n\n| Debugger platform | GDB          | LLDB         |\n|-------------------|--------------|--------------|\n| CLI               | ✅           | ✅           |\n| VSCode            | ✅ (*) | ❓ need testing  |\n| CLion             | ✅ (*) | ✅ (*) |\n| XCode             | N/A      | ✅ (*)|\n| Visual Studio      | ❌           | ❌           |\n\n(*) -  DAVE is not able to react when you go up/down in\nthe stack using the IDE ui.\n\n---\n\nTo get started first follow the `Project Setup` guide below, then you can read \nthe [User Guide](USER_GUIDE.md) to get familiar with DAVE.\n\nIf you want to develop/experiment with dave, follow the [Development Guide](DEV_GUIDE.md)\n\n## Project setup\n### Requirements\nDAVE requires a python \u003e= 3.10 installation with working `venv` and `tkinter` modules\n\n### Installation\nThe simplest way to install dave and its bindings is to use the install script :\n```bash\n# via the install script\n## using curl\nbash -c \"$(curl -fsSL https://raw.githubusercontent.com/maxmarsc/dave/refs/heads/main/dave/assets/dave_install.sh)\"\n\n## using wget\nbash -c \"$(wget https://raw.githubusercontent.com/maxmarsc/dave/refs/heads/main/dave/assets/dave_install.sh -O -)\"\n```\n\nIt will install the python dave modules, the debuggers bindings, and the `dave`\ncli tool to help manage your dave installation.\n\n*MacOS* : On MacOS distribution you might need to install tkinter using homebrew/macports.\n*Python* : Python support is limited and requires a different installation method, see the section below\n\n---\n\nAfter binding, starts your debugger, you should see the following message :\n```\n[dave] Successfully loaded\n```\n\nAnd the dave debugger commands should be available :\n - `dave show`\n - `dave delete`\n - `dave freeze`\n - `dave concat`\n\nSee the [User Guide](USER_GUIDE.md) on how to use these.\n\n### Update\nIf you want/need to update dave, you can use the `dave` cli tool :\n\n```bash\n# Update dave\ndave update\n```\n\n### Uninstallation\nIf you just want to remove the dave bindings run\n```bash\ndave unbind\n```\n\nIf you want to completely remove dave from your system run\n```bash\ndave uninstall\n```\n\n### Python support\nPython support is limited because both python debuggers I have investigated\n(pdb and debugpy) does not provide an API complete enough to provide full DAVE support.\nMost importantly **Python debugger does not provide automatic update on breakpoints**.\n\nTo install DAVE for python, install the `davext` pypi package in your environment.\n\nOnly 1D and 2D numpy tensors are supported, and you need to manually import dave\nfrom the debugger CLI, like this:\n```py\nimport dave.debuggers.pdb as pydave\n```\n\nThen you can use the following commands :\n - `pydave.show` analog to `dave show`\n - `pydave.concat` analog to `dave concat`\n - `pydave.freeze` analog to `dave freeze`\n - `pydave.delete` analog to `dave delete`\n - `pydave.update` which forces the update of the containers data\n\n\n---\n\n\n## Licensing\nThis project is licensed under GPLv3.0. The goal is for you to be able to use it\nto debug any project, open or proprietary, but to prevent anyone from making a\nproprietary project out of DAVE's code.\n\nIf you have any question or request about licensing, don't hesitate to ask !\n\n**Wikipedia:** *Software under the GPL may be run for all purposes, including commercial purposes and even as a tool for creating proprietary software, such as when using GPL-licensed compilers.*\n\n## Milestones\n- [x] Freeze\n- [x] Concatenate \n- [x] Save to disc\n- [x] Add tooltip hover for action buttons\n- [x] out-of-scope detection\n- [x] react to step over/up/down\n- [x] Mid/Side\n- [x] Interleaved \n- [x] Easy installation\n- [x] improve logging system\n- [x] document commands\n- [x] add license\n- [x] llvm libc/libstd (need to be tested)\n- [x] JUCE \n- [x] GSL\n- [x] Add samplerate support\n- [x] Add a way for the user to add custom container support\n- [x] Add command to help diagnostic type for custom container support\n- [ ] Add argument parsing to `show` (view, layout, settings...)\n- [ ] find testing strategy\n- [ ] Add versionning selection to dave_install\n- [ ] command aliases\n- [ ] minimize call to render functions\n- [ ] Eigen\n- [ ] Add FISH shell support\n- [x] CHOC\n- [x] Document the code\n- [x] Restart dave process \n- [x] Improve GUI proportions\n- [x] container deletion (GUI + delete command)\n- [x] LLDB\n\n\n\n\n\n## Troubleshooting\n\n### Set logging level\nWhen running into an issue, please activate the debug log level, by setting\nthe env variable `DAVE_LOGLEVEL` to `debug` before starting the debugger.\n\n### LLDB on Ubuntu 22.04\nWhen starting lldb on ubuntu 22.04 you might get this error :\n```\nTraceback (most recent call last):\n  File \"\u003cstring\u003e\", line 1, in \u003cmodule\u003e\nModuleNotFoundError: No module named 'lldb'\n```\n\nThis is a [known bug](https://bugs.launchpad.net/ubuntu/+source/llvm-defaults/+bug/1972855). In the meantime you can fix these using a symbolic link :\n```bash\nsudo mkdir -p /usr/lib/local/lib/python3.10/\nsudo ln -s /usr/lib/llvm-${VERSION}/lib/python3.10/dist-packages /usr/lib/local/lib/python3.10/dist-packages\n```\n\n### LLDB init\nTo always load the .lldbinit file in the current working directory, add the following command to ~/.lldbinit:\n```\nsettings set target.load-cwd-lldbinit true\n```\n\n### LLDB python module linting\nfor `venv`\n```bash\ntouch venv/lib64/python3.10/site-packages/lldb.pth\necho \"/usr/lib/llvm-${VERSION}/lib/python3.10/dist-packages/\" \u003e venv/lib64/python3.10/site-packages/lldb.pth\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxmarsc%2Fdave","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxmarsc%2Fdave","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxmarsc%2Fdave/lists"}