The project is a dual-language project. We are using python for AI-powered audio synthesis and javascript for live-coding (composition).
Generated via ^eza --tree --git-ignore and trimmed:
├── biome.json
├── CHANGELOG.md
├── CRUSH.md
├── cspell.yaml
├── flake.lock
├── flake.nix
├── justfile
├── LICENSE.md
├── package.json
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── pyproject.toml
├── README.md
├── scripts
│ └── flake
│ └── ...
├── src
│ ├── composition
│ │ ├── cspell.yaml
│ │ ├── package.json
│ │ ├── src
│ │ │ └── ...
│ │ └── tsconfig.json
│ └── synthesis
│ ├── cspell.yaml
│ ├── pyproject.toml
│ └── src
│ └── glacial_synthesis
│ └── ...
├── tsconfig.json
└── uv.lock
Important tooling that is not language-specific:
- just is used as a command runner
- nushell is used as a shell and for helper scripts
- nix is used for reproducible environments
- crush is used for AI-assisted coding
- prettier is used for formatting miscellaneous files
- cspell is used for spell-checking
Important tooling that is javascript-specific:
- nodejs version 24 is used as the runtime
- pnpm version 9 is used as the package manager
- biome is used to format, lint and provide LSP functionality for javascript-related files
- typescript is used for type-checking and LSP functionality
- tsx is used as a REPL
Important tooling that is python-specific:
- python version 3.11 is used as the runtime
- uv is used as the package manager
- ruff is used as a formatter and linter
- mypy is used for type-checking
- pylsp is used for LSP functionality
Important libraries that are javascript-specific:
- strudel is used for a web-based live-coding environment
Important libraries that are python-specific:
- audiocraft is used for sample synthesis