{"id":20918549,"url":"https://github.com/karstenj/orca-play","last_synced_at":"2025-04-11T10:23:38.610Z","repository":{"id":143983578,"uuid":"605197486","full_name":"karstenj/orca-play","owner":"karstenj","description":"Orca with web-based sound output","archived":false,"fork":false,"pushed_at":"2023-03-29T16:15:08.000Z","size":24250,"stargazers_count":12,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-18T17:07:07.070Z","etag":null,"topics":["midi","music","osc","programming-language","tonejs"],"latest_commit_sha":null,"homepage":"https://karstenj.github.io/orca-play/","language":"JavaScript","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/karstenj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2023-02-22T16:48:08.000Z","updated_at":"2024-10-18T03:24:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"7a40e62e-8496-47a4-8f23-0a6344a95429","html_url":"https://github.com/karstenj/orca-play","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karstenj%2Forca-play","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karstenj%2Forca-play/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karstenj%2Forca-play/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karstenj%2Forca-play/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/karstenj","download_url":"https://codeload.github.com/karstenj/orca-play/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234669424,"owners_count":18869080,"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":["midi","music","osc","programming-language","tonejs"],"created_at":"2024-11-18T16:39:12.641Z","updated_at":"2025-01-19T16:45:32.345Z","avatar_url":"https://github.com/karstenj.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ORCΛ PLΛY\n\n[OrcaPlay](https://karstenj.github.io/orca-play/) is a combination of the [esoteric programming language](https://en.wikipedia.org/wiki/Esoteric_programming_language) [Orca](https://github.com/hundredrabbits/orca) and the synthersizer companion app [Pilot](https://github.com/hundredrabbits/pilot) with some extensions.\n\nThis application is a synthesizer and a livecoding environment capable of playing synths and samples by [ToneJS](https://tonejs.github.io/) and sending MIDI to your audio/visual interfaces, like Ableton, Renoise, VCV Rack or SuperCollider.\n\n## Install \u0026 Run\n\n### Run in Browser\n[OrcaPlay](https://karstenj.github.io/orca-play/)\n\n### Run in Electron\nIf you wish to use Orca inside of [Electron](https://electronjs.org/), follow these steps:\n\n```\ngit clone https://github.com/karstenj/orca-play.git\ngit submodule init\ngit submodule update\ncd orca-play/desktop/\nnpm install\nnpm start\n```\n\n## Operators\n\nTo display the list of operators inside of Orca, use `CmdOrCtrl+G`.\n\n- `A` **add**(*a* b): Outputs sum of inputs.\n- `B` **subtract**(*a* b): Outputs difference of inputs.\n- `C` **clock**(*rate* mod): Outputs modulo of frame.\n- `D` **delay**(*rate* mod): Bangs on modulo of frame.\n- `E` **east**: Moves eastward, or bangs.\n- `F` **if**(*a* b): Bangs if inputs are equal.\n- `G` **generator**(*x* *y* *len*): Writes operands with offset.\n- `H` **halt**: Halts southward operand.\n- `I` **increment**(*step* mod): Increments southward operand.\n- `J` **jumper**(*val*): Outputs northward operand.\n- `K` **konkat**(*len*): Reads multiple variables.\n- `L` **less**(*a* *b*): Outputs smallest of inputs.\n- `M` **multiply**(*a* b): Outputs product of inputs.\n- `N` **north**: Moves Northward, or bangs.\n- `O` **read**(*x* *y* read): Reads operand with offset.\n- `P` **push**(*len* *key* val): Writes eastward operand.\n- `Q` **query**(*x* *y* *len*): Reads operands with offset.\n- `R` **random**(*min* max): Outputs random value.\n- `S` **south**: Moves southward, or bangs.\n- `T` **track**(*key* *len* val): Reads eastward operand.\n- `U` **uclid**(*step* max): Bangs on Euclidean rhythm.\n- `V` **variable**(*write* read): Reads and writes variable.\n- `W` **west**: Moves westward, or bangs.\n- `X` **write**(*x* *y* val): Writes operand with offset.\n- `Y` **jymper**(*val*): Outputs westward operand.\n- `Z` **lerp**(*rate* target): Transitions operand to input.\n- `*` **bang**: Bangs neighboring operands.\n- `#` **comment**: Halts a line.\n\n### IO\n\n- `:` **midi**(channel octave note velocity length): Sends a MIDI note.\n- `%` **mono**(channel octave note velocity length): Sends monophonic MIDI note.\n- `!` **cc**(channel knob value): Sends MIDI control change.\n- `?` **pb**(channel value): Sends MIDI pitch bench.\n- `;` **pilot**(channel value): Sends Pilot note.\n- `=` **pilot**(channel value): Sends Pilot effect/sample.\n- `$` **self**: Sends [ORCA command](#Commands).\n\n## Pilot Synthesizer/Sampler/Player\nPilot has 17 synthesizer voices, 13 sampler voices, 13 drum banks with 16 drum samples and 8 effects.\n\n## MIDI\n\nSee description in [Orca](https://github.com/hundredrabbits/orca)\n## Advanced Controls\n\nSome of Orca's features can be controlled via its own command-line interface. To activate the command-line prompt, press `CmdOrCtrl+K`. The prompt can also be used to inject patterns or change settings.\n\n### Project Mode\n\nYou can **quickly inject orca files** into the currently active file, by using the command-line prompt — Allowing you to navigate across multiple files like you would a project. Press `CmdOrCtrl+L` to load multiple orca files, then press `CmdOrCtrl+B` and type the name of a loaded `.orca` file to inject it.\n\n### Commands\n\nAll commands have a shorthand equivalent to their first two characters, for example, `write` can also be called using `wr`. You can see the full list of commands [here](https://github.com/hundredrabbits/Orca/blob/master/desktop/sources/scripts/commander.js).\n\n- `play` Plays program.\n- `stop` Stops program.\n- `run` Runs current frame.\n- `bpm:140` Sets bpm speed to `140`.\n- `apm:160` Animates bpm speed to `160`.\n- `frame:0` Sets the frame value to `0`.\n- `skip:2` Adds `2`, to the current frame value.\n- `rewind:2` Removes `2`, to the current frame value.\n- `color:f00;0f0;00f` Colorizes the interface.\n- `find:aV` Sends cursor to string `aV`.\n- `select:3;4;5;6` Move cursor to position `3,4`, and select size `5:6`(optional).\n- `inject:pattern;12;34` Inject the local file `pattern.orca`, at `12,34`(optional).\n- `write:H;12;34` Writes glyph `H`, at `12,34`(optional).\n- `time` Prints the time, in minutes seconds, since `0f`.\n- `midi:1;2` Set Midi output device to `#1`, and input device to `#2`.\n- `udp:1234;5678` Set UDP output port to `1234`, and input port to `5678`.\n- `osc:1234` Set OSC output port to `1234`.\n\n## Base36 Table\n\nOrca operates on a base of **36 increments**. Operators using numeric values will typically also operate on letters and convert them into values as per the following table. For instance `Do` will bang every *24th frame*. \n\n| **0** | **1** | **2** | **3** | **4** | **5** | **6** | **7** | **8** | **9** | **A** | **B**  | \n| :-:   | :-:   | :-:   | :-:   | :-:   | :-:   | :-:   | :-:   | :-:   | :-:   | :-:   | :-:    | \n| 0     | 1     | 2     | 3     | 4     | 5     | 6     | 7     | 8     | 9     | 10    | 11     |\n| **C** | **D** | **E** | **F** | **G** | **H** | **I** | **J** | **K** | **L** | **M** | **N**  |\n| 12    | 13    | 14    | 15    | 16    | 17    | 18    | 19    | 20    | 21    | 22    | 23     |\n| **O** | **P** | **Q** | **R** | **S** | **T** | **U** | **V** | **W** | **X** | **Y** | **Z**  | \n| 24    | 25    | 26    | 27    | 28    | 29    | 30    | 31    | 32    | 33    | 34    | 35     |\n\n## Transpose Table\n\nThe midi operator interprets any letter above the chromatic scale as a transpose value, for instance `3H`, is equivalent to `4A`.\n\n| **0** | **1** | **2** | **3** | **4** | **5** | **6** | **7** | **8** | **9** | **A** | **B**  | \n| :-:   | :-:   | :-:   | :-:   | :-:   | :-:   | :-:   | :-:   | :-:   | :-:   | :-:   | :-:    | \n| _     | _     | _     | _     | _     | _     | _     | _     | _     | _     | A0    | B0     |\n| **C** | **D** | **E** | **F** | **G** | **H** | **I** | **J** | **K** | **L** | **M** | **N**  |\n| C0    | D0    | E0    | F0    | G0    | A0    | B0    | C1    | D1    | E1    | F1    | G1     | \n| **O** | **P** | **Q** | **R** | **S** | **T** | **U** | **V** | **W** | **X** | **Y** | **Z**  | \n| A1    | B1    | C2    | D2    | E2    | F2    | G2    | A2    | B2    | C3    | D3    | E3     | \n\n## Links\n\n- [Overview Video](https://www.youtube.com/watch?v=RaI_TuISSJE)\n- [Orca Podcast](https://futureofcoding.org/episodes/045)\n- [Examples \u0026 Templates](https://git.sr.ht/~rabbits/orca-examples)\n\n## Extras\n\n- This application supports the [Ecosystem Theme](https://github.com/hundredrabbits/Themes).\n- See the [License](LICENSE.md) file for license rights and limitations (MIT).\n- Pull Requests are welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarstenj%2Forca-play","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkarstenj%2Forca-play","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarstenj%2Forca-play/lists"}