Index

CURRENT

Beta

I am Dimitry Saïd Chamy. Current is one of the tools I am building for audiovisual interactivity and performance. Learn with me as I develop digital instruments for experiences that range from the phone in your hand to participatory immersive environments.

G-code is the path a machine follows to cut, carve or plot. Here every cut becomes a current, and thousands of particles follow it. Load your own G-code, type a word, or let a picture, a video or the camera steer it. Many buttons do more when you hold them (a long press; a right-click on a computer). Each one is marked Hold below.

  1. Source
    A picture, a video or the camera under the field. The camera brings its microphone: the field moves to what it hears. On a phone or tablet, camera is a cycle: tap to open it, again for the other camera (front or back; the label says which), and once more to turn it off. With one camera, the second tap turns it off. With the source drawer open, the gestures place the source: pinch zooms it, two fingers move and turn it (on a computer, scroll and shift-scroll); close the drawer and they spread the field's reach again. drive lets the picture steer the current: tap it on, drag left or right for how much. Its neighbours pick how, along the edges, downhill into the dark or across toward the light, and the detail: fine follows small shapes, medium, soft, or broad for only the big masses. The arrows show the result. trace lays the picture's dark shapes (or light, with dark ink switched) over the G-code as extra patterns, so the current wraps their outlines as well as the word; they follow the picture when you place it, and drive still blends. Tap it again to take them off. remove, which slides in at the start of the source drawer while a source is on, takes it away and gives the stage back to the field, and to the scene you had before a trace
    ‹ ▶ ›
    The scenes: previous, next, or Auto, which morphs through them by itself.Hold any of the three: the list of scenes. In the list, hold a scene to edit its pattern.
    Random
    A new style on the same pattern. Drag up or down for how much changes, left or right for how often it rolls by itself.Hold the random matrix: which values roll.
    Capture
    Tap to take a still, a GIF or a video.Hold the mode, the shape of the frame, and sharing.
    Sound
    On or off: beats, a sound file of your own, or the microphone, that the field moves to. Drag up or down on it for the volume.Hold the sound shelf: stop or play, the beats and bytebeats, your own file, the microphone, then mix (tap to put a beat under the sound, drag left or right to blend the two), wet (tap for dry or wet, drag for how much room is around the sound), when new scenes land on the beat, and whether the sound moves every scene.
    Tools
    The last button holds the tools below. Each opens a shelf above the bar.Hold hides or shows the open tool’s shelf.
    Full screen
    Full screen on a computer or tablet (not on iPhone, where the browser cannot). The space bar, or a three-finger tap on the stage, hides every control (the bar slides down off the screen; the duck-rabbit and the namemark slide up off the top; both fade as they go); the same brings them back. On a computer, while they are away, move the pointer to the bottom of the screen and the bar comes back up until you move away. On a computer the scenes play by themselves from the start.
  2. steer
    Paint direction into the field with one finger; two fingers size the brush. Record your gesture as a loop and play it back.
    color
    The lines, a second color, the ground and the arrows.Hold a color still for your own (a hex value or the color field); hold and drag up or down for its opacity.
    text
    Type a word and it is traced into a pattern. The clock in the word field opens your words: add a few, press the loop, and they take turns on the field (a small loop on the text icon while they play). The F switch picks the typeface.
    magnet
    Pull the current toward your finger, or push it away. Record a magnet loop.
    view
    What shows: arrows, the pattern, the lens glow, the trails.
    frame
    Move, scale and rotate the drawing in the window.
    path
    Edit this pattern, draw a new one (lines, circles, boxes, spirals, stars or the word), or duplicate the scene.
  3. drag
    Push the particles.
    hold
    Keep pushing.
    spread
    The field spreads out from the lines, so the current reaches further around the word or the drawing; pinch to draw it back in close.
    twist
    The strength of your touch.
    picture
    With the source shelf open and a picture, video or camera on, the gestures place the source instead: pinch zooms it, two fingers move and turn it.
    two fingers
    Slide two fingers up or down together for the flow: every speed at once, from ×¼ to ×3, stopping at ×1 on the way. A quick two-finger double tap puts it back to ×1. The flow stays on this device and never changes a scene. On a computer: shift-scroll, or = and -; \ resets it.
    wheel
    Reach on a computer, or the source's zoom with its shelf open; with shift, the flow (or the source's turn); with alt (option), strength.
  4. Any G-code a plotter, laser, CNC router or 3D printer would run can become a current. Open a file from path (in the tools) with open file, or drop it on the stage. It is read on this device and never uploaded. Plain moves and arcs are read; files that use subroutines, loops or variables run only their plain moves, for now.

    Free files
    LinuxCNC’s sample programs (GPL), from the long-running free machine-control project. arcspiral, tort and lathe_pawn make strong currents; many of the others are machine tests.
    Make your own
    svg2gcode (MIT) turns any SVG drawing into G-code in the browser: draw in any vector app, export SVG, convert, open here. vpype-gcode (MIT) does the same from the command line, for plotter people.
    Or skip the file
    Type a word with text, or draw one with path: both are traced into G-code for you.
    From a picture
    Any picture, video or the camera can become G-code too: open it under Source and tap trace. Its dark shapes (or light, with dark ink switched) are drawn as patterns, so a photo you just took, or what the camera sees right now, becomes a current.

