Velocity
Shape, compress, or randomize note velocities.
Transpose notes by semitones and octaves.
Engine preview
Standalone app, VST3
Pitch Shift is the simplest MIDI effect: it adds a fixed number of semitones to every note that passes through. An octave knob shifts in multiples of 12 on top of that. A note that would land outside 0–127 is quietly suppressed rather than wrapped, because wrapping a C2 down to a B7 is never what a transposer should do.
This is a preview module. The transform is applied inline at the note event, so there is no latency and no scheduling. It sits in front of whatever instrument is mounted, exactly as the arpeggiator does, but where the arp re-times notes this module only re-pitches them.
The downloadable Pitch Shift release supports the hosts and systems listed below.
Runs on its own. No DAW required.
Works in Ableton Live, Reaper, Cubase, Studio One, Bitwig and FL Studio.
Every row below is a recorded build row or the recorded absence of one. Nothing here is inferred from what this module is meant to support.
| Format | Result | Download |
|---|---|---|
| Browser package (JS) | Builtweb bundle sha256 1671e204c0e0… · 177 KB | Built, but no downloadable archive was recorded. |
| Browser package (WASM) | Builtweb bundle sha256 4e863a92dbb8… · 2.0 MB | Built, but no downloadable archive was recorded. |
| VST3 | Builtdarwin-arm64Steinberg validator + VST3 host render: passed bundle sha256 79b03a6afde1… · 2.1 MB | SynthoPitchShift-vst3-darwin-arm64.zip archive sha256 938a4a320e43… · 2.1 MB · darwin-arm64 |
| Audio Unit | Not built — the build failed Error: auval failed (exit 255); see /Users/felix/web/git/ai-utils/hybrid-audio-engine/modules/pitch-shift/build/.processor-native-szhI70/auval.log (temporary; set CODEX_NATIVE_LOG_DIR to retain the full log) Captured output tail: AU Validation Tool Version: 1.10.0 Copyright 2003-2019, Apple Inc. All Rights Reserved. Specify -h (-help) for command options -------------------------------------------------- VALIDATING AUDIO UNIT: 'aufx' - '0lWH' - 'No5K' -------------------------------------------------- Manufacturer String: Syntho AudioUnit Name: Pitch Shift Component Version: 0.0.1 (0x1) * * PASS -------------------------------------------------- TESTING OPEN TIMES: COLD: Time to open AudioUnit: 133.216 ms WARM: Time to open AudioUnit: 0.087 ms This AudioUnit is a version 2 implementation. FIRST TIME: Time for initialization: 0.406 ms * * PASS -------------------------------------------------- VERIFYING DEFAULT SCOPE FORMATS: Input Scope Bus Configuration: Default Bus Count:1 Default Format: AudioStreamBasicDescription: 2 ch, 44100 Hz, Float32, deinterleaved Output Scope Bus Configuration: Default Bus Count:1 Default Format: AudioStreamBasicDescription: 2 ch, 44100 Hz, Float32, deinterleaved * * PASS -------------------------------------------------- VERIFYING REQUIRED PROPERTIES: * * PASS -------------------------------------------------- VERIFYING RECOMMENDED PROPERTIES: VERIFYING PROPERTY: Latency PASS VERIFYING PROPERTY: Tail Time PASS VERIFYING PROPERTY: Bypass Effect PASS * * PASS -------------------------------------------------- VERIFYING OPTIONAL PROPERTIES: * * PASS -------------------------------------------------- VERIFYING SPECIAL PROPERTIES: VERIFYING CUSTOM UI Cocoa Views Available: 1 SynthoAUViewPitchShiftFactory PASS DEFAULT PRESET: 0, Name: Default HAS FACTORY PRESETS ID: 0 Name: Default VERIFYING CLASS INFO PASS TESTING HOST CALLBACKS PASS * * PASS -------------------------------------------------- PUBLISHED PARAMETER INFO: # # # 3 Global Scope Parameters: Parameter ID:0 Name: On Parameter Type: Generic Values: Minimum = 0.000000, Default = 1.000000, Maximum = 1.000000 Flags: Readable, Writable -parameter PASS Parameter ID:1 Name: Semitones Parameter Type: Generic Values: Minimum = -36.000000, Default = 0.000000, Maximum = 36.000000 Flags: Readable, Writable -parameter PASS Parameter ID:2 Name: Octave Parameter Type: Generic Values: Minimum = -3.000000, Default = 0.000000, Maximum = 3.000000 Flags: Readable, Writable -parameter PASS Testing that parameters retain value across reset and initialization PASS * * PASS -------------------------------------------------- FORMAT TESTS: Reported Channel Capabilities (explicit): [2, 2] Input/Output Channel Handling: 1-1 1-2 1-4 1-5 1-6 1-7 1-8 2-2 2-4 2-5 2-6 2-7 2-8 4-4 4-5 5-5 6-6 7-7 8-8 X * * PASS -------------------------------------------------- RENDER TESTS: Input Format: AudioStreamBasicDescription: 2 ch, 44100 Hz, Float32, deinterleaved Output Format: AudioStreamBasicDescription: 2 ch, 44100 Hz, Float32, deinterleaved Render Test at 512 frames ERROR: -10875 IN CALL AudioUnitRender * * FAIL -------------------------------------------------- AU VALIDATION FAILED: CORRECT THE ERRORS ABOVE. -------------------------------------------------- codex kernel_engine: processBlock requested 2 output channel(s) from a build that declares 0; refusing rather than reading the null planar output view an event-only product legally has at runCaptured (/Users/felix/web/git/ai-utils/hybrid-audio-engine/packages/plugin-shell-kit/src/native-workflows.ts:3301:11) at verifyAuComponent (/Users/felix/web/git/ai-utils/hybrid-audio-engine/packages/plugin-shell-kit/src/native-workflows.ts:3901:24) --- captured build output (tail) --- …(6693 earlier bytes omitted) Linking CXX executable SynthoPitchShiftStandalone.app/Contents/MacOS/SynthoPitchShiftStandalone [ 92%] Building CXX object CMakeFiles/SynthoPitchShiftAU.dir/src/codex_json.cpp.o codex-plugin-shell: embedding UI bundle for SynthoPitchShiftStandalone [ 92%] Built target SynthoPitchShiftStandalone [ 94%] Building CXX object CMakeFiles/SynthoPitchShiftAU.dir/src/cc_map.cpp.o [ 96%] Building OBJCXX object CMakeFiles/SynthoPitchShiftAU.dir/src/webview_au.mm.o [ 98%] Building OBJCXX object CMakeFiles/SynthoPitchShiftAU.dir/src/webview_common.mm.o [100%] Linking CXX CFBundle shared module AU/SynthoPitchShift.component/Contents/MacOS/SynthoPitchShift codex-plugin-shell: embedding UI bundle for SynthoPitchShiftAU [100%] Built target SynthoPitchShiftAU [100%] Built target codex_verify_au /Users/felix/web/git/ai-utils/hybrid-audio-engine/native/plugin-shell/src/verify_au_main.cpp:609:72: warning: null passed to a callee that requires a non-null argument [-Wnonnull] 609 | const bool invalidLifecycleRejected = AudioUnitRender(unit, nullptr, nullptr, 0, 1, nullptr) != noErr; | ^~~~~~~ /Users/felix/web/git/ai-utils/hybrid-audio-engine/native/plugin-shell/src/verify_au_main.cpp:609:87: warning: null passed to a callee that requires a non-null argument [-Wnonnull] 609 | const bool invalidLifecycleRejected = AudioUnitRender(unit, nullptr, nullptr, 0, 1, nullptr) != noErr; | ^~~~~~~ /Users/felix/web/git/ai-utils/hybrid-audio-engine/native/plugin-shell/src/verify_au_main.cpp:913:72: warning: null passed to a callee that requires a non-null argument [-Wnonnull] 913 | const bool invalidLifecycleRejected = AudioUnitRender(unit, nullptr, nullptr, 0, 1, nullptr) != noErr; | ^~~~~~~ /Users/felix/web/git/ai-utils/hybrid-audio-engine/native/plugin-shell/src/verify_au_main.cpp:913:87: warning: null passed to a callee that requires a non-null argument [-Wnonnull] 913 | const bool invalidLifecycleRejected = AudioUnitRender(unit, nullptr, nullptr, 0, 1, nullptr) != noErr; | ^~~~~~~ /Users/felix/web/git/ai-utils/hybrid-audio-engine/native/plugin-shell/src/verify_au_main.cpp:1238:72: warning: null passed to a callee that requires a non-null argument [-Wnonnull] 1238 | const bool invalidLifecycleRejected = AudioUnitRender(unit, nullptr, nullptr, 0, 1, nullptr) != noErr; | ^~~~~~~ /Users/felix/web/git/ai-utils/hybrid-audio-engine/native/plugin-shell/src/verify_au_main.cpp:1238:87: warning: null passed to a callee that requires a non-null argument [-Wnonnull] 1238 | const bool invalidLifecycleRejected = AudioUnitRender(unit, nullptr, nullptr, 0, 1, nullptr) != noErr; | ^~~~~~~ 6 warnings generated. /Users/felix/web/git/ai-utils/hybrid-audio-engine/native/plugin-shell/src/entry_au.cpp:271:49: warning: conditional expression between different enumeration types ('(unnamed enum at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/MacTypes.h:388:1)' and '(unnamed enum at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUComponent.h:809:1)') is deprecated [-Wdeprecated-anon-enum-enum-conversion] 271 | shell.lastRenderError_ = shell.initialized_ ? noErr : kAudioUnitErr_FailedInitialization; | ^ ~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Users/felix/web/git/ai-utils/hybrid-audio-engine/native/plugin-shell/src/entry_au.cpp:349:36: warning: conditional expression between different enumeration types ('(unnamed enum at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/MacTypes.h:388:1)' and '(unnamed enum at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUComponent.h:809:1)') is deprecated [-Wdeprecated-anon-enum-enum-conversion] 349 | shell.lastRenderError_ = ready ? noErr : kAudioUnitErr_FailedInitialization; | ^ ~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Users/felix/web/git/ai-utils/hybrid-audio-engine/native/plugin-shell/src/entry_au.cpp:992:36: warning: conditional expression between different enumeration types ('(unnamed enum at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/MacTypes.h:388:1)' and '(unnamed enum at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreAudioTypes.framework/Headers/CoreAudioBaseTypes.h:92:1)') is deprecated [-Wdeprecated-anon-enum-enum-conversion] 992 | return ccMap_.publish(map) ? noErr : kAudio_MemFullError; | ^ ~~~~~ ~~~~~~~~~~~~~~~~~~~ 3 warnings generated. /Users/felix/web/git/ai-utils/hybrid-audio-engine/modules/pitch-shift/build/.processor-native-szhI70/cmake/SynthoPitchShiftStandalone.app: replacing existing signature ld: warning: ignoring duplicate libraries: '/Users/felix/web/git/ai-utils/hybrid-audio-engine/modules/pitch-shift/build/.processor-native-szhI70/scriptc/native-program.lib.a' /Users/felix/web/git/ai-utils/hybrid-audio-engine/modules/pitch-shift/build/.processor-native-szhI70/cmake/AU/SynthoPitchShift.component: replacing existing signature /Users/felix/Library/Audio/Plug-Ins/Components/SynthoPitchShift-verify-95011.component: replacing existing signature | Not built for macOS |
| CLAP | Not built — the build failed Error: CLAP Processor host: event-only qualification is not implemented by the CLAP tape probe at probeProcessorClapHost (/Users/felix/web/git/ai-utils/hybrid-audio-engine/packages/plugin-shell-kit/src/native-workflows.ts:3657:11) at buildProcessorClapFormatProduct (/Users/felix/web/git/ai-utils/hybrid-audio-engine/packages/plugin-shell-kit/src/native-workflows.ts:4278:16) at buildProcessorFormatTarget (/Users/felix/web/git/ai-utils/hybrid-audio-engine/packages/plugin-shell-kit/src/native-workflows.ts:2796:12) at generateProcessorNativeTarget (/Users/felix/web/git/ai-utils/hybrid-audio-engine/packages/plugin-shell-kit/src/native-workflows.ts:3085:27) at async Object.privateExtension (/Users/felix/web/git/ai-utils/hybrid-audio-engine/packages/plugin-shell-kit/src/native-workflows.ts:496:22) at async prepareProcessorCatalogPublication (/Users/felix/web/git/ai-utils/hybrid-audio-engine/packages/module-toolchain/dist/node-catalog-publication.js:1733:15) at async publishCatalogModule (/Users/felix/web/git/ai-utils/hybrid-audio-engine/packages/module-toolchain/dist/node-catalog-publication.js:1870:26) at async publishNativeCatalog (/Users/felix/web/git/ai-utils/hybrid-audio-engine/packages/plugin-shell-kit/src/native-workflows.ts:492:22) at async Module.buildAudioModuleFormat (/Users/felix/web/git/ai-utils/hybrid-audio-engine/packages/plugin-shell-kit/src/native-workflows.ts:6498:9) at async buildOne (/Users/felix/web/git/ai-utils/hybrid-audio-engine/packages/build-executor/scripts/native-lane-job.mjs:197:20) --- captured build output (tail) --- …(2043 earlier bytes omitted) iles/codex_verify_license_state.dir/src/licensing/license_state.cpp.o [ 7%] Linking CXX executable codex_verify_license_state [ 7%] Built target codex_verify_license_state [ 9%] Building CXX object CMakeFiles/SynthoPitchShiftEngineTest.dir/src/test_engine_main.cpp.o [ 11%] Building CXX object CMakeFiles/SynthoPitchShiftEngineTest.dir/src/kernel_engine.cpp.o [ 12%] Linking CXX executable codex_verify_clap [ 12%] Built target codex_verify_clap [ 14%] Building CXX object CMakeFiles/SynthoPitchShiftEngineTest.dir/src/runtime_bank_loader.cpp.o [ 16%] Building CXX object CMakeFiles/SynthoPitchShiftRateAdapterStateTest.dir/src/test_rate_adapter_state_main.cpp.o [ 18%] Building CXX object CMakeFiles/SynthoPitchShiftRateAdapterStateTest.dir/src/kernel_engine.cpp.o [ 20%] Building OBJCXX object CMakeFiles/SynthoPitchShiftEngineTest.dir/src/runtime_bank_fetch.mm.o [ 22%] Linking CXX executable SynthoPitchShiftEngineTest [ 24%] Building CXX object CMakeFiles/SynthoPitchShiftRateAdapterStateTest.dir/src/runtime_bank_loader.cpp.o [ 24%] Built target SynthoPitchShiftEngineTest [ 25%] Building OBJCXX object CMakeFiles/SynthoPitchShiftRateAdapterStateTest.dir/src/runtime_bank_fetch.mm.o [ 27%] Building CXX object CMakeFiles/SynthoPitchShiftRuntimeDiagnosticsTest.dir/src/test_runtime_diagnostics_main.cpp.o [ 29%] Linking CXX executable SynthoPitchShiftRateAdapterStateTest [ 31%] Building CXX object CMakeFiles/SynthoPitchShiftRuntimeDiagnosticsTest.dir/src/kernel_engine.cpp.o [ 31%] Built target SynthoPitchShiftRateAdapterStateTest [ 33%] Building CXX object CMakeFiles/SynthoPitchShiftRuntimeDiagnosticsTest.dir/src/runtime_bank_loader.cpp.o [ 35%] Building CXX object CMakeFiles/SynthoPitchShiftRateAdapterTest.dir/src/test_rate_adapter_main.cpp.o [ 37%] Linking CXX executable SynthoPitchShiftRateAdapterTest [ 38%] Building CXX object CMakeFiles/SynthoPitchShiftRuntimeDiagnosticsTest.dir/src/bank_control.cpp.o [ 38%] Built target SynthoPitchShiftRateAdapterTest [ 40%] Building OBJCXX object CMakeFiles/SynthoPitchShiftRuntimeDiagnosticsTest.dir/src/runtime_bank_fetch.mm.o [ 42%] Building CXX object CMakeFiles/codex_verify_diagnostic_conformance.dir/src/verify_diagnostic_conformance_main.cpp.o [ 44%] Building CXX object CMakeFiles/SynthoPitchShiftRuntimeDiagnosticsTest.dir/src/codex_json.cpp.o [ 46%] Building CXX object CMakeFiles/SynthoPitchShiftRuntimeDiagnosticsTest.dir/src/cc_map.cpp.o [ 48%] Building CXX object CMakeFiles/codex_verify_diagnostic_conformance.dir/src/diagnostic_canonical_json.cpp.o [ 50%] Linking CXX executable SynthoPitchShiftRuntimeDiagnosticsTest [ 50%] Built target SynthoPitchShiftRuntimeDiagnosticsTest [ 51%] Building CXX object CMakeFiles/codex_verify_diagnostic_conformance.dir/src/codex_json.cpp.o [ 53%] Building CXX object CMakeFiles/SynthoPitchShiftGraphHarness.dir/src/verify_graph_module_shell_main.cpp.o [ 55%] Building CXX object CMakeFiles/SynthoPitchShiftGraphHarness.dir/src/kernel_engine.cpp.o [ 57%] Building CXX object CMakeFiles/codex_verify_diagnostic_conformance.dir/src/cc_map.cpp.o [ 59%] Building CXX object CMakeFiles/SynthoPitchShiftGraphHarness.dir/src/runtime_bank_loader.cpp.o [ 61%] Linking CXX executable codex_verify_diagnostic_conformance [ 61%] Built target codex_verify_diagnostic_conformance [ 62%] Building OBJCXX object CMakeFiles/SynthoPitchShiftGraphHarness.dir/src/runtime_bank_fetch.mm.o [ 64%] Building OBJCXX object CMakeFiles/SynthoPitchShiftStandalone.dir/src/standalone_main.mm.o [ 66%] Linking CXX executable SynthoPitchShiftGraphHarness [ 66%] Built target SynthoPitchShiftGraphHarness [ 68%] Building OBJCXX object CMakeFiles/SynthoPitchShiftStandalone.dir/src/webview_common.mm.o [ 70%] Building CXX object CMakeFiles/SynthoPitchShiftCLAP.dir/src/entry_clap.cpp.o [ 72%] Building CXX object CMakeFiles/SynthoPitchShiftStandalone.dir/src/kernel_engine.cpp.o [ 74%] Building CXX object CMakeFiles/SynthoPitchShiftStandalone.dir/src/runtime_bank_loader.cpp.o [ 75%] Building CXX object CMakeFiles/SynthoPitchShiftCLAP.dir/src/kernel_engine.cpp.o [ 77%] Building CXX object CMakeFiles/SynthoPitchShiftCLAP.dir/src/runtime_bank_loader.cpp.o [ 79%] Building CXX object CMakeFiles/SynthoPitchShiftStandalone.dir/src/bank_control.cpp.o [ 81%] Building CXX object CMakeFiles/SynthoPitchShiftCLAP.dir/src/bank_control.cpp.o [ 83%] Building OBJCXX object CMakeFiles/SynthoPitchShiftStandalone.dir/src/runtime_bank_fetch.mm.o [ 85%] Building CXX object CMakeFiles/SynthoPitchShiftStandalone.dir/src/codex_json.cpp.o [ 87%] Building OBJCXX object CMakeFiles/SynthoPitchShiftCLAP.dir/src/runtime_bank_fetch.mm.o [ 88%] Building CXX object CMakeFiles/SynthoPitchShiftCLAP.dir/src/codex_json.cpp.o [ 90%] Building CXX object CMakeFiles/SynthoPitchShiftStandalone.dir/src/cc_map.cpp.o [ 92%] Linking CXX executable SynthoPitchShiftStandalone.app/Contents/MacOS/SynthoPitchShiftStandalone [ 94%] Building CXX object CMakeFiles/SynthoPitchShiftCLAP.dir/src/cc_map.cpp.o codex-plugin-shell: embedding UI bundle for SynthoPitchShiftStandalone [ 94%] Built target SynthoPitchShiftStandalone [ 96%] Building OBJCXX object CMakeFiles/SynthoPitchShiftCLAP.dir/src/webview_clap.mm.o [ 98%] Building OBJCXX object CMakeFiles/SynthoPitchShiftCLAP.dir/src/webview_common.mm.o [100%] Linking CXX CFBundle shared module CLAP/SynthoPitchShift.clap/Contents/MacOS/SynthoPitchShift codex-plugin-shell: embedding UI bundle for SynthoPitchShiftCLAP [100%] Built target SynthoPitchShiftCLAP [100%] Built target codex_verify_clap /Users/felix/web/git/ai-utils/hybrid-audio-engine/modules/pitch-shift/build/.processor-native-1y66az/cmake/SynthoPitchShiftStandalone.app: replacing existing signature ld: warning: ignoring duplicate libraries: '/Users/felix/web/git/ai-utils/hybrid-audio-engine/modules/pitch-shift/build/.processor-native-1y66az/scriptc/native-program.lib.a' /Users/felix/web/git/ai-utils/hybrid-audio-engine/modules/pitch-shift/build/.processor-native-1y66az/cmake/CLAP/SynthoPitchShift.clap: replacing existing signature | Not built for macOS, Windows or Linux |
| Standalone app | Builtdarwin-arm64standalone executable self-test + native Processor harness: passed bundle sha256 c711ddbaf0b1… · 1.8 MB | SynthoPitchShiftStandalone-standalone-darwin-arm64.zip archive sha256 2069caeaa41b… · 1.8 MB · darwin-arm64 |
Parity
browser-js = browser-wasm = vst3 = standalone qualified against their own recorded digests. Not recorded: au, clap.
Migration fallback: approximated from parameter groups, not a runtime wiring diagram.
Every noteOn and noteOff has its MIDI note number offset by the sum of semitones and octave×12. The result is clamped to 0–127; notes that fall outside are suppressed entirely. The velocity and timing are untouched.
Shape, compress, or randomize note velocities.
Turn single notes into chords.
Add timing and velocity jitter for human feel.
Walk held notes through a rhythmic pattern.