Hi All,
First of all, a tl;dr: When debugging the sample steinberg synth in Visual Studio, I can see that cream is sending me MIDI events with an "intra buffer sample offset" (which is VstMidi::deltaFrames in VST2 and Event::sampleOffset in VST3) that is equal to my buffer size, which prevents some synths that I use from handling the event (which leads to undefined behavior).
I'm running Cream in three hosts: Cakewalk Sonar, Ableton Live 9, and Bitwig Studio 2. Each exhibits strange behavior, but it was in Bitwig 2 that I stepped in with a debugger and looked at the values.
With a sample rate of 44100 and a buffer size of 512, I see that Cream occasionally sends me a MIDI note on event with a sample offset of 512. I don't think this is allowed, as the values should be between 0 and 511.
This could be handled by a synth plugin by deferring any events like this to the next buffer call and setting the offset to zero (in other words, a value of 512 means the event is coming at the very beginning of the next buffer.)
However it does seem like a bug on Cream's end to send a MIDI event that isn't part of the current buffer being rendered.
Here is my recipe (though I'm not sure what's necessary, especially regarding specific notes):
1. Set up cream to route to a synth in your host of choice (that kind of varies)
2. Create a chord pattern and use the CHRDMEM tab to set it for all notes. The chord I used was G major 7 (G, B, D, F#).
3. Play a MIDI loop containing one measure of C3, followed by one measure of E3.
After some time the synth will receive an event with an offset equal to the buffer size (at least in my test, with at a sample rate of 44100 and a buffer size of 512.)
The reason this is bad is because, at least with Cakewalk Z3TA+ 2, events like this never get handled and end up blocking the input queue, which prevents the synth from sounding. Again this could be handled on the synth side by postponing these events till the next buffer, but the thing about life is that you can't trust strangers to follow the rules, so maybe it's best to handle it internally and assume everyone else won't.
Just to describe some of the "weird behavior I see":
In Ableton Live 9, using the recipe I described, the fourth note of every arpeggiated chord fails to play. The notes will play if I make them just a bit longer than one measure (because Live is probably throwing away events that don't fit in the buffer being rendered). This with every synth I tried (including their built in ones.)
Sonar plays fine in the Clips View, but in the matrix things occasionally get delayed by a buffer (I think they are postponing the events, but perhaps instead of moving it to the beginning of the next buffer they move it to the end.)
In Bitwig I get stuck notes with Z3TA+ 2, but things are actually stable with their other synths.
I think Cream has a bug setting the sample position of MIDI events
Official support for: kirnuarp.com
Moderator: Kirnu
I think Cream has a bug setting the sample position of MIDI events
2017-03-05T16:01:48+00:00
Hi All,
First of all, a tl;dr: When debugging the sample steinberg synth in Visual Studio, I can see that cream is sending me MIDI events with an "intra buffer sample offset" (which is VstMidi::deltaFrames in VST2 and Event::sampleOffset in VST3) that is equal to my buffer size, which prevents some synths that I use from handling the event (which leads to undefined behavior).
I'm running Cream in three hosts: Cakewalk Sonar, Ableton Live 9, and Bitwig Studio 2. Each exhibits strange behavior, but it was in Bitwig 2 that I stepped in with a debugger and looked at the values.
With a sample rate of 44100 and a buffer size of 512, I see that Cream occasionally sends me a MIDI note on event with a sample offset of 512. I don't think this is allowed, as the values should be between 0 and 511.
This could be handled by a synth plugin by deferring any events like this to the next buffer call and setting the offset to zero (in other words, a value of 512 means the event is coming at the very beginning of the next buffer.)
However it does seem like a bug on Cream's end to send a MIDI event that isn't part of the current buffer being rendered.
Here is my recipe (though I'm not sure what's necessary, especially regarding specific notes):
1. Set up cream to route to a synth in your host of choice (that kind of varies)
2. Create a chord pattern and use the CHRDMEM tab to set it for all notes. The chord I used was G major 7 (G, B, D, F#).
3. Play a MIDI loop containing one measure of C3, followed by one measure of E3.
After some time the synth will receive an event with an offset equal to the buffer size (at least in my test, with at a sample rate of 44100 and a buffer size of 512.)
The reason this is bad is because, at least with Cakewalk Z3TA+ 2, events like this never get handled and end up blocking the input queue, which prevents the synth from sounding. Again this could be handled on the synth side by postponing these events till the next buffer, but the thing about life is that you can't trust strangers to follow the rules, so maybe it's best to handle it internally and assume everyone else won't.
Just to describe some of the "weird behavior I see":
In Ableton Live 9, using the recipe I described, the fourth note of every arpeggiated chord fails to play. The notes will play if I make them just a bit longer than one measure (because Live is probably throwing away events that don't fit in the buffer being rendered). This with every synth I tried (including their built in ones.)
Sonar plays fine in the Clips View, but in the matrix things occasionally get delayed by a buffer (I think they are postponing the events, but perhaps instead of moving it to the beginning of the next buffer they move it to the end.)
In Bitwig I get stuck notes with Z3TA+ 2, but things are actually stable with their other synths.
mynameisjohnj
https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=394946
-
- KVRer
- Topic Starter
- 2 posts since 5 Mar, 2017
Post by mynameisjohnj » Sun Mar 05, 2017 4:01 pm
You do not have the required permissions to view the files attached to this post.
Post Reply
1 post
• Page 1 of 1
Jump to
- The Main Forums
- ↳ KVR Studio Manager
- ↳ KVR Experts
- ↳ 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 Developer Challenge 2023
- ↳ Everything Else (Music related)
- ↳ Off Topic
- ↳ Off Topic Classics
- Official Company Forums
- ↳ 2getheraudio
- ↳ accSone
- ↳ Acon Digital
- ↳ AcousticsampleS
- ↳ AcousModules
- ↳ Agitated State
- ↳ AIR Music Technology
- ↳ AMG
- ↳ Ample Sound
- ↳ Antares Audio Technologies
- ↳ Apisonic Labs
- ↳ 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
- ↳ 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
- ↳ u-he
- ↳ u-he Linux support
- ↳ United Plugins
- ↳ VAZ Synths
- ↳ Virharmonic
- ↳ Wolfgang Palm
- ↳ xoxos
- ↳ XSRDO - SynthCraft
- ↳ ZynAddSubFX
- Site Stuff
- ↳ Site Stuff
- Archived Forums
- ↳ AlgoMusic
- ↳ easytoolz
- ↳ Elevayta
- ↳ Hollow Sun
- ↳ Kazrog
- ↳ LinPlug
- ↳ Muse Research and Development
- ↳ Shuriken
- ↳ SoHa Sound Design
- ↳ Soniccouture
- ↳ Topten Software
- ↳ Tweakbench
- ↳ 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
- KVR Forum index
- All times are UTC
- Delete cookies