TSC Request for Help with Tracking Down Collective Silence Bug

Discussion about: tracktion.com
Post Reply New Topic
RELATED
PRODUCTS

Post

magicmusic wrote:see screenshots that song testsong have only 3 collective. but as can see in log file, waveform load all VST from project test and agml too. and if i have more projects in the list, even more is load. 32 bit version do this not. only when the tab of other song is open, then of course this vst are load.
Waveform should only load the plugins in the edit. Do you have an racks in the edit with collective (even if you didn't add them to a track) or did you preview any midi files using collective?

Post

@FigBug please look at the screenshot, here you can see the project that is open use only 3 collective and no rack

or even better please try out yourself on 64 bit version. open 10 projects(that are show in left side, that use VSTI). now open 1 song that use only 1 collective track. (so it is show in the tab.) now quit and restart waveform and look in the log file what VSTi are load. you can see logfile of waveform easy in the help menu with show logfile

waveform have on my system many strange bugs, such things can also happen if a programmer do such code If floatvarible== 1 , because when no rounding is enabled it can happen depend on fpu that result is on some FPU 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 on other FPU 1.00000000000000000000000000

such code fail depend on FPU. so never use on FPU ==
win 11 64 25H2 ryzen 8600G (6*4.3 GHZ) 48 GB Ram

Post

I highly doubt this problem is due to a floating point integer comparison. We would never write code like that ourselves anyway, at the very least we would write

Code: Select all

if (floatVariable == 1.0f)
which signifies we know we're doing a float comparison and is perfectly legitimate if you've initialised floatVariable to 1.0f previously. Obviously if floatVariable has be mutated in any way other than a direct assignment, logical equals comparison is off the table.

What FigBug is asking is two things:
1) Do you have, or have at any point created, any racks in the Edit. Remember Racks are shared across the instances that appear on in the track mixer. Please drag the new plugin generator to a track and check the "Pluign Racks" sub-menu item. Is there anything here apart from the "New from preset" and "Create New Empty Rack" items? If so, do any of these Racks have Collective instances in them?

2) The (fairly) recently added MIDI previews use a plugin to output MIDI. If you've set this to use Collective, it will need to load an instance of Collective which is what you might be seeing in the log.

Either of these would make sense because your log shows 4 Collective instances and there are 3 visible in your tracks. I've done the steps you mentioned but only get one Collective instance loaded at start-up. I'm not saying there isn't a bug to be found here but if Waveform opened all plugin from all project in the Projects page list at start-up, it's likely someone would have reported incredibly slow startup times trying to load hundreds of plugins every time the app starts (remember a lot of people have very large Projects lists which contain many Edits).

Post

I have example song agm create it contain agml vsti . it have no rack. other song have only collective and jamstix . there is no song add that contain sample tank 3 kontakt and minigrand. i remember i test them before, but i remove them.see screenshots of the songs.

please read link about FPU. i find not a explain for C, but problem is same.
1) Beware of checking for equality – it will most likely fail. Floating-point numbers can be understood as discrete, finite-precision values along the continuous number line. They are often misinterpreted as infinitely precise. Even the value of 1/10 = 0.10 cannot be stored exactly in IEEE floating-point representation because IEEE floating-point numbers are composed of the product of an integer mantissa with a binary (power of 2) exponent factor. For example, 0.5 and 0.25 can be stored exactly (1 x 2-1 and 1 x 2-2), but 0.1 cannot, its value will be changed to 0.100000000000000006 after stored in the memory.

This limited precision inherent in the floating-point representation means that even minor variations in the order of computations can change the result. Compilers, machines, and resulting programs can store intermediate results subjected to necessary rounding in varying precision, so a change in any of these usually leads to different results.

Expressions that may be equal from a purely mathematical perspective will very often evaluate to only nearly-equal results on a computer. Rarely will comparing two computed floating-point numbers by checking for exact equality lead to a satisfactory conclusion. The following section contains two simple examples to demonstrate this point.
http://www.ni.com/white-paper/7612/en/
Comparing for equality

