{"id":20918716,"url":"https://github.com/bubobubobubobubo/topos","last_synced_at":"2025-07-12T20:05:48.838Z","repository":{"id":186602463,"uuid":"671691151","full_name":"Bubobubobubobubo/topos","owner":"Bubobubobubobubo","description":"Web Based Live Coding Environment. Inspired by the Monome Teletype.","archived":false,"fork":false,"pushed_at":"2024-06-21T15:57:41.000Z","size":193907,"stargazers_count":30,"open_issues_count":16,"forks_count":11,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-05-13T12:48:37.735Z","etag":null,"topics":["algorithmic-composition","computer","controller","livecoding","midi","monome","music","sequencer","synthesis","teletype","toplap","webaudio"],"latest_commit_sha":null,"homepage":"https://topos.live","language":"TypeScript","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/Bubobubobubobubo.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,"zenodo":null}},"created_at":"2023-07-27T23:17:44.000Z","updated_at":"2025-05-12T15:01:11.000Z","dependencies_parsed_at":"2024-01-16T00:05:19.069Z","dependency_job_id":"6843369b-a037-4496-b633-bc92a1f40c11","html_url":"https://github.com/Bubobubobubobubo/topos","commit_stats":null,"previous_names":["bubobubobubobubo/topos"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Bubobubobubobubo/topos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bubobubobubobubo%2Ftopos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bubobubobubobubo%2Ftopos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bubobubobubobubo%2Ftopos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bubobubobubobubo%2Ftopos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bubobubobubobubo","download_url":"https://codeload.github.com/Bubobubobubobubo/topos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bubobubobubobubo%2Ftopos/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265047848,"owners_count":23703218,"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":["algorithmic-composition","computer","controller","livecoding","midi","monome","music","sequencer","synthesis","teletype","toplap","webaudio"],"created_at":"2024-11-18T16:39:46.596Z","updated_at":"2025-07-12T20:05:48.818Z","avatar_url":"https://github.com/Bubobubobubobubo.png","language":"TypeScript","funding_links":["https://ko-fi.com/I2I2RSBHF'"],"categories":[],"sub_categories":[],"readme":"# Topos: A Web-Based Algorithmic Sequencer\n\n\u003cp align=\"center\"\u003e | \n  \u003ca href=\"https://discord.gg/aPgV7mSFZh\"\u003eDiscord\u003c/a\u003e |\n  \u003ca href=\"https://raphaelforment.fr/\"\u003eBuboBubo\u003c/a\u003e |\n  \u003ca href=\"https://github.com/amiika\"\u003eAmiika\u003c/a\u003e |\n  \u003ca href=\"https://toplap.org/\"\u003eAbout Live Coding\u003c/a\u003e |\n  \u003cbr\u003e\u003cbr\u003e\n  \u003ch2 align=\"center\"\u003e\u003cb\u003eContributors\u003c/b\u003e\u003c/h2\u003e\n  \u003cp align='center'\u003e\n    \u003ca href=\"https://github.com/bubobubobubobubo/Topos/graphs/contributors\"\u003e\n    \u003cimg src=\"https://contrib.rocks/image?repo=bubobubobubobubo/Topos\" /\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n  \u003ca href='https://ko-fi.com/I2I2RSBHF' target='_blank'\u003e\u003cimg height='36' style='border:0px;height:36px;' src='https://storage.ko-fi.com/cdn/kofi3.png?v=3' border='0' alt='Buy Me a Coffee at ko-fi.com' /\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n---\n\nTopos is a web based live coding environment designed to be installation-free, independant and fun. Topos is loosely based on the [Monome Teletype](https://monome.org/docs/teletype/). The application follows the same operating principle, but adapts it to the rich multimedia context offered by web browsers. Topos is capable of many things:\n\n- it is a generative/algorithmic music sequencer made for **improvisation** and **composition** alike\n- it is a synthesizer capable of _additive_, _substractive_, _FM_ and _wavetable\n  synthesis_, backed up by a [powerful web based audio engine](https://www.npmjs.com/package/superdough)\n- it can also generate video thanks to [Hydra](https://hydra.ojack.xyz/), \n  oscilloscopes, frequency visualizers and image/canvas sequencing capabilities\n- it can be used to sequence other MIDI and OSC devices (the latter using a **NodeJS** script)\n- it is made to be used without the need of installing anything, always ready at\n  [https://topos.live](https://topos.live)\n\n---\n\n![Screenshot](https://github.com/Bubobubobubobubo/Topos/blob/main/src/assets/topos_gif.gif)\n\n## Disclaimer\n\n**Topos** is still a young and experimental project developed by two hobbyists :) Contributions are welcome! We wish to be as inclusive and welcoming as possible to your ideas and suggestions! The software is working quite well and we are continuously striving to improve it. Note that most features are rather experimental and that we don't really have any classical training in web development.\n\n## Local Installation (for devs and contributors)\n\nTo run the application, you will need to install [Node.js](https://nodejs.org/en/) and [Yarn](https://yarnpkg.com/en/). Then, clone the repository and run:\n\n- `yarn install`\n- `yarn run dev`\n\nYou are good to go. The application will update itself automatically with every change to the codebase. To test the production version of the applicationn, you will need to install [Node.js](https://nodejs.org/en/) and [Yarn](https://yarnpkg.com/en/). Then, clone the repository and run:\n\n- `yarn run build`\n- `yarn run start`\n\nIf the build passes, you can be sure that it will also pass our **CI** pipeline that deploys the application to [https://topos.live](https://topos.live). Always run a build before committing to check for compiler errors. The automatic deployment on the `main` branch will not accept compiler errors!\n\n## Tauri version\n\nTopos can also be compiled as a standalone application using [Tauri](https://tauri.app/). You will need [Node.js](https://nodejs.org/en/), [Yarn](https://yarnpkg.com/en/) and [Rust](https://www.rust-lang.org/) to be installed on your computer. Then, clone the repository and run:\n\n- `yarn tauri build`\n- `yarn tauri dev`\n\nThe `tauri` version has never been fleshed out. It's a template for later developments if Topos ever wants to escape from the web :)\n\n## Docker\n\nTo run the **Docker** version, run the following command:\n\n`docker run -p 8001:80 bubobubobubo/topos:latest`\n\n### Build and run the prod image\n\n`docker compose --profile prod up`\n\n### Build and run the dev image\n\nFirst you need to map `node_modules` to your local machine for your IDE IntelliSense to work properly :\n\n```bash\ndocker compose --profile dev up -d\ndocker cp topos-dev:/app/node_modules .\ndocker compose --profile dev down\n```\n\nthen run the following command:\n\n```bash\ndocker compose --profile dev up\n```\n\nNote that a Docker version of Topos is automatically generated everytime a commit is done on the `main` branch.\n\n## Credits\n\n- Felix Roos for the [SuperDough](https://www.npmjs.com/package/superdough) audio engine.\n- Frank Force for the [ZzFX](https://github.com/KilledByAPixel/ZzFX) synthesizer.\n- Kristoffer Ekstrand for the [AKWF](https://www.adventurekid.se/akrt/waveforms/adventure-kid-waveforms/) waveforms.\n- Ryan Kirkbride for some of the audio samples in the [Dough-Fox](https://github.com/Bubobubobubobubo/Dough-Fox) sample pack, taken from [here](https://github.com/Qirky/FoxDot/tree/master/FoxDot/snd).\n- Adel Faure for the [JGS](https://adelfaure.net/https://adelfaure.net/) font.\n- Raphaël Bastide for the [Steps Mono](https://github.com/raphaelbastide/steps-mono/) font.\n\nMany thanks to all the contributors and folks who tried the software already :)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbubobubobubobubo%2Ftopos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbubobubobubobubo%2Ftopos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbubobubobubobubo%2Ftopos/lists"}