What plays, how it moves the field, and a short lesson for each piece of music: tap a lesson to open it, play to hear it, and try to hear a variation (it goes into your Bytebeat box).

  1. Two sounds can play at once: in the sound shelf, mix puts a beat under the sound and blends the two, and the field hears both. Wet adds room around everything you hear; the field still listens to the dry sound, so wetness changes the sound, not the motion.

    Whatever plays is listened to and split into five signals: bass (30 to 150 Hz), mid (150 to 2,000 Hz), high (2,000 to 12,000 Hz), level (all three together) and beat (a sudden jump in the bass). Each rests at zero and rises with the sound.

    A scene that has no sound links of its own still answers: louder makes the particles faster, and each beat makes the field stronger for a moment. Scenes with their own links (the Beat and Byte scenes) say exactly what moves what.

  2. Five beats, synthesized here (no recordings): a kick, a snare, a closed hat and a bass note on a grid of sixteen steps to the bar.

    four
    Four on the floor, 120 bpm: a kick on every beat, the snare on two and four, hats between. The steadiest pulse; best for beat.
    broken
    Broken 96: the kick lands off the beat, so the field lurches instead of pumping.
    half
    Halftime 70: the snare only on three. Slow, heavy, lots of space.
    fibo
    Fibonacci 110: kicks on steps 1, 2, 3, 5, 8 and 13, so the gaps grow 1, 1, 2, 3, 5. Hats on every step, so high never rests.
    pulse
    Pulse 60: one kick a bar and one hat. Almost silence; each event reads clearly in the field.

  3. A bytebeat is a whole piece of music written as one line of arithmetic. A counter, t, goes up 8,000 times a second. The formula turns each value of t into a number, and the last eight bits of that number (0 to 255) are the height of the sound wave at that instant. Nothing is recorded and nothing is sequenced: rhythm, melody and texture all fall out of the arithmetic.

    Three moves do most of the work. Shifting slows a counter down: t>>10 goes up by one every 1,024 steps, about every 0.13 seconds, so it counts musical steps. Multiplying raises the pitch: t*m is a buzzy sawtooth at 31.25 × m Hz. Masking with & keeps only some bits, which switches notes on and off.

  4. t*(42&t>>10) The step counter t>>10 is masked by 42 (binary 101010), so the multiplier walks through 0, 2, 8, 10, 32, 34, 40 and 42: silences, low notes and high notes, in a fixed order that repeats every 64 steps (about 8 seconds). That is why it sounds composed. Called the 42 melody; at least three people found it on their own.

    t*((t>>12|t>>8)&(n*7)&t>>4) A slow counter (every half second) and a faster one (every 32 ms) are combined with | to make the steps of the ladder. Masking with t>>4, which flickers every 2 ms, makes each note buzz like a fast arpeggio. n decides which bits may sound: n 9 gives 63, every note; n 1 gives 7, only the low ones.

  5. t&t>>8 The slow part of the counter masks the fast part, so bits of a ramp get through only when the slow bits allow. The pattern repeats inside itself at every scale; drawn as a picture it is a Sierpiński triangle, which is why these are called Sierpiński harmonies. One cycle lasts about 8 seconds.

    t&t>>((l>>1)+5)|t*2&t>>(o+5) Two fractal layers, the second an octave up (t*2), laid over each other with |. l sets how slowly the first layer unfolds and o the second; when they differ, the two patterns drift against each other like threads in a weave.

  6. t*2&t>>9|t*3&t>>8|t*(p+2)&t>>10 Three voices at pitches in the ratio 2 : 3 : p+2. With p at 2 that is 2 : 3 : 4, an octave and a fifth: open, like a power chord. Each voice is gated by a counter of a different speed, so they enter on different rhythms and the chord keeps re-voicing itself. Move p: 3 gives 5 (a major third), 4 gives 6, 5 gives 7 (the bluesy seventh of the harmonic series).

  7. t*(((t>>9)^((t>>9)-1)^1)%(n+3)) Here the step counter (every 64 ms) is compared with the step before it. That comparison is small on most steps and grows on every second, fourth, eighth and sixteenth step, like the marks on a ruler, so accents arrive in waves of doubling size: a tide. % folds the result into n+3 values, so n picks which notes the waves land on. Every other step is silent, which gives it its pulse.

  8. In the drawer, under Bytebeat, the letters n, l, o, p and the rate are sliders. Change one and the playing song changes at once. Each has its Auto mark (a half wave with a dot) at the end of the row: give it a shape (sine, triangle, random steps…) and it moves by itself between a low and a high you set; or give it x or y and your finger plays it. While Auto runs, the slider's knob goes hollow, a band shows where it moves and a dot rides along.

    x
    Where your finger is across the screen: nothing at the left edge, all the way at the right.
    y
    How high your finger is: nothing at the bottom, all the way at the top.
    touch
    How fast your finger moves.

    The four Byte scenes are played by your fingers already: drag across the screen to move the letters and up for the rate; lift and the song settles back. (Fingers paint direction instead while steer is on.)

  9. Hold the speaker and tap write (or open the drawer to Bytebeat) and type in the box; Ctrl/⌘+Enter or Play formula. While yours plays, playing again swaps it without stopping the clock, so you can change it as it runs. Yours is kept on this device.

    t
    The counter, 8,000 a second.
    >> k
    Slower by half, k times over. >>10 is about a step; >>13 about a second.
    * m
    Higher by m.
    &
    Keep only the shared bits: gates, rhythm.
    |
    Either: layers.
    ^
    One or the other: odd, glassy mixes.
    % k
    Fold into k values: a scale, a loop.
    n l o p
    The sliders. a b c are 4.

  10. Bytebeat was set off in September 2011 by viznut (Ville-Matias Heikkilä), with a video of seven one-line C programs, and grew in the communities that took them up. He wrote it up that December in Discovering novel computer music techniques by exploring the space of short computer programs, which also tells how the 42 melody was found separately by at least three people, and why t&t>>8 and its relatives are called Sierpiński harmonies.

    The engine here, and the ladder, weave, chord and tide formulas, come from Bytebeat Reef, a sister instrument in this studio. The five beats are written for Current.

