MelodyMorph Free Play
An experimental web reconstruction of Eric Rosenbaum’s MelodyMorph. The original is a creative environment for performing, composing and designing playable instruments. This newly implemented workshop study follows the documented spatial bells, performed phrases and musical paths. It is incomplete and is not an official release by Eric Rosenbaum or an endorsement by him.
Original concept and design: Eric Rosenbaum. Read his 2011 NIME paper, 2015 MIT thesis and demonstration. The archived original code, artwork, samples and example compositions are not bundled. This implementation and its example were created for Alex’s exploration of a faithful web recreation.
What you can explore
Tap a tray bell to hear it, then drag it onto the canvas to place it. Arrange and play bells, draw annotations, make timed paths, and record performed notes into reusable phrase bells. Record earlier phrases together to build a larger musical form. Use Select to drag a box across notes, recorded phrases, paths and drawings. Path lines and their play circles select together. Drag a selected item to move the group; the overlapping-squares icon duplicates it. Keyboard users can also copy/paste with ⌘/Ctrl+C and V. Backspace/Delete removes the selected group, Erase removes individual objects, and Undo recovers them. Tap a bell or a path’s play circle to play it. Strum also triggers path circles. Record and finish a phrase with the circle/stop icon beside the canvas tools.
Tap the record icon again to finish and keep a phrase. Its circle changes to a square in the same position. Tap a playing phrase bell or path circle again to stop it. Landscape at the top right opens file controls, labels, help and credits; the expansion icon hides the tray for more playing space. A secondary Stop all playback action is under Landscape → Playback for interrupting several sounds, phrases or paths together. If recording is active, that action finishes and keeps the captured phrase.
Colored shapes and no note labels are the defaults. Piano surfaces, note names and Jianpu are optional aids. The adjustable Jianpu reference changes labels without transposing notes. These display options and browser controls are adaptations. Paths can trigger other path circles, branch, and loop back to their own start. Crossing another running path’s start circle restarts it from the beginning, as Alex requested for this web version; the inspected archive toggled it off. A path loops only when its final endpoint lies inside or on its own start circle. An ending outside that circle plays once, while already-triggered notes and independent paths finish. Crossing lines alone does not link them. Exact original sound/visual behavior and physical-device parity remain unfinished.
The tool icons are newly drawn SVGs. The pencil and sliding gesture refer to controls described in Eric’s preserved help. These symbols are browser adaptations, not copied original artwork or a claim of exact visual fidelity. Choose English or 中文 in the header. Hover or focus a tool for its name; the active mode and a short instruction stay on the canvas. Tap an active tool again to return to Play. Undo remains beside the tools.
Two fingers on empty canvas pan and zoom. Touches on bells stay independent for chords and movement. Duplicate a selected note pattern, then use pitch up/down to transpose it by semitones without changing the source. Phrase contents and paths are not transposed. Drawing offers five colors and two widths, saved with each line and recoverable with Undo. These drawing options extend the archived white-line tool.
Silent edit is a separate toggle: tap and drag objects without starting new sounds, while running paths and recorded phrases continue. Their play controls still stop them. This is a browser interpretation of the thesis’s mute control. Diatonic shows C D E F G A B in the tray; Chromatic restores all twelve pitch classes. This filter does not transpose or hide notes already placed. The preference saves with the landscape and supports Undo.
Sounds and third-party notices
Round Bass bells use acoustic_bass, Electric Piano uses electric_piano_1, Piano uses acoustic_grand_piano, Vibes uses vibraphone, Pluck uses acoustic_guitar_nylon, and compatibility playback for earlier Bowed notes uses violin from Musyng Kite, the sound library already used in MusEDLab tools. These are study choices, not the original MelodyMorph recordings. Alex requested plucked acoustic bass for the round bells. The archived original used ring-shaped Bass and filled-circle Piano; this requested assignment is documented as an adaptation. Piano now uses a ring, electric piano a square, Pluck a star and Vibes a triangle.
Musyng Kite SoundFont, distributed through SynthFont; pre-rendered MIDI.js packages published by Benjamin Gleitzman at midi-js-soundfonts. The six packages are redistributed unchanged under Creative Commons Attribution–ShareAlike 3.0 Unported (legal terms). Keep the attribution and license links with redistributed samples; adaptations of the sample material retain the applicable ShareAlike terms. No endorsement is implied.
The player runtime is Daniel Gómez Blasco’s soundfont-player 0.12.0 (MIT). Its MIT/ISC dependency notices are retained separately. The repository code license does not replace the sample-content license.
Tool-link QR codes are generated locally with Project Nayuki’s QR Code generator 1.8.0, under the MIT license. The copyright and complete permission notice are retained in the bundled module; its source pin is in the source record.
Your landscape and workshop sharing
Your landscape saves in this browser. Download a landscape file for a portable backup; clearing browser storage can remove the local copy. This build uses no microphone or camera. Central storage, guest uploads and activity creation are implemented but disabled until the service is configured. The optional account flow uses a configured MusEDLab sign-in.
The header Share control opens a tool link and QR; your current music is not included. Versioned activity links are separate: when enabled, explicit sharing creates an immutable symbolic snapshot, including phrase-note events. A reader can choose Make my own for an independent local remix. Map publication requires separate permissions, staff review and explicit publication.
Opened directly, this build sends no exploration events. A workshop host may attach its shared reporter only after its consent controls enable sharing. The integration interface permits finite action categories and basic interface context (language, viewport size and workspace/settings panel), not pitches, drawings, recordings, names, file contents or credentials. The host owns consent, participant/session identity, delivery and researcher access. This build does not create a second tracking backend.
Fullscreen and touch navigation
Fullscreen keeps the play and drawing tools, Undo, the bell tray toggle, language controls and a visible exit. It uses browser fullscreen when available, with a viewport-filling fallback. Play locks the layout; Move enables deliberate dragging and background pan/pinch. These are new browser adaptations. Fullscreen does not change the landscape or audio. Physical iPhone/iPad fullscreen behavior still needs device testing.
Bowed violin is no longer offered in the tray. Its licensed sample bank remains only so earlier landscapes and recorded phrases still play correctly. The five selectable instruments span C3–C6. Pitch − / + audition the changed notes and flash their bells; Silent edit suppresses the audition.