Only Learn
Catatan riset di balik setiap reel @only_learn0: uang, karier, dan psikologi sehari-hari, lengkap dengan sumber dan level buktinya.
Translation pending
Toaster hears whatever is playing and writes it out as live Strudel code in front of you: the beat, the bass line and the chords, typed out over visuals that move with them.
MediaGitHub @StopBanningOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
Hears whatever's playing and writes it out as live Strudel code, with visuals that move to it. Free in your browser, or as a Windows and Mac app.
Taken from the repository README
Loading the full README.
Read the full README ↗Toaster hears whatever is playing on your Mac or PC (Spotify, YouTube, anything) and writes it out as live Strudel code in front of you: named lines typed into a blank window and lighting up as they play. Around the code: every hit as a domino, a little world, a handheld rhythm game, or your webcam with effects you work with your hands. Toaster, as in Toaster Strudel.
Try it in your browser · Download for Windows or Mac
It finds the beat, the kick, clap and hats, the bass line, the chords and the key, and keeps rewriting the code as the song moves. It's a live reconstruction for show, not an exact transcription.
Windows 10 or 11, or macOS 13 or later. A webcam is optional.
Windows. Download Toaster-<version>-win-x64.zip from the Releases page,
unzip it anywhere and double-click Toaster.exe. The first time, Windows may say "Windows
protected your PC" (the app isn't signed): click More info, then Run anyway. It starts
listening straight away; there's no prompt.
Mac. Download Toaster-<version>-mac-universal.zip from the Releases page
(one app for Intel and Apple silicon), unzip it and drag Toaster into Applications. It isn't
signed by Apple, so the first time the Mac won't open it: open System Settings → Privacy &
Security, scroll down to Toaster and click Open Anyway. It asks to record system audio. Allow
it. That's how Toaster hears what's playing; it doesn't record the screen, and the camera stays off
until you press C.
Play some music: within a few seconds it finds the beat and starts typing. Press ? for the keys.
Updates. When a newer Toaster is out, it offers it a few seconds after it starts. On Windows, say yes and it downloads it, checks it against the checksum GitHub lists for it, closes, and opens again as the new version (your settings stay); on a Mac it opens the release's page. You can turn the check off in the help (?). The first time a new version opens, it shows what's new in it, each with its key, and the help keeps the latest additions at its top.
These are the keys as they come; every one can be changed in the help (?): click a key, press the one you want (a key that's taken swaps over). Esc, ? and F11 stay put. The help also has report a bug: Toaster writes a GitHub issue for you to read, edit and send yourself.
| Key | Does |
|---|---|
| S | audio source: system audio, demo beat, file, input, radio |
| V | background, best first: scenes (a new one each song), worlds, chrome, spaghetti, spectrogram, cuts, fire, the code rain, off (each described under Backgrounds). The background button in the bar opens a picker with a picture of each, under five presets that set up a whole look in one click: live coding, visualizer, handheld, the Japan edition and for TikTok |
| A | the next one of whatever's showing (the footer says which). With the worlds on, their look: auto (film, and on each drop another look for 8 bars), night (as auto, but every world keeps a dark sky with its stars, so no cut lights the whole screen; with fewer flashes on, the worlds always have night skies), film, ASCII (the planet as text, each character in its own colour), thermal camera, and cells, the planet cut into cells of the worlds around it, turning over cell by cell into the next on each cut (after Days of Glitch's moving cells). A print look covers the planet, or the sky when the code sits over the planet. With chrome, A turns its collage off and on; with the spaghetti, its noodles: snakes (a card each time round, a few of its noodles dancing) or endless (the cover stuck on top, the machine never stopping, each noodle the cover again and again, spreading over the floor on the kick and dripping off it); with the spectrogram, it switches its colours between the rainbow and the theme's own; with the scenery, its scene: auto (a new one each song), the lake, the sea, the campfire, the snow, the city in the rain, the garden, the falls, Halloween, the sharks, the festival, the koi pond, space, the eye, and last auto again in the theme's two colours. With the handheld game on (P), A goes round the game's screens instead: Toaster's own (in the theme's colours), neon, an old LCD, and the Japan edition (Toaster's own in Japanese, in black and white, on a cream and red handheld after the Famicom: its screens, its cartridge and its power-on in katakana). Remembered |
| P | the code look, over whichever background is picked, in turn: dominoes (after mewtw0o's domino piano roll): every hit of the code stands as a domino that the playhead knocks over as it plays, landing on its beat and leaning on the one before when it's close, a held bass note a slab on legs that glows while the note holds and falls when it ends, a chord's notes one behind another; the handheld game (after mewtw0o's handheld rhythm game): the song played on a little two-screen handheld of our own, the kick, clap, hats and bass falling down their lanes onto their targets as they're heard, each judged by how near the real hit came (PERFECT, GREAT, GOOD), the combo and score climbing and a MISS when a part drops out; under it a 4 x 4 of pads, the drums and the twelve notes up from the song's key, lit as the bass and the chords play them, and now and then that screen turns into the code instead, its parts typing in as Toaster types them, a page at a time on the bar lines; its buttons go down with the drums, and a drop is FEVER, points doubled, for two bars (in the tall layout it fits in under the code, in place of the pitch roll). It powers on like an old handheld each time it comes on: its light, the screens flickering awake, the logo dropping in with a ding, a self-test of the song's parts, PRESS START. With no beat to play it stands by instead of going away: picked with nothing playing it says PLAY ANY SONG, with a song coming in READING while it finds the beat, and when the music stops CONTINUE? and a count, then GAME OVER; it powers on again when the music's back. On the pink theme it comes in a pink edition; then the punchcard blocks; then none. Remembered |
The background, code look, card, theme, camera effect and drop-effect choices are remembered between launches, and so are the keys and the radio's address; the camera always starts off.
V steps through them, best first: the scenery, worlds, chrome, the spaghetti, the spectrogram, cuts, fire, the code rain, off. A changes the scene or the look (see the keys above).
Spectrogram is what Toaster hears, as a landscape, and what it makes of it: the sound rises out of a floor in glossy hills, the frequencies across it (the bass at the right, the highs far off to the left), a bar of time rolling toward you from the back, louder taller and further up a rainbow from orange through green and blue to violet and white (after the 3D spectrum analysers); a faint line crosses it on each beat and a bright one where the chord changes, named at its end, and each time Toaster recognises something a pin rides along with the code it became, bd on a kick, cp on a clap, hh on the hats, each bass note as the code writes it (e1, a3).
Cuts gives each drum a scene of its own, cut to on its hits, each a view of the song in Toaster's look: the drum's word huge, its line of code magnified, its 16 steps as a punchcard, the spectrum falling in dots, the waveform, you or the cover in big dots, the tempo and key, the spectrum as text mirrored both ways like a kaleidoscope, a tunnel of rectangles flowing out (those two after rentalunit5's video-synth pieces).
Fire is the old Doom fire in square pixels, lit by the song: it burns steady along the bottom, a little lower where the spectrum is quiet (the bass in the middle, the highs out at the sides); the song sets how high it reaches, the kick lifts it and the hats spit sparks. It burns low under the code, and smoulders while the song is quiet. When it comes on, and on every drop, it flares, leaping to twice its height and dying back (an idea from not.axel on Threads).
The code rain is your code's own characters falling down the screen in streaks, faster as the song gets louder.
Worlds is a film of planets, after Anthropic's Claude Opus 5.5 launch film: the kick on each bar's one cuts to another world on the same horizon (every other bar with fewer flashes), an extreme close-up of something (honey, agate, lace, a leaf, bread crust, plant cells, oil on water, a circuit board, the code itself) seen as a planet from low orbit, the foreground soft, gold dust in the air; when the kick drops out the film rests on a horizon at dawn till it's back.
Chrome is a pool of liquid chrome seen from above with an oil-slick film on it: every kick drops a bead where it lands in the bar (so the rings spell out the kick pattern), claps strike lightning in the sky it mirrors, the bass swells it and each chord gives the film its own colours (real thin-film interference over the visible spectrum); every two bars a collage cuts into it: mosaic, dragged rows, a barcode, the liquid's contour lines, a dither, graph paper, and a panel with the song, artist, key and tempo.
Spaghetti is the song's cover (or, without one, one of a dozen bundled public-domain pictures: Merian's banana, Seba's serpents, Brueghel's ark, Morris's Strawberry Thief and more) fed through a chrome pasta machine clamped to a kitchen table, on a tiled floor floating in the theme's colour: each time round the picture drops into the slot as a card, and from the next bar line the crank turns a beat at a time, lurching on the beat's hits, and out it comes underneath as spaghetti, each strand a column of the picture, flicked off as it leaves the rollers, falling in a low gravity, bouncing and piling up with the last two sheets', hopping on the kick, a few of them coming alive as snakes and dancing to the beat (a bounce on the beat, a dip on the kick, a pose on the snare, a roll up the body with each bass note, a jump on a drop), out among the others or in a ring round a soloist. With A, endless: the cover stuck on top and the machine never stopping, each noodle coming out without end, the cover again and again along it, the heap spreading over the floor on the kick and dripping off its edge.
The code is typed the way a live coder performs it: a part that stops gets a _ in front of its name
(Strudel's mute) and loses it when it comes back, a part never heard yet stays a comment, and a
change lands on the next bar line, the way ctrl+enter on the downbeat does (the line flashes, and
the rest of the code with it). Now and then a closing bracket gets left out: a red error shows,
then the caret goes back to fix it.
.lpf(slider(850, 100, 4000)) (Strudel draws a slider in the code
for that); a thin track under each shows where the value is in its range, and when the music's
filter moves, the number slides there instead of being retyped, like dragging the slider..lpsync(8).lpdepth(3) for the 8ths, with some
resonance and grit. The export writes it the same way..duck("2:3").duckdepth(.6) and the bass line and chords go on orbits 2 and 3, the way you'd
set that up in Strudel. The depth follows how far they dip.// breakdown while the kick is out for a bar or more, and // drop for
the first 4 bars after a drop.Videos\Toaster on Windows, or Movies/Toaster
on a Mac, as an MP4 ready for TikTok, Shorts and Reels. Switch to the vertical layout (L) first
for a 1080 x 1920 video; it keeps everything clear of the edges Reels and TikTok trim on tall phones.Music\Toaster on Windows, or Music/Toaster on a Mac: a
MIDI file (drums, bass, chords and lead on their own tracks) and Strudel code, each phrase
written once and played in order with arrange(). Paste it into strudel.cc and press
ctrl+enter.More on all three in docs/how-it-works.md. Filming Toaster for a video? docs/creators.md has the setup, the take, and how to carry on in Strudel.
Toaster makes live visuals for a set: it follows the beat, and the scenes answer the drop.
Everything Toaster hears and sees stays on your machine. The sound is worked out in the app, and the camera (off until you press C) is looked at by the system's own face detector (Windows' face detector, or the Mac's Vision framework) and by Google's MediaPipe, both running on your machine. Nothing is uploaded. It reaches the internet for three things only: GitHub, when it starts, to see whether there's a newer Toaster (turn that off in the help, under Updates), strudel.cc when you press O (your browser opens it with the code in the link), and the radio while it plays: its stream (from the server at the address you typed) and, for each song, the song's artist and title, sent to Apple's iTunes Search to find its cover (with what any web request carries: your IP address and the app's name and version); the cover is fetched from Apple's image server.
The site, toaster.locust.lol, works the same way: your audio never leaves your device. The site counts visits anonymously (Cloudflare Web Analytics, no cookies) and asks GitHub for the project's star count.
With Node.js (it's built with Node 24):
npm install
npm start # run it
npm run dev # run it with a debugging port (9333) for tools/cdp.mjs and tools/checks.js
npm run package # build for the OS you're on: dist/Toaster-win32-x64, or dist/Toaster-darwin-universal
On a Mac, npm start compiles the Swift helpers (now playing, and faces) the first time, with
Xcode's command line tools. npm run package:win and npm run package:mac build the other OS's
app; the Mac app has to be built on a Mac. Each release's Mac app is built on GitHub's Macs
(.github/workflows/mac.yml), signed ad hoc.
How it works inside, and the test songs it's checked against: docs/how-it-works.md.
Made something with Toaster? Show it in Discussions, or see CONTRIBUTING.md to build on it.
Toaster is MIT licensed (LICENSE). It uses Google's MediaPipe (Apache 2.0) for the camera; THIRD-PARTY-NOTICES.txt lists everything it uses and the artists whose looks it's after. The code it writes is Strudel. Toaster is an independent project, not made by or affiliated with the Strudel project.
If Toaster made you smile, a star helps more people find it.
| R | the orb: a cloud of dots in 3D shapes over any background (a sphere, a crystal, orbit paths, a galaxy and more), flowing into the next every 8 bars; again to turn it off |
| [ / ] | blocks sync fine-tune: ] if they land after the beat, [ if before (10 ms a press, remembered) |
| C | webcam behind the code, tinted to the theme. Press again for big eyes: little windows over your face with your eyes and mouth blown up, swelling on the kick (after lo.fi.sci.fi's segcam effect). Again for ASCII: the camera drawn as text (dense characters where it's bright), in place of the ASCII background. Again for off. The camera is mirrored, as a selfie view is; to see it as the camera sees it (to point it at your gear, say), untick Mirror the camera in the help (?) or pick camera: not mirrored in Ctrl+K. Remembered |
| (hands) | with the camera on, make a frame with your fingers (each hand an L: index out, the other fingers curled, the thumb wherever) and a window opens between your fingertips showing what's inside through a filter (16 of them: dithered blue and pink, negative, heat camera, the theme's colours and more; the first, keyframes, changes colours on every kick). It's a card with a filter on each side: turn one hand over and its end twists round to show the back; turn the whole card over and the back becomes the front. Flick it edge-on and back, bunch one hand's fingertips together, or wink, for the next filter. Pinch one hand (thumb on index) for a triangle; pinch both together, or open your hands, to close it. Keep your hands a little inside the edges of the picture: the tracker loses a hand that's half out of it |
| (portal) | with the camera on, make a circle with your hands (the tips of your index fingers together and your thumbs' tips together, one pair above the other; a diamond or a heart works too) and hold it a moment: a round window opens in it with a look inside: first your skull (make that circle in front of your face: an X-ray, your skull in it where your face is, turning as your head turns; it stays till you pinch or swipe on), then x-ray (white edges, with echoes spreading out from the middle), lilac (pale and grainy), glass (you gone clear, the room bent through you as through liquid glass), a kaleidoscope turning with the beat, a time tunnel (each ring further out a moment further back, so moving sends ripples through time), and the finger frame's heat camera, comic, pencil, RGB split, neon edges, mosaic and more. Pull your hands apart and it grows between them; spread them wide and hold them there a moment (its outline thickens), or spread them on out past the picture's sides, and it fills the camera's picture, with you cut out in front of it as you are (the code stays on top). Pinch (thumb on index) for the next look, spreading out from that hand (pinch again while it spreads for the one after); every 8 bars brings the next one too, from the middle (but for the skull). Once it fills the picture you can swipe as well: hold one open hand up a moment, then sweep it sideways, fast, and the look slides in after it (to the left for the next, to the right for the one before). Drop your hands and the window closes; once it fills the picture it stays till you make the circle again, which can be looser than the one that opened it. Hold the circle on after a window closes and the next one opens (after cure.visual's TouchDesigner portals) |
| (signs) | with the camera on, hold up a hand sign: ✌️ (two fingers up) for the next theme, 👍 (held a second) to start or stop recording, ✊ (one raised fist; two up, a flex, don't) to hush, 🖐 (an open hand) to come back from it. Each fires once a hold (the header shows the sign while you hold it), and none while the finger frame or a portal is open |
| O | open this code in Strudel: your browser opens strudel.cc with the code in its editor (in the link, after the #), ready to play with ctrl+enter and change, starting where the song is (on the bar of its four that was playing when you pressed O). The vox line becomes the same notes on a synth (Strudel has no "vox" sample), and a punchcard of the whole thing draws under the code |
| M | record a video: what's in the window with the sound, into Videos\Toaster on Windows or Movies/Toaster on a Mac (see Saving things below). M again to stop |
| J | drop clips: while on, the first two drops of each song are saved as videos of their own, the build-up and the drop, into that same folder (see Saving things below) |
| X | export the song so far, decompiled: a MIDI file and Strudel code, into Music\Toaster on Windows or Music/Toaster on a Mac (see Saving things below) |
| Space | tap the beat: from the fourth tap the tempo is yours, the beats on your taps and the first tap starting a bar. For a song it can't find the beat of (soft songs, rubato) or finds wrong. It stays until the song changes (the hits still fine-tune it), and a pause of 2 seconds starts the count over |
| Q | hush: every part muted with a _ in front of its name, the way Strudel's hush() stops everything, and the background dimmed (the sound itself keeps playing). Q again, an open hand or a new song brings it back |
| K | camera effect: none, cut-out (just you over the visuals: where MediaPipe's selfie segmenter finds a person, the rest of the picture goes see-through, and the camera moves up over the backgrounds), slit-scan (each row a moment later than the one above, so anything moving bends down the picture), datamosh (what a video codec does when it loses its key frames: the picture melts along with whatever moves, and comes back fresh on every bar line), windows (the room gone, you only through little windows that pop open wherever you move, each keeping its moment, so moving leaves a trail of them, a burst on each kick, one on your face; after lo.fi.sci.fi's segcam), glass (you gone clear: the room, in colour, bent through your shape as through liquid glass, light glinting off its edges, the bend sharper on the kick; the room behind you is learned as you move, so step aside for a moment and it comes out clean; after ttyproj's "Transparent Distortion", made in TouchDesigner), dots (you as a neon dot matrix: each spot of the picture a round dot as big as it is bright, violet in the shadows to pink nearly white, with teal edges, the room faded to a faint grid; the kick swells the dots and each new chord slides the colours; after decayingsun's "dream machine"), voxels (the camera rebuilt as a room of cubes, each the colour of its patch of the picture: where the selfie segmenter finds you, your cubes stand out from the wall, a tiled floor runs out from its foot, and the view, from a little above, swings slowly side to side; the kick swells the cubes and lifts their light, yours most; after ntrxcam's voxel camera). The first three work on the ASCII camera too, and with it the windows show you as text. Remembered |
| N | now-playing ID card: song, tempo, key, and your webcam as a 1-bit dithered picture (with the camera off, the song's cover from Windows if the player gives one, or the radio's from the iTunes Store, in finer dots and sharpened so its lettering survives, else the sound). N again makes it big (the cover or you in big dots, as big as fits), a third time puts it away. On by default in the vertical layout, each layout remembers its own setting. In the mini player it's the big one shrunk to fit beside the code |
| D | the drop, now: the drop effect (it also fires when the kick returns after a 3+ second break), and the backgrounds' drop moments: the scenery's toast pops, the koi gather, the sharks charge, the fireworks go up, the fire flares. With B set to off, just the backgrounds'. With the camera on, some pop-ups close in on your face or one eye (one on a little CRT screen) |
| B | drop effect: XP takeover, blue screen, not responding (Windows XP's hung-window smear: the cursor drags a toaster.exe window round a figure 8 for 4 bars; it hangs, leaves a copy of itself every 8th, and shows the visuals under it in a new look every beat, negative, thermal, cyanotype, a green CRT, edges, dither, x-ray; then the trail rewinds), off. Off until you pick one |
| I | machine readout (const machine = {...}) |
| L | vertical 9:16 layout for TikTok/Shorts (resizes the window) |
| W | mini player: the window shrinks to a small panel in the corner, on top of everything else, still listening (the code, and the card if it's on); W again brings it back. With the handheld game on, the handheld goes on your desktop on its own instead: no window round it, just the device and its shadow over whatever's there, on top; drag it anywhere, and Esc, W or its x brings Toaster back |
| T | theme: bluescreen, blackscreen, terminal, pink, whitescreen, dynamic (the colours of the song's cover, from your music app, the radio or a file's own, easing over to the next song's; after golden by Jon Soini) |
| G | the library, a panel over the visuals: your music from a folder you pick (its albums, their covers drawn in characters, the ones played lately on a shelf, with the player bar's next and previous; Ctrl+F finds a song as you type, Shift+R picks what repeats, Shift+S shuffles, and after a restart it opens where you left off), the radio stations you've played (the latest first, or paste another), and scenes: the whole setup (background, theme, code look and layout) saved by name, beside the presets. Esc or G closes it. After golden by Jon Soini |
| Y | CRT: an old TV over everything, on any theme. It comes on from a white line opening into the picture and goes off into a dot; scanlines and phosphor stripes, a flicker and a band rolling down it, glare on the glass, the corners rounded and dark, the code fringed red and blue and glowing. The picture swells on the kick and slips into static on the drop; each background (V) is a channel, changed through static with its number in the corner, VCR green, and the theme (T) shows there as the picture setting. With fewer flashes, it stays still: no flicker, roll, static or white line. Remembered |
| E | name the song yourself |
| Z | hide the code: just the visuals, for Toaster as a visualizer. Again for the code without its beat (the drum lines and their grid), for music with no pulse, and again for all of it (it's still written underneath). The scenery opens out into the room the code kept: the sharks' float and the koi's lily pad come to the middle, the festival's stage moves to the middle, and in a tall window Halloween's moon rises into it. Remembered |
| H / F | hide header and footer / fullscreen |
| (bar) | the player bar along the bottom: the source and the song, only the buttons that source has (play and pause, skip, and a progress bar where it knows its place: a file, the radio, the demo, Music and Spotify on a Mac, the media keys on Windows), and the tempo, key and bar. H hides it with the footer, Z's visualizer mode shows it only at the bottom edge, and recordings leave it out unless the help says otherwise |
| Ctrl+K | everything by name: every action, scene, background (the classics too: warp, spiral, tunnel, pitch wheel, spectrum and scope), code look, handheld screen and theme. Type a few letters, then Enter |
Scenery is the calm one: little worlds drawn in solid colour, characters and pixel art (it began as an ASCII landscape, after Claude FM's ASCII world): snowy mountain ranges, lit on the face toward the light and shaded on the other, mist in the valleys, a shore of pines and trees in blossom, a lake that mirrors it all, a meadow of grass and flowers, and a little toaster fishing from a rowboat out on the lake. On a light theme it's day (a sun, clouds, a flock of birds); on a dark one, night: a full moon, a sky of stars by the real counts with the Milky Way across it, fireflies over the grass. It glides past a step a beat, each kick ripples the lake and dips the toaster's float, the grass sways and the fireflies blink more when the hats are busy, the toast pops up on a drop, and every 8 bars birds cross or a star falls. A picks the scene, or auto, a new one each song: