A hands-on introduction to live-coded music in the browser
Strudel is a JavaScript-derived live-coding environment that lets you make music directly in a browser REPL. Each snippet you evaluate becomes part of a real-time musical texture.
| According_to_all_known_laws_of_aviation,_there_is_no_way_a_bee_should_be_able_to_fly._Its_wings_are_too_small_to_get_its_fat_little_body_off_the_ground._The_bee,_of_course,_flies_anyway_because_bees_don't_care_what_humans_think_is_impossible._Yellow,_black._Yellow,_black._Yellow,_black._Yellow,_black._Ooh,_black_and_yellow!_Let's_shake_it_up_a_little._Barry!_Breakfast_is_ready!_Coming!_Hang_on_a_second._Hello?_Barry?_Adam?_Can_you_believe_this_is_happening?_I_can't._I'll_pick_you_up._Looking_sharp._Use_the_stairs,_Your_father_paid_good_money_for_those._Sorry._I'm_excited._Here's_the_graduate._We're_very_proud_of_you,_son._A_perfect_report_card,_all_B's._Very_proud._Ma!_I_got_a_thing_going_here._You_got_lint_on_your_fuzz._Ow!_That's_me!_Wave_to_us!_We'll_be_in_row_118,000._Bye!_Barry,_I_told_you,_stop_flying_in_the_house!_Hey,_Adam._Hey,_Barry._Is_that_fuzz_gel?_A_little._Special_day,_graduation._Never_thought_I'd_make_it._Three_days_grade_school,_three_days_high_school._Those_were_awkward._Three_days_college. |
| { | |
| "name": "<DOCKERHUB IMAGE NAME>", | |
| "version": "1.0.0", | |
| "private": true, | |
| "publishConfig": { | |
| "dockerhub": "<DOCKERHUB USERNAME>" | |
| }, | |
| "scripts": { | |
| "bump:major": "npm version major", | |
| "bump:minor": "npm version minor", |
| // This is the function to use in the cell | |
| // e.g. =getJSONvalue(A2,"members.0.id") | |
| // note: make sure you use double quotes! | |
| function getJSONvalue(cell, path) { | |
| try { | |
| let content | |
| try { | |
| content = JSON.parse(cell); | |
| } catch (e) { | |
| return `Not JSON: ${cell}` |
| { | |
| "conventionalCommits.showNewVersionNotes": false, | |
| "conventionalCommits.autoCommit": false, | |
| "conventionalCommits.gitmoji": true, | |
| "conventionalCommits.emojiFormat": "emoji", | |
| "conventionalCommits.lineBreak": " ", | |
| "conventionalCommits.showEditor": true, | |
| "conventionalCommits.editor.keepAfterSave": true | |
| } |
| nginx -p `pwd`/ -c nginx.conf |
| # change defaults:docker:image for a different docker image | |
| # change jobs:checkout:steps:restore_cache:keys and :save_cache:key to the file needed for checksum | |
| # change jobs:checkout:steps:run to whatever is needed for dep installation | |
| # change jobs:checkout:steps:save_cache:paths to the paths you'd like to cache between runs | |
| # change task:steps:run:command to the bash command to run | |
| # change workflows:repeated:triggers:schedule:cron to the appropriate cron syntax | |
| # cron reference: https://www.unix.com/man-page/POSIX/1posix/crontab/ | |
| # cron recipes: https://alvinalexander.com/linux/unix-linux-crontab-every-minute-hour-day-syntax | |
| defaults: &defaults |
| My Awesome Sketch | |
| First State | |
| some event -> Second State | |
| Second State |
| curl -vL www.saleae.com | |
| * Rebuilt URL to: www.saleae.com/ | |
| * Trying 151.101.66.49... | |
| * TCP_NODELAY set | |
| * Connected to www.saleae.com (151.101.66.49) port 80 (#0) | |
| > GET / HTTP/1.1 | |
| > Host: www.saleae.com | |
| > User-Agent: curl/7.54.0 | |
| > Accept: */* | |
| > |
| service: my-lambda | |
| provider: | |
| name: aws | |
| region: us-east-1 | |
| profile: personal | |
| functions: | |
| legacyApiTransform: | |
| runtime: nodejs6.10 | |
| events: |