Mode
Clock
View
My formulas

Automation for the picture, video or camera: give any of these Auto (sine, noise, the beat, your finger…) and it moves on its own, on top of where you placed it. The auto button in the source drawer turns it all on or off; hold it to come here.

Current

G-code in. Beats and dancing particles out. The field is your playground.

Scenes
Morph
Field mode

Inside closed shapes

Type
Word lens

The word above, blurred and invisible, bends whatever field is underneath.

Audio

Built-in beats or your own file. Bass, mid, high, level and beat become Auto sources and mapping sources.

0.60
1.00
Changes land on
Field & particles
Mapping

One value drives another. Push passes on the source's movement; follow makes the target track it (negative inverts). Rows run top to bottom.

Read from G-code
Line color
Second

Ground
Arrow color
G-code
  1. Dimitry Saïd Chamy is a Miami-based artist, designer and cultural producer with roots in Haiti and Lebanon. His work moves between brand identity, installation, projection and live visuals, curating, writing and social practice, and engages diaspora, hybridity, colonial history, class and climate justice.

    He holds an MFA from the Yale School of Art. He publishes his art through CHAMY·XYZ, where Current is made, and runs 2urn, a design studio that builds its own software.

  2. As an artist, educator and designer, I believe in engaging with technology and blending the old with the new. By understanding the dangers and sharing the potential of the powerful technologies shaping our future, we shape our agency and build new literacies that center our humanity.

  3. Current stands on ideas, methods, standards, open-source code and open typefaces. Each is credited below, the foundations first, even where our code is new, with its license where it has one. I support exploring open source, and sharing back what is learned.

  4. AI:RATIORubric v1.0 · self-reported
    Human contribution
    69% Human
    Human-Led · AI-Assisted
    Human 69%AI 31% · code, with Claude
    Execution · hybrid58

    Prompting & direction · deep88

    Ideation & research70

    Curation · rubric default50

    Self-assessment70

    • 100% non-AI in useNothing Current shows, plays or makes comes from a generative model. The field, the sound and every capture are its own code, running in your browser.
    • The record111 of 178 recorded changes started from the artist’s direction, question or bug report: what it is for, how it feels to play, what was not working.
    • Foundations, kept apartThe people and ideas it stands on are credited under Open source, and are not counted in this score.
    Disclosure

    Current was created by the artist with AI assistance in code generation (Claude, Anthropic). The concept, creative direction and final decisions are human-authored.

    Weights: execution 35, prompting 30, research 15, curation 12, self 8. Informational, not legal advice. airatio.art

    Current is made with AI-assisted development, in conversation with Claude (Anthropic), and says so. I support exploring that openly: naming the tools, showing the ratio, and keeping the decisions with the artist. It is one part of a studio system: built on Surface, the shared kit, alongside its sister tools.

  5. Scenes, gestures and captures are kept in this browser. Camera and microphone, if you turn them on, never leave the device. Adding a typeface by name loads it from Google Fonts.

  6. For live performances, workshops, exhibitions, consulting, collaborations or collecting, I’d love to hear from you.

    hi@chamy.xyz

    Instagram @2urn_

    • Free for personal use. You may use Current, here or installed on your own devices, for your own non-commercial play, study, teaching and making.

      Not for commercial use without a license: performances, installations, broadcasts, client work, products or anything sold or paid for. To ask, write to hi@chamy.xyz.

      What you make. Stills, GIFs and videos you capture are yours to keep and share for non-commercial purposes; please credit “Current by Dimitry Saïd Chamy”.

      The tool itself — its code, scene and name — stays © Dimitry Saïd Chamy / CHAMY·XYZ. Do not copy, modify, redistribute or resell it. The open-source parts listed above keep their own licenses.

      As is, no warranty. Current is an experimental tool provided as is, without warranty of any kind. To the fullest extent the law allows, the author is not liable for any loss, damage or claim arising from its use, including to your device, your data or your work.

      Your safety. Current can flash and move quickly. If you are sensitive to flashing light or motion, take care, and stop if you feel unwell.

    • Current , beta. Still changing: features may move, and some things may not work yet. Your saved scenes and gestures stay in this browser as it updates.

      Build . When a newer version is out, the page offers it with an Update button; installed on a home screen, it updates the next time it opens online.

      Something not working? Write to hi@chamy.xyz with what you did, your device and browser, and this build.

    • Current is in beta. Some new features will become part of a Pro version. Anything that has been free here stays free.

      We try our best to make Current work well everywhere. If something breaks or gets in your way, write to hi@chamy.xyz. ADA accommodations are available on request.

    © 2026 Dimitry Saïd Chamy / CHAMY·XYZ. All rights reserved; free for personal use under the license above. The credited works are their authors’.

    Your color
    #
    recent
    Typeface
    Add a font

    Fonts you add stay in this browser. Only add fonts you have the license to use.

    Texts
    Batch pro

    How it works

    The microphone moves the field: its sound is split into bass, mid, high, level and beat like any other. Nothing is sent anywhere.

    • voice cleans the sound up for speech and cancels echo; raw keeps every sound as it is.
    • gain lifts a quiet mic. gate lets only sound above its line through (the mark on the meter), so room hum stays still.
    • heard sends the mic to the speakers too. With speakers and raw sound it feeds back: that howl is yours to play. Distance, gain and wetness shape it; a limiter keeps it from getting dangerous. Headphones keep it clean.
    • loop records a phrase from the mic and plays it as its own channel in the mixer. free is tap to start, tap to stop (8 seconds at most); 1, 2 or 4 bars start on the next bar line of the beat playing and stay in time. reverse plays it backwards.
    • A video holds the mic as the capture panel's sound row says; when heard, it is in the music side as well.

    Touchable sound lets the hand that steers the particles play the sound too. Each preset is a finished recipe: Fader brings the music up the faster you drag and lets it settle when you stop; Sweep opens a filter as your finger rises; Pan follows your finger left to right; Wash builds reverb while you hold still; Tide plays the bytebeat with your drag. Pick up to two at once. Videos you capture record it. With Pro, Touch Mapping will let any gesture shape any part of the sound, several at once, saved as your own touch rigs.

    The field follows the mix as set here: level, mute (M) and solo (S) for each sound. The mic's level is how much it moves the field and how much of it a video holds; whether you hear it is set in the Mic tab. The loop is the phrase recorded there.

    Tap or drag across the steps. Sixteen steps make a bar; each lighter block of four is one beat.

    Edits are heard on the next step while it plays. Save puts the beat on the sound shelf and in the mixer’s beat channel; tap tempo still sets its speed.

    Three saved beats are free. More saves, export and MIDI will come with Pro; Founders Club members can get Pro free.

    One expression in t. Play formula or Ctrl/⌘+Enter.

    • t counts at the clock, 8000 times a second unless you pick another.
    • byte reads the result as 0 to 255, signed as −128 to 127, float as −1 to 1.
    • Strings and lists are lookup tables: t*("36364689"[t>>13&7]&15) plays a melody. A pair [left, right] is stereo.
    • n l o p are the sliders below; each can take Auto or a mapping. a b c are 4.
    • Away from the box it shows the numbers the sliders send; View pins the letters.
    • While it plays, the button stops it, or reads Play changes after an edit and swaps them in. Undo edits puts back what is playing.

    Lessons for each built-in bytebeat are in the index, under Sound.

    Random
    Field
    A capture of the pattern field
    Share the piece

    Plays wherever the page is public. A private claude.ai link will not load for other people.

    CURRENT

    Beta · v

    order · drag to reorder
    0 outlines · pinch to zoom · ○ start · › direction