All times are UTC+02:00




Post new topic  Reply to topic  [ 287 posts ]  Go to page Previous 125 26 27 28 29 Next
Author Message
PostPosted: Tue Feb 18, 2014 1:15 pm 
Site Admin
User avatar

Joined: Mon Mar 17, 2008 1:40 am
Posts: 11425
Quote:
Quote:
Ouch! I was always wondering why the CPU load of the RF display was so high... Well now I know. I was accidentally calculating 4 times as much data as I needed. On top of that, I was using the 'sin' (sinus) function instead of a lookup table.

I know that most people won't have this thing turned on, but still...
Is (Changes:
TBA) the result of that, or do you mean something else?
Among others. I have filled it in now - I had a meeting this morning and I got up too late to have time to type anything more than 'TBA'.


Top
   
PostPosted: Wed Feb 19, 2014 12:54 pm 
User avatar

Joined: Tue Sep 28, 2010 10:56 pm
Posts: 326
Location: Usa
latest beta is very good for Cpu - memory and sound. I noticed a little better bass and highs
Also no problem with Asio... plays ok.!

_________________
Sexy Girls in your city


Top
   
PostPosted: Fri Feb 21, 2014 7:28 am 
Site Admin
User avatar

Joined: Mon Mar 17, 2008 1:40 am
Posts: 11425
Windows stand alone: http://www.stereotool.com/download/ster ... 41-035.exe
Winamp DSP: http://www.stereotool.com/download/dsp_ ... 41-035.exe
VST32: http://www.stereotool.com/download/vst_ ... 41-035.dll

This time I have moved the test tones (FM tilt, FM calibration) and the calibrations itself out of the chain2() call. This is a bit risky (easy to introduce bugs) - it seems to work fine here though.

For people who use the kinda outdated "FM Calibration" (you might need it if you have a really bad sound card or transmitter): It does NOT cause any additional latency anymore (before it would double the latency).

Changes:
- Asio hiccups protection: FM still needed
- Make 'Hide hiccups' behavior switchable (now enabled for Normal and Low Latency output, not yet for FM).
- Composite Limiter effect no longer visible in GUI. (Is that bad?)
- FM Calibration moved outside chain2() function. Does not cause extra latency anymore.
- FM Calibration and FM Tilt test tone generation moved outside chain2() function.

Older changes:
- Optimization: Removed a few 'division by 0' protections that appear to be unnecessary.
- Optimization: RF spectrum calculation uses lookup table for sin() calculations.
- Optimization/Bug fix: RF spectrum calculation was analysing (and then removing) 4 times more data than it should.

- Optimized clipper bass handling performance. CPU load should be 1-2% lower.
- Optimized RDS encoder performance. CPU load should be about 2% lower.
- Added ASIO logging. Logging is written to C:\temp\asio.log if the directory C:\temp exists.

- Optimized Natural Dynamics and compressors further.
- Fixed ASIO bug introduced in previous beta
- Improved Natural Dynamics performance

