SynthMaker

Synth cpu probs

Archive · 2006 27 old posts

From the original SynthMaker forum (2004–2014), with its members’ names and dates.

Josh ·

A bit of a wierd one but I have the following problem with my my synth. When I don't play a note, the cpu goes up to 49% and when I play a note it goes down to 12%. Usually the it should be the other way round lol. So I've been scratching my head and stroking my chin and oh yes going over the connections and activating and deactivating various parts of the scematic to try and track down the problem but no success so far. Any idea what it could be

Also if I export it to a vsti and play it in fruity then it takes a few seconds before it starts playing from the piano roll but if I press stop and play the synth using my mouse and fruity's keyboard then it plays immediately

stefan ·

Electrogravtiy wrote: A bit of a wierd one but I have the following problem with my my synth. When I don't play a note, the cpu goes up to 49% and when I play a note it goes down to 12%. Usually the it should be the other way round lol. So I've been scratching my head and stroking my chin and oh yes going over the connections and activating and deactivating various parts of the scematic to try and track down the problem but no success so far. Any idea what it could be

Also if I export it to a vsti and play it in fruity then it takes a few seconds before it starts playing from the piano roll but if I press stop and play the synth using my mouse and fruity's keyboard then it plays immediately

Regarding the CPU usage issue: It's most likely a denormal issue (denormals occur when things approach zero, like in a feedback path when the actual module is fed with silence.).

Somewhere where you have feedback paths you could either: add low amplitude (inaudible) noise or, set the fed back value to zero when it's very close to zero

Josh ·

Ok thanks Stefan 😀

Tom7777 ·

Maybe im wrong but wouldn't it be best to see the synth and look at the module structure and make it so this doesn't happen rather than just adding a denormal fix, i find it weird how cpu issues don't often get addressed in my opinion it's the main issue with SM compared to something like reaktor. People never seem to agree with me these days though but hopefully someone else does 😉

stefan ·

Tom7777 wrote: Maybe im wrong but wouldn't it be best to see the synth and look at the module structure and make it so this doesn't happen rather than just adding a denormal fix, i find it weird how cpu issues don't often get addressed in my opinion it's the main issue with SM compared to something like reaktor. People never seem to agree with me these days though but hopefully someone else does 😉

Not sure I'm following you. You don't think people should fix denormals in the their schematics? In Reaktor / SynthEdit it's quite obvious why you don't have to deal with denormals, you don't have the same control over the signal processing as in SynthMaker. Using Core technology in Reaktor you might have to, unless they don't actually let you control the signals yourself but take some control over them without letting you handle that part.

How is fixing denormal issues not addressing a CPU issue?

Sorry, I'm probably misunderstanding you. There's no way to magically fix denormal issues. And if one would solve it automatically (within components / modules) wherever it _might possible happen_, one would waste a lot of CPU in just removing denormal number many more times than needed.

sambean ·

Sorry to go on about it, but have you looked into the 'denormals are zero' settings for SSE, I've seen it suggested in a few places for tackling denormals With regards to the thread safety, is in not just as dangerous as using the SSE registers themselves? Again, I know very little about these issues, so excuse me if I'm barking up the wrong tree..

Sam

Tom7777 ·

What i mean is i think you should start to try and optimize module combinations so problems like this don't happen, im guessing at some point there will be alot more users and if the cpu problems are still being ignored all that will happen is you will get a load of people complaining that the cpu is too high, im sure there are things you can do but im not a dev so i don't even know much about how to lower cpu and get rid of denormals without help and im sure i won't be the only one either.

stefan ·

sambean wrote: Sorry to go on about it, but have you looked into the 'denormals are zero' settings for SSE, I've seen it suggested in a few places for tackling denormals With regards to the thread safety, is in not just as dangerous as using the SSE registers themselves? Again, I know very little about these issues, so excuse me if I'm barking up the wrong tree..

Sam

I seem to totally have forgotten this. Will look it up! Thanks for bumping this when the memory slips.

Tom7777 ·

I may be wrong but basically what your saying or it seems is that if you use Synthmaker rather than going with reaktor or SE your going to run into denormals and CPU, thats quite sad imho and i originally always used to think that something would be done and it wouldn't be a problem at some point, maybe i was being stupid but thats just the way i thought it would be, if i understand you right then your saying using SM will most likely run into denormals and it's up to the user to fix them, sorry for getting negative but i think if this is always going to be the case maybe you should put a warning on the main page telling users they will most likely have to learn how to fix cpu and denormal issues. Again my original thoughts must have been stupid but if i had always known this i would have probably gone with one of the other dev programs.

