# Preserve the performance first — repeatable music-restoration workflow

NOMOTO MEDIA · Jazz experiment · 8 September 2026
Music and listening direction: Niklas S. Osterman. Technical work: Codex with Logic Pro and local audio-processing tools.

The goal is a faithful, editable foundation before changing instruments or adding composition. This is a practical experiment, not a finished restoration product. A technical pass is not a musical verdict.

## 1. Preserve the recording

Start with the music as it was played. The source was a roughly four-minute MP3 called Jazz, with an old sequenced rhythm and a live marimba/keyboard performance. Niklas tentatively remembers an Ensoniq ASR-10, around thirty years ago.

Make a working copy. Record its file hash, sample rate, duration and decoded frame count. Import an untouched reference into Logic. Keep timing, gain and arrangement unchanged while establishing the baseline.

Today: the complete recording is 249.573878 seconds at 44.1 kHz. The original external-drive MP3 was left untouched.

## 2. Separate the full song into aligned audio

Logic Stem Splitter produced drums, bass, piano, guitar, vocals and other. Each category spans the entire song and starts at the same position. The piano category includes the played marimba/keyboard material.

Keep all stems aligned with the reference. Solo each one, then listen to the combined mix. A category label is only an estimate: bleed, missing detail and extraction artifacts can remain.

Checkpoint: the whole song exists as separate audio categories. That does not mean every original instrument has been cleanly recovered.

## 3. Recover the unchanged combined mix

The raw separated tracks did not sum perfectly to the original. A clearly named restoration correction contains the original minus the stem sum. Adding that residual back restores the combined waveform.

Compare equal-length, aligned renders at the same sample rate. Leave normalization off. Keep the original reference muted during stem playback. The correction is residual audio, not another recovered instrument; recheck it whenever levels or effects change.

Today: a full native 24-bit bounce matched the decoded original within rendering precision. This verifies combined playback, not clean isolation or an improved mix.

## 4. Keep the drum and bass performance

The useful turn came from preserving the recorded rhythm. One 12.8-second cycle became 48 drum slices and 12 bass slices in Logic Sampler, triggered by MIDI at the original positions. A repeated loop lets us check one cycle and reuse it; a changing live performance needs its variations checked too.

Use the 14.2–27.0-second source excerpt for this song: eight bars interpreted at 150 BPM. Preserve attacks, overlapping sound and the 31.75 ms bass carry-in. In this project, automatic sampler zone fades altered playback; a backed-up, format-checked preset fix removed those fades and a native bounce was compared again.

Checkpoint: the verified render reproduced the separated rhythm within 24-bit rounding. These MIDI keys select recorded slices; they are not recovered bass pitches or separately modeled kit pieces.

## 5. Extend the groove for playing

The checked eight-bar cycle was repeated sixteen times: 128 bars, or 3 minutes 24.8 seconds, to provide room for playing instruments over it. Original keyboard audio was retained.

Loop or repeat only the checked region, with its required carry-in and tails. Compare every join. In Logic, loop a region from its upper-right edge; resize from the lower-right edge. Native project timing remains the reference.

Decision: the generated brush Drummer did not follow the original feel closely enough. Keep the recorded drums and bass. The repeated session is a practice arrangement, not the complete original song.

## 6. Try editable notes—and retain the failure

A Basic Pitch transcription of the combined keyboard excerpt produced 58 MIDI notes. Played with a piano sound, it sounded far from the source. Matching a few strong attacks was not enough.

Keep the failed comparison and the listening verdict. Separate the melody from its accompaniment before estimating notes. Check missing notes, extra retriggers, octave errors, durations and dynamics. Some of the lower notes were real accompaniment, not false detections.

Decision: pause the invented piano chords and sax arrangement too. The original marimba remains the musical spine; additions need a clear performance reference.

## 7. Rebuild one short marimba phrase

The revised test contains 21 pitched melody notes over 12.8 seconds. Five tones sampled from the original recording provide the sound. The melody estimate preserves measured timing rather than adding quantization or random swing.

Check each attack and pitch against the isolated reference. MIDI notes 67, 69, 72, 74 and 76 map to five sampled roots. Note lengths control when notes end; the sampler release controls the following fade. Those are separate from release velocity. Save the samples inside the Logic project.

Checkpoint: the notes can drive another instrument. The source-tone instrument is an approximation, not the recovered Ensoniq patch. Only this phrase has been converted; its musical acceptance is still pending.

## 8. Save the mix, the evidence and the next step

After experimental level and reverb changes, a separate full-song project restored the checked baseline. A complete MP3 was exported. The accepted rhythm, rejected attempts and latest marimba test remain separate versions.

Save the Logic project with its audio and sampler assets, aligned WAVs, MIDI estimates, settings and comparison files. Check duration and clipping. Compare one change at a time at sensible matched levels, then write down the listener’s verdict.

