So, I'm trying to come up with a loop machine plugin that takes MIDI CC input that tells it when to begin recording and when to stop recording (and begin looping playback), with the resulting loop quantized in real-time to length of some multiple of one measure-length. I only need the plugin to handle layer of audio at a time; I can use more than one instance of it in the host for more layers.
I've already the easy part of it working.
The plugin currently:
Receives MIDI CC input to control a slider with possible values 0, 1, and 2,
Passes those values to a Bufferizer as the "mode" input,
And lets the input of the plugin pass through when the bufferizer is in mode 0 or 2 (mode 1 is playback, so in that case, playback is passed to the output)
Now, I know that beat information comes only at the beginning of each bar, and I'm okay with that, because when I'm doing live loops, I'll usually want to sync them to barlines anyway.
I can envision the logic of the syncing portion to work roughly like this:
Keep at all times a beat timer that resets on each beat event received from host.
When a "begin record" event is received, capture the time (t) on the beat timer
When a "stop record / begin playback" event is received,
Determine if the event is "early" or "late"
(that is, if it is closer to the next beat event or the previous one)
(the projected next beat event can be computed with tempo info from host)
If early, just delay the "stop rec / begin play" event until next beat event
(or by the difference computed from the projected next beat)
If late, immediately begin playback from <beginning+"lateness">
AND set Bufferizer to end playback at <end-"lateness">
AND all subsequent playbacks should begin from beginning, not <b+lateness>
Now, I'm new to SonicBirthing, and I'm having the most trouble figuring out how to capture values like (t). I always end up routing a changing value instead of the static one at a certain point. I'm used to working with PureData, so I expected this sort of logic to be feasible, but if its not, could someone maybe suggest some alternate logic path (or perhaps a way to wrap PureData or even C logic into a SonicBirth plugin?)
Tempo-Synced Loop Machine
Official support for: sonicbirth.sourceforge.net
Tempo-Synced Loop Machine
2008-12-20T05:18:22+00:00
So, I'm trying to come up with a loop machine plugin that takes MIDI CC input that tells it when to begin recording and when to stop recording (and begin looping playback), with the resulting loop quantized in real-time to length of some multiple of one measure-length. I only need the plugin to handle layer of audio at a time; I can use more than one instance of it in the host for more layers.
I've already the easy part of it working.
The plugin currently:
Receives MIDI CC input to control a slider with possible values 0, 1, and 2,
Passes those values to a Bufferizer as the "mode" input,
And lets the input of the plugin pass through when the bufferizer is in mode 0 or 2 (mode 1 is playback, so in that case, playback is passed to the output)
Now, I know that beat information comes only at the beginning of each bar, and I'm okay with that, because when I'm doing live loops, I'll usually want to sync them to barlines anyway.
I can envision the logic of the syncing portion to work roughly like this:
Keep at all times a beat timer that resets on each beat event received from host.
When a "begin record" event is received, capture the time (t) on the beat timer
When a "stop record / begin playback" event is received,
Determine if the event is "early" or "late"
(that is, if it is closer to the next beat event or the previous one)
(the projected next beat event can be computed with tempo info from host)
If early, just delay the "stop rec / begin play" event until next beat event
(or by the difference computed from the projected next beat)
If late, immediately begin playback from <beginning+"lateness">
AND set Bufferizer to end playback at <end-"lateness">
AND all subsequent playbacks should begin from beginning, not <b+lateness>
Now, I'm new to SonicBirthing, and I'm having the most trouble figuring out how to capture values like (t). I always end up routing a changing value instead of the static one at a certain point. I'm used to working with PureData, so I expected this sort of logic to be feasible, but if its not, could someone maybe suggest some alternate logic path (or perhaps a way to wrap PureData or even C logic into a SonicBirth plugin?)
EasyMac
https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=196316
Post Reply
1 post
• Page 1 of 1
Jump to
- The Main Forums
- ↳ KVR Studio Manager
- ↳ Getting Started (AKA What is the best...?)
- ↳ Instruments
- ↳ Effects
- ↳ Hosts & Applications (Sequencers, DAWs, Audio Editors, etc.)
- ↳ Guitars
- ↳ Mobile Apps and Hardware
- ↳ Soundware
- ↳ Samplers, Sampling & Sample Libraries
- ↳ Hardware (Instruments and Effects)
- ↳ Modular Synthesis
- ↳ Sound Design
- ↳ Production Techniques
- ↳ Music Theory
- ↳ Computer Setup and System Configuration
- ↳ DSP and Plugin Development
- ↳ DIY: Build it and they will come
- ↳ Music Cafe
- ↳ Sell & Buy (+Special Offers, Deals & Promos)
- ↳ KVR Experts
- ↳ KVR Developer Challenge 2026
- ↳ Everything Else (Music related)
- ↳ Off Topic
- ↳ Off Topic Classics
- ↳ Machine Learning and AI for Music Creation
- Official Company Forums
- ↳ 2getheraudio
- ↳ accSone
- ↳ Acon Digital
- ↳ AcousticsampleS
- ↳ AcousModules
- ↳ Agitated State
- ↳ AIR Music Technology
- ↳ AMG
- ↳ Ample Sound
- ↳ Antares Audio Technologies
- ↳ Apisonic Labs
- ↳ APU Software
- ↳ apulSoft
- ↳ AriesCode
- ↳ Arts Acoustic
- ↳ Arturia
- ↳ Audjoo
- ↳ AudioSpillage
- ↳ Audiority
- ↳ Best Service
- ↳ Big Tick
- ↳ Bitwig
- ↳ Controller Scripting
- ↳ Blue Cat Audio
- ↳ Cherry Audio
- ↳ CWITEC
- ↳ Embertone
- ↳ energyXT
- ↳ Eventide
- ↳ Expert Sleepers
- ↳ forward audio
- ↳ Future Audio Workshop
- ↳ FXpansion
- ↳ g200kg
- ↳ Harrison Mixbus
- ↳ HG Fortune
- ↳ Homegrown Sounds
- ↳ HoRNet Plugins
- ↳ Ilya Efimov Production
- ↳ Image Line
- ↳ Impact Soundworks
- ↳ Indiginus
- ↳ Insert Piz Here
- ↳ Ju-X
- ↳ Kirk Hunter Studios
- ↳ Kirnu
- ↳ Kong Audio
- ↳ Krotos
- ↳ Kuassa
- ↳ KV331 Audio
- ↳ LennarDigital
- ↳ Les Productions Zvon
- ↳ Liqube Audio
- ↳ Loomer
- ↳ LVC-Audio
- ↳ Maizesoft
- ↳ Manytone Music
- ↳ Media Overkill (MOK)
- ↳ MeldaProduction
- ↳ Mellowmuse
- ↳ MIDIMood
- ↳ moForte
- ↳ Mozaic Beats
- ↳ mucoder
- ↳ MusicDevelopments
- ↳ Tips & Tricks
- ↳ MusicLab
- ↳ MuTools
- ↳ New Sonic Arts
- ↳ NUSofting
- ↳ Oli Larkin Plugins
- ↳ Orange Tree Samples
- ↳ patchpool
- ↳ Photosounder
- ↳ PlugInGuru
- ↳ Polyverse Music
- ↳ Precisionsound
- ↳ Premier Sound Factory
- ↳ Psychic Modulation
- ↳ Realitone
- ↳ Resonance-Sound
- ↳ Reveal Sound
- ↳ Roger Linn Design
- ↳ rs-met
- ↳ S3A: Spatial Audio
- ↳ SaschArt
- ↳ Smart Electronix
- ↳ sonible
- ↳ SonicBirth
- ↳ Sonic Reality / eSoundz.com
- ↳ Soundiron
- ↳ SPC Plugins
- ↳ Sugar Bytes
- ↳ TAL Software
- ↳ Tokyo Dawn Labs
- ↳ Tracktion
- ↳ Tweakbench
- ↳ u-he
- ↳ u-he Linux support
- ↳ UJAM
- ↳ United Plugins
- ↳ VAZ Synths
- ↳ Virharmonic
- ↳ xoxos
- ↳ XSRDO - SynthCraft
- ↳ ZynAddSubFX
- Site Stuff
- ↳ Site Stuff
- Archived Forums
- ↳ AlgoMusic
- ↳ easytoolz
- ↳ Elevayta
- ↳ Hollow Sun
- ↳ LinPlug
- ↳ Muse Research and Development
- ↳ Shuriken
- ↳ SoHa Sound Design
- ↳ Soniccouture
- ↳ Topten Software
- ↳ Valhalla DSP
- ↳ CK Modules & VST
- ↳ Sennheiser AMBEO
- ↳ Muon Software
- ↳ Westgatesounds.net
- ↳ Squaredheads
- ↳ Sonigen
- ↳ CFA-Sound
- ↳ Back In Time Records
- ↳ Livelab.dk
- ↳ Skytopia
- ↳ audioD3CK
- ↳ Inspire Audio
- ↳ Krakli
- ↳ Drumdrops
- ↳ Futucraft
- ↳ OverTone DSP
- ↳ RaXnTraX
- ↳ solar3d-software
- ↳ Signaldust
- ↳ Soundemote
- ↳ ReleaseLab (Powered by Artist Expansion)
- ↳ Wolfgang Palm
- KVR Forum index
- All times are UTC
- Delete cookies