stefan ·

Actually it seems like turning on DAZ (Denormals Are Zero) ought to work just fine. We'll give it a go.

And no, that's not what I said 🙂 Even if DAZ would not work we could still deliver denormal free high level modules, and the user can always add a little noise if he/she causes denormals. But DAZ might solve this, we'll have to test it and see.

Tom7777 ·

Yes but then it's still the same case unless the user is restricted to high level modules, basically what i wanted to do is make loads of experimental synths and effects with whatever modules i want and make my own high level modules, if its not every module denormal free and just the high level modules which are fine that sorta makes the toolboxes feature to add your own stuff pointless as there could be demormals or high cpu. The reason i decided on SM was that you could get as complex as you like with synths and make them into the vst/vsti format which is the main reason i chose SM over reaktor as it doesnt allow you to do that. But because i keep running into CPU issues im starting to think its not the dream program i originally thought it was going to be. This DAZ thing sounds interesting though i hope it improves the high CPU issues im having.

angstrom ·

Tom7777 wrote: I may be wrong but basically what your saying or it seems is that if you use Synthmaker rather than going with reaktor or SE your going to run into denormals and CPU

If you think SE and Reaktor are Denormal free you are wrong. SE produces denormals and it is up to the user to fix them, It has denormal modules that you must use. http://synthedit.xwiki.com/xwiki/bin/vi ... cecpuusage

Reaktor too, if you want to make your own low level stuff.

Reaktor primary-level modules are programmed in a way that generally prevents denormals from occurring inside them. Specifically, the DSP algorithms have been modified in a way that they generally shouldn’t produce any denormal values. If you are designing your own low-level DSP structures in Reaktor Core you also have to take care of denormals.

http://66.249.93.104/search?q=cache:Y5z ... ual_EN.pdf

stefan ·

Very informative post angstrom. Thanks! I was suspecting as much. Note sure about how to produce them within SE though. Can you do frame based feedback constructions?

stefan ·

Tom7777 wrote: Yes but then it's still the same case unless the user is restricted to high level modules, basically what i wanted to do is make loads of experimental synths and effects with whatever modules i want and make my own high level modules, if its not every module denormal free and just the high level modules which are fine that sorta makes the toolboxes feature to add your own stuff pointless as there could be demormals or high cpu.

I don't see why that would make it pointless. You'd have to take care of denormals when they occur, which isn't a very complex task. If everything would take care of denormals automatically the whole schematic would use lots of CPU that it really doesn't have to use. I'd say that would be worse 🙂

BTW, DAZ is not supported by SSE1, just SSE2 and up.

http://softpixel.com/~cwright/programming/simd/sse.php

angstrom ·

feedback is sample-block in Se, but it's still possible to get a denormal situation. I've had them, but I would have to take a look in the cellars of my mind to remember what caused them. Not uncommon by any stretch of the imagination - anything beyond '3osc moog' can take you into a denormal situation.

stefan ·

angstrom wrote: feedback is sample-block in Se, but it's still possible to get a denormal situation. I've had them, but I would have to take a look in the cellars of my mind to remember what caused them. Not uncommon by any stretch of the imagination - anything beyond '3osc moog' can take you into a denormal situation.

Sample-block (what I meant by frame) feedback would indeed cause it. I'd bet some modules causes it as well.

Tom7777 ·

Ok then i was wrong so if you want to go low level in reaktor you can get them too and SE has them also, i don't think this should be an excuse for SM to have high CPU though imho i think every possible thing that can be done to lower CPU should be done, as SM is based on lower level development if what your saying is true then it's most likely to have the highest cpu and denormal issues unless you know how to deal with them.

stefan ·

Tom7777 wrote: Ok then i was wrong so if you want to go low level in reaktor you can get them too and SE has them also, i don't think this should be an excuse for SM to have high CPU though imho i think every possible thing that can be done to lower CPU should be done, as SM is based on lower level development if what your saying is true then it's most likely to have the highest cpu and denormal issues unless you know how to deal with them.

It's not an excuse and we're doing what we can, it's not like we're ignoring or avoiding optimizing SynthMaker 🙂. Not sure about the highest CPU and denormal issues though. Like angstrom said, you have to know how to deal with them with the other apps as well.

Tom7777 ·