- Hm, what about the FM output latency??? -> Fixed
- Reduce stand alone version memory usage (unused low latency thread items can be removed.)
- Stand alone version: OPTIMIZE SOUND CARD HANDLING CODE (USES EXTREMELY AMOUNT OF CPU POWER). Done, CPU load is a few % lower now. More testing needed to make sure no new bugs are introduced!
- For ASIO HQ mode, add redundancy protection. This reduces the effect of hiccups if the buffer is too small. Done for Normal and Low Latency, FM still needed
- Declipper display was broken.
- Lower ASIO latencies possible. Now both for normal and low latency monitoring outputs.
- Fix ASIO buffer size calculation. Probably need an offset to allow easy upgrades from older versions.
- Bugs in beta's after BETA023 should be fixed now. The extra thread is still gone though.
- FM output for input sample rates below 30 kHz is no longer possible. This makes things a lot easier (I know that I will never need more than 4 times upsampling so I don't have to change buffer sizes depending on the input sample rate).

- Get rid of chain2() thread. This should also allow reducing the ASIO latency by 1 step (usually 1.5 ms). Hm.... Or not? I'm confused :( Well at least the thread is gone now.
- New ASIO behavior: Push samples, read them back directly from buffer, skip whole Chain2 stuff.
- Old Hard Limit for composite limiting was slightly tighter input level was very high. And had no overshoots; the new one does.
- Lot of things from separate thread moved to main code. This includes a lot of changes that affect different sample rates and might be buggy. -> Was indeed buggy
- Memory usage reduced by 60 MB -> No, was only in my VMware environment. Removed this change. Hm now other people are confirming it. Will add this change again.
- Removed some multi-threading, replaced it by doing everything in the same thread. I would have expected a small deterioration in performance, but on my pc it's actually running faster!
- Memory usage should have been a lot lower but appears to be nearly unaffected. I don't understand why... Oddly, if I turn some compiler optimizations off, it uses about 60 MB less!

- Hard Limit for composite clipper caused very soft clicks every block!!! Also in older versions...
- Composite Limiter was running in a separate thread, and taking 2 ms extra latency. The new version does not do that anymore, and returns a cleaner spectrum, but it requires a bit more horse power from the PC because it doesn't run on a separate CPU anymore.
- Added HQ mode Not available, for testing only
- Improve Multiband3 and Singleband2 limiting and (to a lesser extent) compression for low latency settings. LQ output should sound similar to normal output! Fixing this will also improve audio at lower latency settings. Compressor is probably more or less ok, limiter is pretty horrible, also at lower latencies!
- Fixed Phase Rotation frequency effects at low latencies (need to compensate for loss at certain freqs in low latency modes)
- Fixed AZIMUTH behavior at lower latencies
- AGC behaves slightly differently for lower latencies - Kinda OK. With shorter block size the drop for short spikes is bigger, which leads to a slightly lower overall output level. But I cannot easily fix that. Other differences are fixed now.
- Clipper (probably only ABDP) does not work well for latency 128. Yup -> if I lower the top bass freq from 400 to 200 Hz it's MUCH better. Fixed.
- Something removes low bass in low latency modes. -> EQ and other things. -> Improved. Difference is still large though.
Rewrote LQ Low Latency monitoring to use the normal processing code. Works reasonable, sound resembles that of the normal latency EXCEPT for the bass limiters and to a lesser extent the compressors in the multiband section. Memory usage for plugin version is reduced by more than 20 MB. Stand alone version might use slightly more than before.
- Fixed FOX TV Carbon Coder R128 normalization issue Waiting for feedback.
- Moved a lot of threads into a single thread. Might improve hiccups that some people have reported.
- Added Power Highs (it's in the same window as Power Bass).
- Moved Power Bass and Power Highs to before the wideband AGC to improve volume level consistency.
- Sudden fast rise of bass or highs is limited, new slider 'Release boost' added. I'm not really sure yet if this is ok; if there's a loud high or low sound it can push the band down a lot, and it comes down slower than before. If needed I can add something to allow it to come back faster after a short spike. Waiting for feedback first though.
- Sidechain checkbox removed (without that doesn't exist anymore).

Attempt #2: Redesigned Simple Clipper. Reduced CPU load.
- Reduced the memory usage
- Fixed most of the Stereo Image artifacts!!! "Deprecated" is removed from the sliders that were marked with it. See (*) for a cool new possibility!
- Removed some more unnecessary steps (AZIMUTH 2x, Stereo Boost 2x).
10 remaining.
Fixed 'Post filter for DC offset' problem.
52. Check CPU load. Start with checking if there's anything left that uses the 'unnecessary steps'. Sevdah Web preset: Data still gets converted 58 times... I think I need to do this one first, it should have some effect on the CPU load. 28 removed - next convert the 2 IIR filters so they can be optimized and the merge/split around it can be removed. I'm not measuring any effect from this though (but it makes the code simpler which is also good)
53. Noise Gate/Stereo Boost: Pre-calculate 1-cos() and sqrt() values.
55. Check MemoryPool behavior for cache improvements -> No effect measured, and might make behavior less constant.
56. Check if we can go in opposite direction for each next step to improve cache.
57. Check if lazy reverse FFT is an option. -> No, difficult and gain does not even seem to be measurable.
58. Created a separate class that performs the processing chain. Currently the same code is repeated twice (once for normal processing, once for low latency processing) - which means that a lot of code is duplicated and it's difficult to add extra chains. Most, not all, of that code is now moved elsewhere.

TO BE DONE:
- Fix test tones in HQ mode (pc and pc2 must be linked)
- Remove rest of Chain2
- Still some weird buffer filling behavior, definitely when using normal (non-ASIO) I/O. But ASIO also has a small offset sometimes.

SOON:
- Add watchdog for stand-alone version. Both built-in and separate.
- Fix switching HQ mode off bug

LATER:
- Make Low Latency monitoring latency configurable (between 128 and 512, current value is 256).
- Add some code to New/Delete in _DEBUG mode to test for never used memory (large blocks filled with 0's).
- Spread over cores is not constant, which causes differences in performance. I *think* it might be the chain2() code that causes this. Actually it might be a good idea to get rid of that completely... Check if this is still the case -> Yes, for some people it is. It does not make any sense though, if you just process without GUI there are exactly 2 threads running, so the load should always be the same (only the threads can move to another CPU core).
- Search for -- loops and try to optimize them
- Search for nested min/max calls and split them


Top
   
PostPosted: Fri Feb 21, 2014 12:55 pm 

Joined: Mon Jan 21, 2013 3:01 pm
Posts: 126
Just installed beta35
CPU 28-36%
Memory 136.100 kB

beta 24 proc.34-40% mem. 221.928 kB
beta 27 proc.34-39% mem. 221.108 kB
beta 28 proc.33-38% mem. 153.008 kB
beta 29 proc.33-38% mem. 152.324 kB
beta 33b proc.29-36% mem. 134.552 kB
This information is measured without incoming sound. Stereo and RDS are switched on. Marian Trace Alpha, 64 bit drivers.


Top
   
PostPosted: Fri Feb 21, 2014 4:33 pm 
Site Admin
User avatar

Joined: Mon Mar 17, 2008 1:40 am
Posts: 11425
Something appears to be wrong in 035. I had it working here, but now when I start it I get no 'normal output' audio. When I enable 'Normal Output', I also miss half of the screen updates. When I switch to an older version it's ok. This is really weird, because earlier it worked fine.


Top
   
PostPosted: Fri Feb 21, 2014 4:41 pm 

Joined: Wed Dec 19, 2012 8:19 am
Posts: 140
Quote:
Something appears to be wrong in 035. I had it working here, but now when I start it I get no 'normal output' audio. When I enable 'Normal Output', I also miss half of the screen updates. When I switch to an older version it's ok. This is really weird, because earlier it worked fine.

I'm not having that problem?
What diffrent is, and I didn't pay attention too it in these last beta's, but in 7.40 (and before) for FM-output you need to have FM-transmitter enabled and soundcard FM output. This is now not the case anymore.

With FM-transmitter disabled I still have processed music. No FM buffer bar appears.
Not sure if this is an problem?

_________________
The Power of Sound

''Music is a moral law. It gives soul to the universe, wings to the mind, flight to the imagination, and charm and gaiety to life and to everything.'' - Plato


Top
   
PostPosted: Fri Feb 21, 2014 9:25 pm 
Site Admin
User avatar

Joined: Mon Mar 17, 2008 1:40 am
Posts: 11425
@PowerSound: That's definitely a bug. And it could very well be related to what I'm seeing here.


Top
   
PostPosted: Fri Feb 21, 2014 10:05 pm 
Site Admin
User avatar

Joined: Mon Mar 17, 2008 1:40 am
Posts: 11425
Hm, interesting. I ran a debug build (which also includes a lot of changes that I made today) and it doesn't have this problem. So either I fixed it or it's something that only happens in release mode.

Ugh! Ok, the FM thing - not sure if that's good or bad. (But the bar should appear if I keep this behavior).

But it isn't related at all - turns out that I forgot to align the sound card buffers at a multiple of 16 bytes. Which means that it *might* work, or crash, depending on chance. I'm now first trying to reproduce the behavior with the current version, if that succeeds I will align the memory and check if the issue is indeed fixed.


Top
   
PostPosted: Sat Feb 22, 2014 3:21 am 
Site Admin
User avatar

Joined: Mon Mar 17, 2008 1:40 am
Posts: 11425
Ok, issues all seem to be fixed now - and low latency mode can reach lower latencies than before (there was a bug there, it failed at ASIO settings lower than 256 samples!).

Will run a build tonight.


Top
   
PostPosted: Sat Feb 22, 2014 10:27 pm 
Site Admin
User avatar

Joined: Mon Mar 17, 2008 1:40 am
Posts: 11425
Windows stand alone: http://www.stereotool.com/download/ster ... 41-036.exe
Winamp DSP: http://www.stereotool.com/download/dsp_ ... 41-036.exe
VST32: http://www.stereotool.com/download/vst_ ... 41-036.dll

Changes:
- Fixed buffer alignment bug of 741-035.
- Fixed very low ASIO latency bug for low latency monitoring output. Even 0.35 ms of ASIO buffer works now.
- Fixed FM redundant click protection. (*)

- Removed rest of Chain2
- Fix test tones in HQ mode (pc and pc2 must be linked)

(*) If you use ASIO, there's a new checkbox that attempts to hide cracks if the calculations don't finish in time. Basically, I'm putting some preliminary data in the ASIO buffer, so if I'm still calculating there's at least something close to the correct audio in the buffer. Turn this checkbox off when you're searching for the good buffer size numbers!

Older changes:
- Asio hiccups protection: FM still needed
- Make 'Hide hiccups' behavior switchable (now enabled for Normal and Low Latency output, not yet for FM).
- Composite Limiter effect no longer visible in GUI. (Is that bad?)
- FM Calibration moved outside chain2() function. Does not cause extra latency anymore.
- FM Calibration and FM Tilt test tone generation moved outside chain2() function.
- Optimization: Removed a few 'division by 0' protections that appear to be unnecessary.
- Optimization: RF spectrum calculation uses lookup table for sin() calculations.
- Optimization/Bug fix: RF spectrum calculation was analysing (and then removing) 4 times more data than it should.

- Optimized clipper bass handling performance. CPU load should be 1-2% lower.
- Optimized RDS encoder performance. CPU load should be about 2% lower.
- Added ASIO logging. Logging is written to C:\temp\asio.log if the directory C:\temp exists.

- Optimized Natural Dynamics and compressors further.
- Fixed ASIO bug introduced in previous beta
- Improved Natural Dynamics performance

- Hm, what about the FM output latency??? -> Fixed
- Reduce stand alone version memory usage (unused low latency thread items can be removed.)
- Stand alone version: OPTIMIZE SOUND CARD HANDLING CODE (USES EXTREMELY AMOUNT OF CPU POWER). Done, CPU load is a few % lower now. More testing needed to make sure no new bugs are introduced!
- For ASIO HQ mode, add redundancy protection. This reduces the effect of hiccups if the buffer is too small. Done for Normal and Low Latency, FM still needed
- Declipper display was broken.
- Lower ASIO latencies possible. Now both for normal and low latency monitoring outputs.
- Fix ASIO buffer size calculation. Probably need an offset to allow easy upgrades from older versions.
- Bugs in beta's after BETA023 should be fixed now. The extra thread is still gone though.
- FM output for input sample rates below 30 kHz is no longer possible. This makes things a lot easier (I know that I will never need more than 4 times upsampling so I don't have to change buffer sizes depending on the input sample rate).

- Get rid of chain2() thread. This should also allow reducing the ASIO latency by 1 step (usually 1.5 ms). Hm.... Or not? I'm confused :( Well at least the thread is gone now.
- New ASIO behavior: Push samples, read them back directly from buffer, skip whole Chain2 stuff.
- Old Hard Limit for composite limiting was slightly tighter input level was very high. And had no overshoots; the new one does.
- Lot of things from separate thread moved to main code. This includes a lot of changes that affect different sample rates and might be buggy. -> Was indeed buggy
- Memory usage reduced by 60 MB -> No, was only in my VMware environment. Removed this change. Hm now other people are confirming it. Will add this change again.
- Removed some multi-threading, replaced it by doing everything in the same thread. I would have expected a small deterioration in performance, but on my pc it's actually running faster!
- Memory usage should have been a lot lower but appears to be nearly unaffected. I don't understand why... Oddly, if I turn some compiler optimizations off, it uses about 60 MB less!

- Hard Limit for composite clipper caused very soft clicks every block!!! Also in older versions...
- Composite Limiter was running in a separate thread, and taking 2 ms extra latency. The new version does not do that anymore, and returns a cleaner spectrum, but it requires a bit more horse power from the PC because it doesn't run on a separate CPU anymore.
- Added HQ mode Not available, for testing only
- Improve Multiband3 and Singleband2 limiting and (to a lesser extent) compression for low latency settings. LQ output should sound similar to normal output! Fixing this will also improve audio at lower latency settings. Compressor is probably more or less ok, limiter is pretty horrible, also at lower latencies!
- Fixed Phase Rotation frequency effects at low latencies (need to compensate for loss at certain freqs in low latency modes)
- Fixed AZIMUTH behavior at lower latencies
- AGC behaves slightly differently for lower latencies - Kinda OK. With shorter block size the drop for short spikes is bigger, which leads to a slightly lower overall output level. But I cannot easily fix that. Other differences are fixed now.
- Clipper (probably only ABDP) does not work well for latency 128. Yup -> if I lower the top bass freq from 400 to 200 Hz it's MUCH better. Fixed.
- Something removes low bass in low latency modes. -> EQ and other things. -> Improved. Difference is still large though.
Rewrote LQ Low Latency monitoring to use the normal processing code. Works reasonable, sound resembles that of the normal latency EXCEPT for the bass limiters and to a lesser extent the compressors in the multiband section. Memory usage for plugin version is reduced by more than 20 MB. Stand alone version might use slightly more than before.
- Fixed FOX TV Carbon Coder R128 normalization issue Waiting for feedback.
- Moved a lot of threads into a single thread. Might improve hiccups that some people have reported.
- Added Power Highs (it's in the same window as Power Bass).
- Moved Power Bass and Power Highs to before the wideband AGC to improve volume level consistency.
- Sudden fast rise of bass or highs is limited, new slider 'Release boost' added. I'm not really sure yet if this is ok; if there's a loud high or low sound it can push the band down a lot, and it comes down slower than before. If needed I can add something to allow it to come back faster after a short spike. Waiting for feedback first though.
- Sidechain checkbox removed (without that doesn't exist anymore).

Attempt #2: Redesigned Simple Clipper. Reduced CPU load.
- Reduced the memory usage
- Fixed most of the Stereo Image artifacts!!! "Deprecated" is removed from the sliders that were marked with it. See (*) for a cool new possibility!
- Removed some more unnecessary steps (AZIMUTH 2x, Stereo Boost 2x).
10 remaining.
Fixed 'Post filter for DC offset' problem.
52. Check CPU load. Start with checking if there's anything left that uses the 'unnecessary steps'. Sevdah Web preset: Data still gets converted 58 times... I think I need to do this one first, it should have some effect on the CPU load. 28 removed - next convert the 2 IIR filters so they can be optimized and the merge/split around it can be removed. I'm not measuring any effect from this though (but it makes the code simpler which is also good)
53. Noise Gate/Stereo Boost: Pre-calculate 1-cos() and sqrt() values.
55. Check MemoryPool behavior for cache improvements -> No effect measured, and might make behavior less constant.
56. Check if we can go in opposite direction for each next step to improve cache.
57. Check if lazy reverse FFT is an option. -> No, difficult and gain does not even seem to be measurable.
58. Created a separate class that performs the processing chain. Currently the same code is repeated twice (once for normal processing, once for low latency processing) - which means that a lot of code is duplicated and it's difficult to add extra chains. Most, not all, of that code is now moved elsewhere.

TO BE DONE:
- Still some weird buffer filling behavior, definitely when using normal (non-ASIO) I/O. But ASIO also has a small offset sometimes.

SOON:
- Add watchdog for stand-alone version. Both built-in and separate.
- Fix switching HQ mode off bug

LATER:
- Make Low Latency monitoring latency configurable (between 128 and 512, current value is 256).
- Add some code to New/Delete in _DEBUG mode to test for never used memory (large blocks filled with 0's).
- Spread over cores is not constant, which causes differences in performance. I *think* it might be the chain2() code that causes this. Actually it might be a good idea to get rid of that completely... Check if this is still the case -> Yes, for some people it is. It does not make any sense though, if you just process without GUI there are exactly 2 threads running, so the load should always be the same (only the threads can move to another CPU core).
- Search for -- loops and try to optimize them
- Search for nested min/max calls and split them


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 287 posts ]  Go to page Previous 125 26 27 28 29 Next

All times are UTC+02:00


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited