openjutsu
영상에서 원클릭으로 인물 교체, ComfyUI·MiniMax H3 기반 오픈소스 로컬 힉스필드 겐주츠 대안, FLUX.3 Klein 재조명 지원
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Custom MIDI LFOs (low frequency oscillators) for the Teenage Engineering OP-1 Field synthesizer. Controls per-track volume, pan, mute, FX, LFO parameters, and master FX/compressor parameters with beat-synchronized automation curves. Handles these OP-1 tempo modes:
BEAT MATCH aka op1 (ext clock) -> op1 sends clock to app: used to sync the LFOsMIDI SYNC aka app (int clock) -> app sends clock to op1: generates tempo, transport, and tape navigation commandsRequirements:
With the OP-1 connected and the virtual environment activated:
source venv/bin/activate
python -m src.app
The app auto-detects the OP-1 by port name (looks for "op-1" case-insensitively). If exactly one OP-1 port is found it is selected automatically. If multiple OP-1 ports are detected (e.g. USB and Bluetooth both connected) you will be prompted to choose from the full port list.
On startup the terminal also prints a remote control URL:
Remote control: http://192.168.x.x:8765/
Open that address in Safari on your iPhone (same WiFi network required) to get a mobile control surface — BPM, transport, per-track volume/pan/mute, and LFO controls. No app install needed.
Bluetooth LE MIDI is supported alongside USB. When the connected port name contains "Bluetooth" the status bar appends (bt) with a tooltip noting the ~15ms additional latency. BPM smoothing doubles automatically to absorb BLE jitter. Note that Tempo LFO requires the app to be clock master and is unavailable over Bluetooth.
| Flag | Description |
|---|---|
--debug | Enable verbose debug logging to the terminal |
--no-device | Run without a MIDI device — all controls are live but no MIDI is sent |
No-device mode also activates automatically if no MIDI input or output ports are found at startup, or if no device is selected during manual port selection. The status bar will show ● no device.
| Button | Action |
|---|---|
| Play | Sends MIDI Start (first press) or Continue (subsequent presses). OP-1 tape begins playing from the current position. |
| Stop | Sends MIDI Stop. OP-1 tape halts. |
| ← | Sends CC 82 (tape previous bar) and updates the song position pointer. |
| → | Sends CC 83 (tape next bar) and updates the song position pointer. |
Note: The OP-1 must be in Midi Sync mode for Play/Stop/←/→ to affect the tape. In other modes these buttons have no effect on tape transport.
120.0)Changes take effect immediately; the OP-1's BPM display updates in real time.
Each of the four tracks corresponds to an OP-1 Field mixer channel (tracks 1-4 = MIDI channels 1-4).
The LFO panel (below the track strips) applies beat-synchronized automation curves to any track parameter.
Choose the LFO shape:
| Wave | Description |
|---|---|
| Sine | Smooth S-curve oscillation |
| Triangle | Linear ramp up and down |
| Saw | Linear ramp up, instant reset |
| Square | Instant snap between high and low |
| Log | Fast start, slow arrival each half-cycle |
| Exp | Slow start, fast arrival each half-cycle (complement of Log) |
| Sweep Up | Chirp — oscillation frequency increases linearly across the cycle (4 sweeps total) |
| Sweep Down | Chirp — oscillation frequency decreases linearly across the cycle |
| Random | Sample-and-hold — 8 deterministic steps per cycle, each holding a pseudo-random value |
A live preview of the selected waveform is drawn in the panel. The number of visible cycles scales with the Rate setting.
When LFOs are running, selecting rows in the active LFO list replaces the preview with each selected LFO's actual waveform drawn in its track color. Deselects when you click elsewhere in the app.
Each LFO targets one or more tracks. The numbered buttons (1–4) select per-track targets; the green M button targets master parameters.
[inv] in the active list)For Tempo and other master-only parameters, the track 1–4 buttons are disabled and M activates automatically. For per-track parameters (volume, pan, mute, FX, LFO), M is disabled.
| Parameter | Target | CC |
|---|---|---|
| volume | Per-track channel volume | CC 7 (ch 1-4) |
| pan | Per-track pan | CC 10 (ch 1-4) |
| mute | Per-track mute toggle | CC 9 (ch 1-4) |
| tempo | App clock BPM (modulates LFO engine tempo) | — |
| par 1–4 | Per-track patch par parameters | CC 46-49 (ch 1-4) |
| env attack/decay/sustain/release | Per-track synth envelope | CC 50-53 (ch 1-4) |
| fx 1–4 | Per-track patch FX parameters | CC 54-57 (ch 1-4) |
| lfo 1–4 | Per-track patch LFO parameters | CC 58-61 (ch 1-4) |
| rec level | Global record level — also the main level of the synth and drum sound, so it shapes what reaches the tape | CC 78 (master) |
| eq low / mid / high | Global master EQ, flat at the middle | CC 90-92 (master) |
| sustain | Global sustain pedal for live notes on the selected instrument — not the tape | CC 64 (master) |
| pitch bend | Global pitch bend of the selected instrument's live notes — not the tape. 14-bit | Pitch bend, ch 1 (master) |
Tempo LFO: modulates the app's BPM directly with float precision. The OP-1 display tracks in real time. When the Tempo LFO is stopped the BPM restores to its original value. Requires app-clock mode (MIDI Sync on the OP-1); unavailable when the OP-1 is the clock master or when connected via Bluetooth.
| Control | Description |
|---|---|
| Rate | How many LFO cycles per bar (beat-synced) |
| Depth | How much the parameter value swings from center |
| Center | The midpoint value the LFO oscillates around |
| Range | Readout showing the min-max value the LFO will reach, derived from Center ± Depth |
When two or more tracks are selected, the Invert 2nd+ checkbox becomes available. With it checked, the first selected track gets the normal waveform and every additional track gets the same waveform flipped upside-down — its output is center - (wave x depth) instead of center + (wave x depth).
This means when the primary track's value rises, the secondary tracks' values fall by the same amount, and vice versa. Some uses:
The active LFO list marks inverted clips with [inv] so you can tell them apart at a glance. The waveform preview draws each track's curve in its own color.
| Button | Action |
|---|---|
| Start | Begin LFO automation on the selected tracks and parameter |
| Stop Selected | Stop automation on the currently selected clip |
| Stop All | Stop all running automation clips immediately |
git clone https://github.com/andrewralon/op1-lfo-hero.git
cd op1-lfo-hero
python3 -m venv venv
macOS / Linux:
source venv/bin/activate
Windows:
venv\Scripts\activate
You should see (venv) in your terminal prompt.
pip install -r requirements.txt
This installs:
mido — MIDI I/O librarypython-rtmidi — low-latency MIDI backend for midoPyQt6 — desktop UI frameworknumpy — used by the automation engineApp shows "MIDI Connection Failed"
Controls send but OP-1 doesn't respond (volume, pan, mute, transport all ignored)
sudo pkill -9 coremidi in the terminal, then unplug and replug the OP-1 — no restart neededOP-1 tape doesn't respond to Play/Stop
-- when waiting for clock — if it shows an internal BPM, Sync mode is not activeBPM on the OP-1 doesn't match the app
Left/right buttons stop playback
Pan knob jumps unexpectedly
Per-track (channels 1-4)
| CC | Function | Range | Notes |
|---|---|---|---|
| 7 | Volume | 0-127 | Per channel (track 1-4 = channel 1-4) |
| 9 | Mute | 0-127 | ≥ 64 = muted |
| 10 | Pan | 0-127 | 64 = center |
| 46-49 | Patch par params 1-4 | 0-127 | Per track |
| 50-53 | Patch synth envelope (A/D/S/R) | 0-127 | Per track |
| 54-57 | Patch FX params 1-4 | 0-127 | Per track |
| 58-61 | Patch LFO params 1-4 | 0-127 | Per track |
Global (channel 1)
| CC | Function | Range | Notes |
|---|---|---|---|
| 70-73 | Master FX params 1-4 | 0-127 | |
| 74-77 | Master compressor params 1-4 | 0-127 | |
| 64 | Sustain pedal | 0-127 | ≥ 64 = down (holds live notes, not tape playback). Measured: 63 releases, 127 holds |
| 78 | Tape record level | 0-127 | Also the main level of the synth/drum sound. Answers on any channel. Starts at 95 on power-up |
| 79 | Octave | 0-127 | < 64 = down, ≥ 64 = up (keyboard/synth mode only) |
| 90-92 | Master EQ low / mid / high | 0-127 | 64 = flat. Answers on any channel |
| 82 | Tape prev bar | 127 | Tape navigation |
| 83 | Tape next bar | 127 | Tape navigation |
Pitch bend (status 0xE0, 14-bit, 0-16383, 8192 = no bend): channel 1 only. It bends the
selected instrument's live notes; recorded and played-back tape is not affected, and channels 2-4
are ignored. The OP-1 holds the level once sent, so a bend stays on until it is sent back to 8192
or the patch is reset.
Transport messages
| Message | MIDI Status | Description |
|---|---|---|
| Clock | 0xF8 | Sent at 24 PPQN continuously |
| Start | 0xFA | Begin playback from position 0 |
| Continue | 0xFB | Resume from current song position |
| Stop | 0xFC | Halt playback |
| Song Position Pointer | 0xF2 | Sets resume position in MIDI beats |
OP-1 Field Midi Reference: https://teenage.engineering/guides/op-1#midi-reference