Like angstrom said, you have to know how to deal with them with the other apps as well.

True but in a way not true as with reaktor you can create very complex sequenced/sampling stuff ect without even touching the core stuff where as with SM you HAVE to use low level modules to create similar stuff or anything the slightest bit experimental, sorry for complaining but not many other people seem to here which i think is a problem as if nobody complains nothing will be done and it is an issue. I like making experimental stuff and i keep on running into high cpu which is another reason why i complain as my dream would be to be able to make as complex and different things as i want without having problems and i hope one day i will be able to do so in SM but currently it doesn't seem to be up to the challenge. Another reason why i chose SM over the over apps is the great support i recieved from the devs at the time and being honest this has slowly declining as more members have joined so everyones always busy these days which is a shame, maybe you should look into expanding the dev team and have some new devs that are there to deal with users that have run into high CPU ect and help them lower it. Just an idea but i know the community is expanding and the custommer service is NOT as good as it used to be so thats my suggestion as if you want to keep custommers happy something will have to be done i think. You can't really just pay attention to new users convince them to buy then ignore old ones as i don't think thats fair, and don't get me wrong i know your probably just busy all the time but thats how it seems sometimes. And if for some reason it's the case that im just being me ignored because i make complaints every now and then i hope you can look at things differently because its the people complaining that should be payed most attention imo. I hope i don't annoy you and thats not the case, i don't mean to but again if nobody complains nothing will ever be done about the problem 😉

sambean ·

Whats the difference then between denormals are zero (DAZ) and 'Flush to Zero'(FTZ)?

As far as I can tell they seem similar, it seems like they're for stopping denormals.. http://www.intel.com/cd/ids/developer/a ... /19971.htm

Sam

stefan ·

sambean wrote: Whats the difference then between denormals are zero (DAZ) and 'Flush to Zero'(FTZ)?

As far as I can tell they seem similar, it seems like they're for stopping denormals.. http://www.intel.com/cd/ids/developer/a ... /19971.htm

Sam

Indeed. Did some brief googling but nothing turned up on what the difference is. But there must be one 🙂

Josh ·

Whoa I see this has caused quite a discussion lol. Incase your wondering, the problem lay with the phaser I modified and and an oversampling module. I still dont have a decent phaser but the cpu problem is fixed. Btw I tryed the denominal modules but they didn't help much, the cpu reduction was about 1-2%...

sambean ·

Another area where there may be room for improvement, but I realize it wouldent be trivial to solve, would be to 'optimize' the stream maths when using primitives.

Currently when you make a 'chain' of stream maths primitives, if you look at the assembler generated, you will see that after every operation, the result is stored to memory, then reloaded before the next operation eg

mulps xmm1,dword ptr [ebp+4240] movaps dword ptr[ebp+4224],xmm1 movaps xmm0,dword ptr[ebp+4224] addps xmm0,dword ptr [ebp+4288]

The second move in this example is redundant as the xmm0 register already contains the value at 'ptr[ebp+4224]', and the first move may be redundant if you write to 'ptr[ebp+4224]' before reading from it again. I'm not sure, but I imagine it may be expensive to write to memory then read back in the following cycle as you have to wait for the memory to be written..

As I said, this wouldn't be trivial to solve and would also add to the compilation time, but may improve general performance..

Sam

doug4350 ·

@Dan...

Hi Dan,

I hope you're not getting discouraged by the dsp-nerd-athon 😀 .

It's not easy, and I'm still very far from becoming a light weight 😉 . If you're aptitude (or heart) isn't in it, don't force it. If it is, keep plugging away. The lights will start to come on over time.

What I'm saying is, if you're going to contribute or be involved, do what you're good at. Folks respect you for that in nerd-ville. 🙂

Take for instance what you're talking about cpu. translate it into, let's say, cars. I want my car to go fast but not use as much gas... Well, roll up the windows and turn off the a/c. But, it'll get hot and stuffy... Or, I want to live to be a hundred years old... Give up smoking, drinking, fast cars 😉 and fast women. But it'll be no fun ... bummer 🙁