Next: judge the 21-note phrase, refine what is audible, and only then extend it. Test additional songs before claiming a reliable restoration product.

## Start another song

Read this workflow and the latest production notebook before beginning. Preserve my original audio. Make aligned stems and verify the combined baseline. Identify a short representative phrase and preserve its measured timing. Label audio stems, MIDI-triggered source slices, estimated pitched MIDI and new composition separately. Make a level-matched comparison, retain errors and settings, and let me judge it before expanding the experiment. Do not assume the last song's tempo, slice boundaries, presets or musical verdict apply to this one.

## What the assistant remembers

The workflow, code, settings, comparisons and listener decisions can be saved and reused. This is accumulated project knowledge, not permanent training of the underlying model. A future task needs to read these records. Repetition alone does not guarantee improvement; each revision needs evidence and listening.

## A route toward direct integration

A first local workbench API was built and tested: inspect explicitly registered audio, convert a saved note timeline into pitched MIDI, and make an RMS-matched comparison from aligned WAV excerpts. A real local HTTP test retained all 21 note pitches and velocities, with start/end times preserved within one MIDI tick. Each processing job saves its settings and evidence; musical acceptance remains pending. It does not yet separate audio, transcribe new recordings or control Logic. Next: send reviewed notes to Logic through Core MIDI. A later Audio Unit could provide an in-Logic interface. No documented public general-purpose headless Logic project API or Stem Splitter API was established in this review.

## Resources reviewed

- [Logic Stem Splitter](https://support.apple.com/en-au/guide/logicpro/lgcp61bae908/mac) — Native separation into instrument categories; the starting point for our aligned full-song audio.
- [Audio to MIDI with Flex Pitch](https://support.apple.com/en-euro/guide/logicpro/lgcpe2fd1b83/mac) — Another native route to audition. Apple documents interpretation errors, especially with chords; it is not a guarantee of recovered original MIDI.
- [Basic Pitch](https://github.com/spotify/basic-pitch) — A callable transcription stage we already tried. Single-instrument input is the useful starting point, followed by note review.
- [Midnight Circuit and the Astra guide](https://kingy.ai/blog/gpt-6-astra-music-ableton-live-guide/) — The linked example supplies editable MIDI and reproducible composition code. Its structure, motif variations and listening comparisons are useful to study; it does not demonstrate faithful recovery of an old recording.
- [Logic virtual MIDI connections](https://support.apple.com/en-euro/guide/logicpro/lgcpa24ebb64/mac) — The documented route for sending notes between a companion app and Logic instruments.
- [Scripter API](https://support.apple.com/en-euro/guide/logicpro/lgce3905a48c/mac) — JavaScript for MIDI processing, timing and parameters inside Logic. Its documented scope is MIDI, not unrestricted project control.
- [Audio Unit extensions](https://developer.apple.com/documentation/avfaudio/creating-an-audio-unit-extension) — A supported route toward an eventual in-Logic effect, instrument or MIDI-processing interface.
- [NeuralNote](https://github.com/DamRsn/NeuralNote) — A macOS Audio Unit, VST3 and standalone transcription interface with source/transcription audition controls and MIDI export. It uses Basic Pitch and is not real-time transcription. A useful workflow to try; not yet tested here.
- [Using grooves](https://www.ableton.com/en/live-manual/12/using-grooves/) — Extract timing and dynamics from a performance, then control their influence separately. Useful to study before transferring a groove; randomization is not a substitute for preserving the original timing.
- [Stem separation in Live](https://www.ableton.com/stem-separation-in-ableton-live/) — A local separation alternative for a future comparison. Its vocals, drums, bass and other categories do not by themselves isolate marimba from piano or recover original MIDI.
- [Creating devices with the Live API](https://docs.cycling74.com/userguide/m4l/live_api/) — An actual documented object model for querying and editing supported Ableton session objects. This is an Ableton integration reference, not a Logic interface.
- [codex-live-bridge](https://github.com/sunflower-of-parchman/codex-live-bridge) — An inspectable Max patch, JavaScript runtime and Python OSC client with acknowledgements and state readback. A concrete design reference for verifying edits. It is Ableton-specific and was not installed or tested here.
- [Astra for professional musicians](https://www.soundformovement.com/learn/gpt-6-astra-for-professional-musicians) — The creator’s account links the public Ableton bridge and describes a broader personal toolset. A useful trail into implementation; the public bridge is not the complete private toolset.
- [Suno Studio 2.0](https://help.suno.com/en/articles/13670529) — Documents MIDI conversion, effects and stem workflows as another possible comparison. Its generated performances and lack of direct DAW sync should not be confused with a faithful reconstruction inside Logic.