Floating point math is not exact. Simple values like 0.2 cannot be precisely represented using binary floating point numbers, and the limited precision of floating point numbers means that slight changes in the order of operations can change the result. Different compilers and CPU architectures store temporary results at different precisions, so results will differ depending on the details of your environment. If you do a calculation and then compare the results against some expected value it is highly unlikely that you will get exactly the result you intended.



In other words, if you do a calculation and then do this comparison:

if (result == expectedResult)

then it is unlikely that the comparison will be true. If the comparison is true then it is probably unstable – tiny changes in the input values, compiler, or CPU may change the result and make the comparison be false.
http://www.cygnus-software.com/papers/c ... umbers.htm
You do not have the required permissions to view the files attached to this post.
win 11 64 25H2 ryzen 8600G (6*4.3 GHZ) 48 GB Ram

Post

magicmusic wrote:
please read link about FPU. i find not a explain for C, but problem is same.
Have you even considered that if you continue to insult the developers by implying that they do not understand the basics of coding, your credibility may become impaired? :dog:
Windows 10 and too many plugins

Post

I don't really know what you're getting at here, you seem to be implying two things:
1) That some of the problems that you're seeing are due to floating point round/accumulation and comparison errors in our code (I'm confused by this because this kind of thing is very unlikely to cause something as large as plugins to be loaded). Where did you deduce that this may be the cause of some problems? If you genuinely have a source/reason for highlighting this, please let us know as this could be a vital clue to tracking something down.

2) That we don't know how floating point numbers are stored, have any idea of basic processor architecture. The key thing you seem to brush over in the quotes you gave was this:
[quote]even minor variations in the order of computations can change the result. Compilers, machines, and resulting programs can store intermediate results subjected to necessary rounding in varying precision, so a change in any of these usually leads to different results.[quote]
Obviously we understand this or most of code wouldn't work...
This is a really fundamental thing to learn when programming, I hope I wouldn't find any assumptions about accuracy for float variables used in equality comparisons in our codebase!

(For info, as a general rule-of-thumb, you only ever check "is greater than"/"is less than" when testing floats logically, or if they're within a given range. If you want some really interesting reading, check our denormals...)

Post

dRowAudio wrote:I don't really know what you're getting at here, you seem to be implying two things:
i have only post link because you write
"at the very least we would write Code: if (floatVariable == 1.0f
) that you know that this is not good too. so wy you write so much about that. I dont want break down your ego. I really hope that waveform one day work stable and good as other software

I want give you some hints wy there can happen such strange problems as in collective or this with the memory, or the controller data draw. I never see this in any other software.
win 11 64 25H2 ryzen 8600G (6*4.3 GHZ) 48 GB Ram

Post

Hello there,
I have been experiencing same issue with both Biotek and Collective and it bugged the hell out of me, however I was able to figure out the workaround. There was nothing in the logs as, previous folks commented :)

I have narrowed the issue to use of external, or 3rd party MIDI clips. If you import MIDI clip via Waveform or copy/paste, the clip will not play with either Collective or Biotek, however it will play fine with any other synth (tried Strobe2, Equator, and FM Synth) and all work fine. The workaround for the issue is to copy the content of the MIDI clip (select in MIDI editor, then prs CTRL/CMD C) and then create empty MIDI clip and just paste the MIDI notes to the empty clip and everything works. There is something in MIDI clip that is throwing off these two synths. I am pretty sure Wolfram will figure it out quickly :)

Wolfram pls ping me directly if you want me to send you the Midi song I used to test this out. On a side note, Collective is quite slow and quite resource needy app ..I have really fast macbook pro, with super fast SSD drive and typically I can ride 20-30 tracks in edit mode with any synth except with Collective, even couple of tracks will slow down my mac quite significantly. Again pls reach out if you want me to help you test this out :)

Tested with: Macbook Pro Touch 2016 with 16Gb RAM. Waveform 8.2.0, Collective 1.1.0 and Biotek 1.5.5

All the best

Beli

Post

beli wrote:
I have narrowed the issue to use of external, or 3rd party MIDI clips. If you import MIDI clip via Waveform or copy/paste, the clip will not play with either Collective or Biotek, however it will play fine with any other synth (tried Strobe2, Equator, and FM Synth) and all work fine. The workaround for the issue is to copy the content of the MIDI clip (select in MIDI editor, then prs CTRL/CMD C) and then create empty MIDI clip and just paste the MIDI notes to the empty clip and everything works. There is something in MIDI clip that is throwing off these two synths. I am pretty sure Wolfram will figure it out quickly :)
All my Collective silence tests were with MIDI patterns created within Waveform itself. Nothing was ever imported, and I can still reproduce the failure.

So if you are experiencing an issue with imported files, that is another, unrelated issue.
Windows 10 and too many plugins

Post

Ubuntu 16.4 64 bit.

I've loaded a problematic song again and noticed a new thing. Just after loading I created a new edit to test something else. On this edit the sound cuts out as usual after a few seconds but at the same time all the parts in the arrangement went blank (MIDI and step). The contents were still there, the part rendering just failed. I tried to reproduce it but it only happened the first time.

When we have errors like that in our software then there is usually something is writing somewhere where it's not supposed to write to (eg writing outside array bounds). This is usually an extremely annoying bug to find. On some computers it will write to uncritical areas where it doesn't matter, on others it will destroy a graphics context or sample buffer pointer. I hope you can reproduce it at some point as it's really annoying.

Remember: There are 2 hard problems in computer science: caching, naming and off-by-1 errors.

Post

Addendum: I've just tried to run Waveform inside gdb but then everything seems to work fine. No signs of exceptions or segfaults. Without gdb Waveform shows the old behavior.

Another observation: The Collective instance that cuts out is using the Pop Kit. The playback is now silent but when I press stop then I can hear the tail of the crash cymbal even though it is not used anywhere near the stop position. This also only works the first time. After that it remains silent.

Post

I find a more easy way to reproduce the silence bug. see video it use 8.2.5 waveform . it use the song i upload with a change. i set the preview for the browser to the collective that contain drum sounds. now the bug happen when all other collective are mute and receive no notes. then play preset "step clip rock 2" in browser. play dropout happen faster when change volume. when play in browser "step clip rock 3" then work ok. maybe this help to find the problem. I notice now waveform when more browsers are open too, play in sync. a good enhancement in compare to older



BTW: In video can see that when more browsers are open the volume of all browser is change to same level, if move the level of one. i think it is better, when it is possible that volume can change on each seperate. because when 1 browser show drum, other bass, or other then need diffrent volume so it sound good together
win 11 64 25H2 ryzen 8600G (6*4.3 GHZ) 48 GB Ram

Post

the function "use plugin for midi preview" not work correct. when choose a collective and choose "use plugin for midi preview" and then play "step clip rock 2" in browser(important to play once with new sound). then open this collective that is use for midi preview and change the sound, waveform crash. happen several times

15 Oct 2017 22:12:00 Opening VST UI: Collective
15 Oct 2017 22:12:02 Crash report created: C:\Users\pc\AppData\Roaming\Tracktion\Waveform\Temporary\Crash Logs\Waveform 8.2.5 Crash Log 2017-10-15(4).dmp
15 Oct 2017 22:12:02 Crashed
15 Oct 2017 22:12:02
15 Oct 2017 22:12:02 Thread 0:

should i send the dmp to support ?
win 11 64 25H2 ryzen 8600G (6*4.3 GHZ) 48 GB Ram

Post

Yes, if you can send us the DMP (and the normal log file as we need that to match the versions exactly) that will greatly help us figure out what went wrong.

Post

FYI everyone, there's a new beta here which might solve the silence bug: viewtopic.php?f=22&t=492968

Post Reply

Return to “Tracktion”