I admire my father because he worked on "stuff" that was shot into space during the Apollo era... He, in turn, admires me because I was in concerto competitions at the local jr college in high school. Though, he also almost whooped my a$ when I shorted a capacitor in the basement and it went of like an M-80 😀 (I couldn't hear him yelling because my ears were ringing).

I suck a golf ball through a garden hose at graphics arts 🙂 . I don't care. I want to make noise! In my younger days, I wanted to learn everything under the sun. I don't have the capacity for it anymore. Now, it takes me 2 weeks to learn a 3 minute pop song 😕 .

The morale of the story is, let the guys who are good at it do it. They are... If you want to be good at it, it's a bumpy road 🙂. Don't be ashamed to ask for help. Also, don't be too selfish to pass it on 😇 .

Aloha, Doug

Tom7777 ·

I am good at making stuff though i just don't know how to optimize and lower high cpu but im perfectly ok at making basically anything i want, i shouldn't have to become amazing at optimizing stuff though i don't think as thats something the user shouldn't have to worry about much but with this program you seem to run into these issues alot. I enjoy making stuff and to be honest i don't think i should have to learn how to do the optimizing side of things as the program should take care of that as well as it possibly can. Im still not 100% sure what you mean by your post though are you saying i should give up if im not happy with learning things i find boring/annoying, again i don't think i should have to, i want the program to be like reaktor at some point and allow you to make crazy complex stuff without having to worry about the cpu side of things. Im probably reading what you said the wrong way but basically the idea im getting from it is that you should only use the program if you fully (by fully i mean optimizing and reducing denormals and cpu levels) know how to use the program and i don't think this should be the case. The idea i get from all the devs posts is that they want to make the program easy and for everyone to use so i don't agree with you that it should be some elite (i know how to optimize and lower cpu) program only. 🙂

Don't be ashamed to ask for help. Also, don't be too selfish to pass it on

Not sure if you read the forum much but i have the highest post count have requested numorous features which have been added which now get taken as granted. i have asked loads of questions as well and reported many bugs and made many bug example schematics which i have sent to malc to help fix the program and last of all helped answer various questions that have been posted so im not sure what you mean by this comment 😉 Thanks though 😀

doug4350 ·

Hi Dan...

Im still not 100% sure what you mean by your post though are you saying i should give up if im not happy with learning things i find boring/annoying

Not at all. I'm not saying give up. I was saying that you'll know within yourself learning about something may be impractical to justify pursuing it. Learning isn't always fun. For the 10 years I took lesseons, I *always* had to do warmups. scales, arpegios, Haydn. No fun, but a necessary evil - sort of. The better I became, the harder the exercises I had to learn.

i want the program to be like reaktor at some point and allow you to make crazy complex stuff without having to worry about the cpu side of things.

For the drag & drop components I agree with you. The nature of SM or any other multimedia app demands the utmost optimization. It's not up to us end users to worry about such things, unless we're making something way too crazy 🙂 . Me personally, if I'm making experimental stuff, I don't worry about cpu if it's not interferring/disrupting the audio signal. On the other hand, if I was going to release something, I would at least take the time to at least know optimization basics to get it running within acceptable levels. I'm pretty sure you've done that though.

I don't deny there's optimizations that still can happen. In the majority of releases, there's a comment about one optimization or another. However, if you venture into the code component, your pretty much a cappella 🙂 afa optimizing goes.

Not sure if you read the forum much but i have the highest post count have requested numorous features ... so im not sure what you mean by this comment

My bad... I know, I know.... You are respected around here. That was more directed at the "SM students" so to speak 🙂. I wish I had the time to post 2500+ times!

Aloha, Doug

Tom7777 ·

Thanks doug 😀 Im sure that things will be improved at some point, this is the dev app i chose to support so i just want the best results for it ya know 😉

Wrote something here? To have a post removed or your name hidden, write to [email protected].

Before your first post

A few rules keep this a friendly place. You agree to them once.

Shown next to what you post, here and in the app. It doesn’t have to be your real name: 3–24 lower-case letters, digits or _ (capitals become lower case, spaces become _).

    Then your post goes up straight away.

    Delete this reply?

    Open it in SynthMaker?

    It goes on the track you’re editing there, in place of that track’s sound, and into My sounds. Your other tracks stay as they are.

    Want to keep that track’s sound? Start a new song in SynthMaker first (Song › New song), then open this.

    Report this reply?

    Only the developer reads reports. The person isn’t told who reported them.

    What’s wrong with it?

    Block this person?

    You won’t see their posts and replies here any more. They aren’t told, and you can unblock them at any time.

    People you’ve blocked

    Their posts and replies are hidden from you. Unblock someone to see them again.

    The community rules

    A few rules keep this a friendly place. Everyone agrees to them once, before their first post.