From the original SynthMaker forum (2004–2014), with its members’ names and dates.
stefan ·
Post additions to the Wiki here. Could be useful in the beginning when the wiki isn't as active yet, later on this thread might be obsolete and can fall to sleep.
This thread is only for announcing Wiki additions/changes, not discussing them.
I'll move this thread over to the open forum later on if the Wiki seems stable etc, but meanwhile I'll keep it here in the Early Adopters section.
Latest additions:
AM Waveform Pack Waveforms for Wavedraw Osc
Make a wavetable can load a wav or generate a new wavetable.
Mid/Side Encoder/Decoder Let’s you convert a stereo signal to Mid/Side and vice versa.
Useful URLs
Wiki Guidelines
stefan ·
Added Tips And Tricks section and the Retrigger Workaround!
sambean ·
Added Analysis Tookitto the analysis section 😀
Sam
sambean ·
Variable Delay DSP section
sambean ·
Multiple Pages Tips and Tricks
🙂
stefan ·
Moved topic!
sambean ·
Updated variable delays in dsp section to include asm optimized versions
Anyone having troubles with doing their own GUI stuff could probably learn a bit from this tutorial, so go check it out!
oddson ·
Thanks Stefen... it's a work in progress.
I'm learning something too because I'm moving toward fully custom controls and I needed to understand how to add the preset, midi CC, MinMax etc. to my controls.
BTW - the toolbox should have these mid/low level modules with proper tool-tips.
sambean ·
Added a couple of common questions to the FAQ, feel free to expand/edit..
Sam
oh, and oddson, again, muchos muchos cudos for the effort you've put into the wiki !i!i
Sam
AngularMomentum ·
AM GUI Stuff 😉
stefan ·
Hm. Due to a security breach I had to remove the bin folder in the wiki. I'm not sure if this actually affects anything (at a first glance the wiki seems just fine 🙂), but if it does, keep in mind that it's just temporary.
Good thing I'm on the mailing list atleast 🙂
stefan ·
Added Ranged Log Conversion.
sambean ·
Added Background Render
Sam
rl ·
Added a little Section about code module debugging
sambean ·
Added Using Libsndfile
unkargherth ·
Added Tanh() Approximation to User Creations >> DSP Code
unkargherth ·
Added Led Meter to User Creations >> GUI Widgets
cAPSLOCK ·
(nice to see you return Unk...)
Tom7777 ·
Welcome back unkargherth 😀
unkargherth ·
Thanks for welcomes to all
Added a coment on component_reference:vsttiming:vsttiming on PPQ description
unkargherth ·
Added a new level meter (diferent from this one) at user_creations » dsp_modules
malc ·
Added MIDI and Timers to tips and tricks.
unkargherth ·
Added Poor's man random generator to User Creations >> DSP Modules
infuzion ·
group project: XYpad
[old link]
Optimization
[old link]
Including a way to reduce the ASM code needed for the typical min(max(input,-1),1); by half! Makes me think that using primitives for stream maths is very wasteful...
GUI'd version comming soon.
infuzion ·
I've done a ton of adding & editing over the past month, best to check it here:
[old link]
& thanks for everyone's (past & future) work on the WIKI! 😇
angstrom ·
I've added my old SE 'how to make buttons in Photoshop' tutorial to the SM wiki. It makes some mention of a prior section which I have not yet converted, ignore that - it's just me waffling about graphical conventions and planning your interface. I'll put it up some other day.
[old link]
exonerate ·
i've added a tutorial that show's a filter coded in c++ and the resulting synthmaker code , there's also a download link for the filter.
C++ filter ported to sm code component
Kara ·
Excelent !
Thanks a lot for publishing this.
I could use a couple more of those 🙂
exonerate ·
Added a little modification to the standard wave draw module, i've put it in the instruments section............well it needs something in there 😉
[old link]
infuzion ·
Thanks for adding that to the WiKi! Neat stuff...
How would you approach letting users morph both standard & user-defined waves?
BTW, I hope you didn't mind the little tweaking I did to your tutorial; I just wanted to make it more clear & easier to jump around.
exonerate ·
How would you approach letting users morph both standard & user-defined waves?
Thats a good question!, i was thinking about that today at work, and what i'm probally going to do is make it so you have a drop down list of about 50 waves including the standard ones, that you can load in to the slots as well as load your own, i'm not sure whats going to be the best way to implement it, but it would be cool if i could make a drop down list like the windows ones where you can hover over the slot and then move the mouse across to give you the list of waves, i'm not sure if this would be possible though, i would probally have to create my own drop down list from scratch, not something i want to do. i will implement it in some way though 😉
BTW, I hope you didn't mind the little tweaking I did to your tutorial; I just wanted to make it more clear & easier to jump around.
thats fine 😉 you did me a favour, that was my first time adding any thing to the wiki, you made it just how i wanted it to look.
cheers 😉
infuzion ·
Lots of updates, little new from me:
[old link]
Thanks to unkargherth, BasherT, & exonerate for their recent hard work on the WiKi!
Note to newbies:
Please, when you ask for help, add your question & answer to the WiKi! There are a few pages for FAQ, examples, etc... often you can just update an existing page with clearer information (keep w/in the style for that page). Don't worry about messing things up; it is alot easier for someone like me to edit/move text that someone else typed in (to make it more clear or keep with the established style) than to type it in all myself.
I won't say you must add to the WiKi if you get help here on the forum, but if you expect someone to help you, please pass on the efforts to the future.
😇
infuzion ·
URL style tip:
You don't have to repeat the page title, in fact it is much better you don't to keep the URL shorter. For example, by default for some reason the WiKi would have titled my page like this:
[old link]
Instead I chopped off the end part after the : making the URL shorter & works the same:
[old link]
cheers! 😇
exonerate ·
Added sample player/looper and updated wave draw mod..
[old link]
oddson ·
I'm adding a 'Beginners' tutorial.
[old link]
It will be a series of lessons from "what the heck do I do first?" up to "time to turn 'Developers' mode on."
Here are some thoughts for early topics. Any comments are welcome.
Part 1 - Making a Sound
Part 2 - Adding ADSR
Part 3 - Adding a Filter
Part 4 - Adding Effects
Part 5 - Adding Velocity to volume modulation
Part 6 - Modulating Pitch
Part 7 - Modulating Pan
etc....
stefan ·
Awesome!
infuzion ·
oddson wrote: I'm adding a 'Beginners' tutorial.
cool man it is needed! Suggestions:
Please dd in the very basic basic things, like multiplications (like how the Amp works), adding (by connecting links together on the same connector), & audio & programming terms (I thought Pan meant L/R movement).
cheers
oddson ·
'dd' as a verb... hmm.
I'm thinking of adding a glossary in addition to the 'concepts' page. But on the first pass through I'm just going for the text.
infuzion ·
changes needed
This is mostly for my own reference, but if someone else wants to update a page or 3 themselves, go for it! Just ensure you're in the same format, & your spelling is good (firefox 2.0 works well here).
adsr
Wave Draw OSC
Alot of components are missing definitions.
oddson ·
A lot of components are missing definitions.
I made virtually all the component reference entries (that's what earned my 'WIKI Guru" designation) but I stopped once Malc published the PDF Component Reference.
I'd like to update the WIKI and include many more example OSMs.
They are very effective in showing how something really works.
But... it's a huge task and realistically it's not happening any time soon.
Right now what time I can spare is going to my Beginners tutorials.
(There's also a fair bit of info in there that's now inaccurate.) 🙁
-PS- @ exonerate - can you put that seriously-long URL inside a URL tag? This page is way too wide.
stefan ·
Wow, a lot of good stuff going on at the Wiki now!
BTW, I saw (in the Linking knobs and sliders tutorial) that some images are too wide to fit within the content, you can automatically resize the images by specifying a width, like this:
{{wiki:dokuwiki-128.png?50}}
where 50 is the max width of the picture. Around 670 or so should be good for wiki articles. Just a friendly tip 🙂
exonerate ·
yeah stefan i put that in last night and then realised that they were over hanging, i though there was a way to do it on the wiki, was going to ask about that today.
cheers 😉
exonerate ·
i've added a tutorial which shows you how to link knobs or sliders....
[old link]
jobro ·
Oscilators section added.
Adding some oscilators to that, will give links here when done.
TB303 oscilator
Juno 106 oscilator
rl ·
Hmm,... I think the Term "TB-303 oscillator" is a bit misleading. Your schematic uses the standard SM oscillators offering mathematically exact saw and pulse waveforms with bandlimiting applied, but that's not what justifies it to be a TB-303-like oscillator. I can't find the info right now, but the waveforms of the real machin looks rather different.
jobro ·
Well I tried to develope an oscilator that comes close to the original 303 with the existing oscilators I have at hand.
infuzion ·
jobro wrote: Well I tried to develope an oscilator that comes close to the original 303 with the existing oscilators I have at hand.
Don't feel bad; the tb303 hosted here at SM's website used the same OSCs. MyCo did a better simulation using wavetables IMHO, but they kinda do inherit the low-octave issues discussed in the Ideas thread.
Oddson: nice work w/the tutorials! Even I learned something 😇
jobro ·
Feeling bad you say? Nah it's ok I take this only as constructive criticism.
infuzion ·
Well, it is a good example on how to make an OSC switch... maybe it should be promoted as a GUI, & it happens to be a "working example".
nippybaynes404 ·
I have some of the juno shapes sampled on my computer and I will try to dig them out later. 😉
jobro ·
I made a nicer switch for my own synths, will update the example with it.
exonerate ·
oddson wrote: -PS- @ exonerate - can you put that seriously-long URL inside a URL tag? This page is way too wide.
call me an idiot but how to i format the url?
cheers
oddson ·
It doesn't much matter now as its a page back... but you can put URLs inside a tag like this
[url=http://domain.ca/page.htm]page name[/url]
But you also might want to go a little easy on the verbosity in a file name on the wiki next time... 'c2code_filter' maybe?
exonerate ·
thanks
i'm going to do it like that from now on.
cheers 😉
exonerate ·
But you also might want to go a little easy on the verbosity in a file name on the wiki next time... 'c2code_filter' maybe?
yeah i understand that now, that tutorial was the first time of adding something to the wiki.
cheers 😉
oddson ·
infuzion wrote: Oddson: nice work w/the tutorials! Even I learned something 😇
They're pretty rough so far... I went through one page last night and found a half dozen typos and spelling mistakes. 😊
infuzion ·
oddson wrote: I went through one page last night and found a half dozen typos and spelling mistakes. 😊
Firefox 2.0 has an auto-spellchecker for forms.
oddson ·
I've noticed you mention this before... I am using 2.somthing. How's it work?
infuzion ·
It was on when I installed it. Whenever I misspell, that word gets a red underline, & I r-click to get another spelling. To turn on, you might have to r-click over a field, & select "Spell check this field".
I may have a beta... Info:"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
oddson ·
Yu jsut instal a dicshunary adn it wroks liek a cahrm.
infuzion ·
Hey oddson, your Organizing your OSM tutorial is cool.
bManic ·
Just wanted to say thanks to all you hard working wiki editors! This is FANTASTIC work and helps newbies like me a lot!
Cheers!
bManic
oddson ·
bManic wrote: ...newbies like me...
LOL - you don't get to call yourself a newbie when you're user #1 on the members list.
infuzion wrote: Hey oddson, your Organizing your OSM tutorial is cool.
Thanks... I didn't notice your comment until today. I've made a number of additions since you posted. Part 3 is going to be a step-by-step project with organization of the OSM considered at each stage.
AndydeMaro ·
Is my Idea: User Question after here in Forum:
Adding in the Wiki LFO for Basic Features, (Pitch Filter and all the Others)
de Andy 😉
MackTuesday ·
What does it take to get edit privileges for the wiki? I can view source but it won't let me change anything. I have a new oscillator to put up.
oddson ·
The WIKI is supposed to use the same ID and password as the forum.
MackTuesday ·
oddson wrote: The WIKI is supposed to use the same ID and password as the forum.
I was able to log in, I just can't make changes.
stefan ·
What SynthMaker license do you have? The WIKI authentication uses user groups, and I don't see you in any of the registered users ones. So if you have purchased a license we need to make sure you're in the right user group, which I'll leave to Malc in that case 🙂
Cheers!
stefan ·
We created a new user group with proper Wiki access and added you to it MackTuesday, let us know if there are any issues!
MackTuesday ·
stefan wrote: We created a new user group with proper Wiki access and added you to it MackTuesday, let us know if there are any issues!
Thanks, Stefan. 🙂 I have put my oscillator on the wiki.
exonerate ·
I've just updated my sample looper to version 1.5,
I've also added a multi sample version to the page...
Wiki
cheers 😉
Exo
exonerate ·
Just added a cheap multi LFO,
Non-Bandlimited multi LFO
cheers 😉
Exo
rl ·
Ooops, where did you get the SineLFO primitive from? It's not in my toolbox.
BasherT ·
Just added radio buttons
Nothing ground breaking but these get asked for a lot 🙂
exonerate ·
rl wrote: Ooops, where did you get the SineLFO primitive from? It's not in my toolbox.
I found it inside the chorus/flanger, not sure why it's not in the toolbox.
I assume that its just an approximation of a sine, it uses less CPU than the standard sine osc anyway. 🙂
cheers 😉
Exo
infuzion ·
[old link]
Blackviper's OS tweaking website is up, w/Vista!
exonerate wrote: Just added a cheap multi LFO,
Non-Bandlimited multi LFO
I'm trying to understand "but are perfect for most uses of LFO’s" Exo; are these OK for modifying the output of a OSC, but not to be used as a tone-generating OSC themselves? Also, I'm assuming when you say "average 0.5 percent less CPU per oscillator", you mean that an OSC uses 5.0% CPU on your system, while your LFO uses 4.5%? In that case, your LFO actually uses 10% less CPU (divide, not subtract). A 0.005 difference would be hard to detect....
cheers
exonerate ·
infuzion wrote: [old link]
Blackviper's OS tweaking website is up, w/Vista!
exonerate wrote: Just added a cheap multi LFO,
Non-Bandlimited multi LFO
I'm trying to understand "but are perfect for most uses of LFO’s" Exo; are these OK for modifying the output of a OSC, but not to be used as a tone-generating OSC themselves? Also, I'm assuming when you say "average 0.5 percent less CPU per oscillator", you mean that an OSC uses 5.0% CPU on your system, while your LFO uses 4.5%? In that case, your LFO actually uses 10% less CPU (divide, not subtract). A 0.005 difference would be hard to detect....
cheers
hmm...yeah i suppose thats not very clear, but yeah i did mean that they use 0.5 pecent less cpu, as in the SM osc's use 1 percent and mine use 0.5 percent (overall CPU usage).
I guess I'll just change it to 'uses around half the CPU of the standard oscs' or something.
oh and to answer your first question, yeah they are meant just for modulating things like your osc amplitude or filter cutoff ect... they are no good for actually generating sound (they'll alias badly) and also they don't have a phase input, so are only good as simple modulators. The idea was to create very efficient LFO's, there as basic and optimized as possible.
cheers 😉
Exo
Acrobat ·
As suggested by Infuzion, I added infos on how to build sublists in droplist primitive:
[old link]
infuzion ·
I bet you didn't know you can ZIP better than SM's ZIPper (& other file-size shrinking tips)
+ load array, & much more!
People should add their OSMs to the WIKI more as a permanant storage (if not create a tutorialor problem-fix) if others find their work useful... 😇
oddson ·
From the WIKI page:
7-zip has a better ZIP algorithm that SM does, about 5% smaller. People will appreciate a smaller .OSM when downloading your file, so do this to shrink your .OSM file while staying compatible with SM:
I disagree... the internal compression is more than adequate for most purposes. Unless theres a sample library that goes with an OSM I'd say it's not worth any extra effort.
Do I need to have the 7-zip program on my machine to read these or are they still zip files that any zip program will open?
infuzion ·
Thanks for the feed back oddson! So, I did some editing
oddson wrote: From the WIKI page:
7-zip has a better ZIP algorithm that SM does, about 5% smaller. People will appreciate a smaller .OSM when downloading your file, so do this to shrink your .OSM file while staying compatible with SM:
I disagree... the internal compression is more than adequate for most purposes. Unless theres a sample library that goes with an OSM I'd say it's not worth any extra effort.
I think SM's internal zipper is fine also.
7-zip's ZIP-Deflate routine is 100% compatible to WinXP's/SM's, while smaller, so it is useful if you can't use SM's compression (OSM too large/laggy), need to upload to a .ZIP-only host, or just want to be nice & make smaller files for others.
directions
You can also (re)compress your file into a smaller .OSM while it stays automatically openable by SM.
Or use the super 7-zip routine... readable by more than just 7-zip since it is open source & other unzippers (like the popular WinRAR)add it in (but not XP by default). I use this for my personal archives of old versions.
infuzion ·
Some shortcuts:
[old link]
Please add yours, esp if it isn't documented!
exonerate ·
infuzion wrote: Some shortcuts:
[old link]
Please add yours, esp if it isn't documented!
Added a few more 🙂
Acrobat ·
hi,
I added in USEFUL URLS - Plugin made with SynthMaker
a (hopefully) complete list of all developers of plugs in SM.
I'll keep track of'em from time to time...
🙂
Acrobat ·
I added synths and effects listing beside developer websites,
In USEFUL URLS -> Plugins made with SynthMaker, now you can have a quick glance at almost all the plugs ever developed in SM...
Thanks for the updates guys; it was feeling lonely on the WIKI 😀
Man exo, if I knew what [Enter] did, I would have saved 5 man-hours atleast for the past year!
exonerate ·
infuzion wrote: Thanks for the updates guys; it was feeling lonely on the WIKI 😀
Man exo, if I knew what [Enter] did, I would have saved 5 man-hours atleast for the past year!
🙂
My midi keyboard has died so i'm using the PC keyboard for testing and [Enter] is a great short cut to be able to use the other short cuts! 🙂
stefan ·
Acrobat wrote: I need a reference webpage for this authors:
Stefan Hållén (…unknown link…) (Anna, Bagels)
Anna's home is in the Examples section here on the SynthMaker site. Bagels doesn't have a proper home yet.
Acrobat ·
stefan wrote:
Acrobat wrote: I need a reference webpage for this authors:
Stefan Hållén (…unknown link…) (Anna, Bagels)
Anna's home is in the Examples section here on the SynthMaker site. Bagels doesn't have a proper home yet.
received 🙂
infuzion ·
I expanded the WIKI's "home" page to include direction about copyright and licensing terms. I'm really trying to keep that page short & friendly, but it seems that you have to be direct unfortunately.
Acrobat ·
infuzion wrote: I expanded the WIKI's "home" page to include direction about copyright and licensing terms. I'm really trying to keep that page short & friendly, but it seems that you have to be direct unfortunately.
yeah, infz. it's a good idea - so diatribes of the sort can be avoided in the future.. I thought it was clear that if someone posts a file, it can be used in any-non-commercial project apart from asking the author and obtain an email with the permission, is it not so?
infuzion ·
I'm thinking of splitting up the component reference into 2 separate pages, since it is too long & takes too long to load (& likely bangs the server). Should the 1st page be alphabetical, & the second by category?[/url]
TomC ·
Added a new branch for assembler optimized modules
[old link]
Cheers.
Tom
infuzion ·
Branched off the component_reference:by_category
Acrobat ·
You probably noticed I'm taking care of published VSTs and EXEs made w/SM.
Now: Do you have useful .EXEs made with synthmaker on your HD?
Do you know who created them in the first place?
Please let me know and I'll add them to the list, I'm sure there's a lot more than 1... 🙂
Andrea
infuzion ·
I did some reorganization, most in & around User Creations, and added more cross-references. A good example is what happened to effects.
infuzion ·
[old link]
has a new format; I hope it is better.
If someone can please put short descriptions for the x86 commands, that would be great.
theun ·
I have added descriptions of the x86 asm opcode's. Most of the wordings come straight from my pile of Intel documentation, but on a number of places I did some re-wording.
[old link]
infuzion ·
theun wrote: I have added descriptions of the x86 asm opcode's
cheers! 😇
Andrew J ·
Thanks Theun!
Eska ·
Very usefull to me.
exonerate ·
Added my Preset folder manager to the wiki, now it's at version one 😀
Here....
Made it look a bit nicer as well. 🙂
exonerate ·
Added an optimized version of the Envelope follower to the wiki get it Here!.
Cheers 😉
Exo
infuzion ·
exonerate wrote: Added an optimized version of the Envelope follower to the wiki get it Here!.
When I take out the Switch & compare with the SM toolbox, I get over 50% reduction on my Core2Duo, & I'm guessing 60-70% on a AMD64. Great job!
aliasant ·
exonerate wrote: Added an optimized version of the Envelope follower to the wiki get it Here!.
Cheers 😉
Exo
Wow. Its down to about 10 cycles. My old ones were about 30-50.
Is it still the same basic code?
exonerate ·
aliasant wrote: Wow. Its down to about 10 cycles. My old ones were about 30-50.
Is it still the same basic code?
Yes it's still the same basic algorithm, I just optimized it as far as it will go!!
When using it there should be absolutley no difference from the original except for the CPU use of course. 😉
Cheers 😉
Exo
aliasant ·
exonerate wrote:
aliasant wrote: Wow. Its down to about 10 cycles. My old ones were about 30-50.
Is it still the same basic code?
Yes it's still the same basic algorithm, I just optimized it as far as it will go!!
When using it there should be absolutley no difference from the original except for the CPU use of course. 😉
Cheers 😉
Exo
No your right. I cant see any difference at all.
Except that the env I use has denormals built in.
Great work!!!
exonerate ·
Seen as though I've just optimized the env follower, I figure I'd optimized something which uses it Noise Gate
How's that for hardcore CPU reduction. 🙂 😉
Cheers 😉
Exo
aliasant ·
exonerate wrote: Seen as though I've just optimized the env follower, I figure I'd optimized something which uses it Noise Gate
How's that for hardcore CPU reduction. 🙂 😉
Cheers 😉
Exo
Lol.
The old one used 83 cycles and the new one uses 30.
Well. Pretty good Id say =)
exonerate ·
Optimized the overdrive a bit as well...........Overdrive
Cheers 😉
Exo
aliasant ·
exonerate wrote: Optimized the overdrive a bit as well...........Overdrive
Cheers 😉
Exo
Interesting. You dont use xmm3 or xmm5. Any particular reason?
I had an optimized overdrive but mine used 43 and yours only 32. nice 🙂
exonerate ·
aliasant wrote:
exonerate wrote: Optimized the overdrive a bit as well...........Overdrive
Cheers 😉
Exo
Interesting. You dont use xmm3 or xmm5. Any particular reason?
I had an optimized overdrive but mine used 43 and yours only 32. nice 🙂
No reason, What I do is put variables in high registers starting with xmm7, and work my way down. Sometimes all the registers get used, sometimes not, they didn't get used this time.
I've actually got incredibly quick at optimizing in ASM, I have a set method now which works really well, I think I may do a little tutorial at some point to show how it's done, it's really not so hard when you know how.
I can fully optimize a block of ASM in about 10 - 20 minutes, depending on the size of the code.
Cheers 😉
Exo
aliasant ·
exonerate wrote:
aliasant wrote:
exonerate wrote: Optimized the overdrive a bit as well...........Overdrive
Cheers 😉
Exo
Interesting. You dont use xmm3 or xmm5. Any particular reason?
I had an optimized overdrive but mine used 43 and yours only 32. nice 🙂
No reason, What I do is put variables in high registers starting with xmm7, and work my way down. Sometimes all the registers get used, sometimes not, they didn't get used this time.
I've actually got incredibly quick at optimizing in ASM, I have a set method now which works really well, I think I may do a little tutorial at some point to show how it's done, it's really not so hard when you know how.
I can fully optimize a block of ASM in about 10 - 20 minutes, depending on the size of the code.
Cheers 😉
Exo
Again. Interesting.
What I do when I try my poor asm fu is that I start trying to get rid of as many movaps as possible and I try to rename all the xmm so that they start with xmm0 and on from there. I thought that the optimal would be that you only use xmm0 for the entire code. Maybe thats completely wrong?
Quite the opposite I guess 🙂 Maybe I should try you method, when I understand it 🙂
TomC ·
aliasant wrote: Again. Interesting.
What I do when I try my poor asm fu is that I start trying to get rid of as many movaps as possible and I try to rename all the xmm so that they start with xmm0 and on from there. I thought that the optimal would be that you only use xmm0 for the entire code. Maybe thats completely wrong?
Quite the opposite I guess 🙂 Maybe I should try you method, when I understand it 🙂
There's no difference between the registers xmm0 - xmm7, so use whatever makes you happy.
I normally start with xmm0 and work my way up.
Tom
Andrew J ·
Martin,
It's sometimes good to use other registers so that the processor can start another instruction without having to wait for the instruction involving the xmm0 to finish.
-Andrew
infuzion ·
I tend to use:
xmm0 = ongoing final result
xmm1-3ish = results of sub-sections/single formula
xmm4-7 = (somewhat) static variables (eg: "in", 1.0...)
I'll break my own rules here though 🙂
aliasant ·
Andrew J wrote: Martin,
It's sometimes good to use other registers so that the processor can start another instruction without having to wait for the instruction involving the xmm0 to finish.
-Andrew
Hey that sounds sound 😀
infuzion wrote: I tend to use:
xmm0 = ongoing final result
xmm1-3ish = results of sub-sections/single formula
xmm4-7 = (somewhat) static variables (eg: "in", 1.0...)
I'll break my own rules here though
-infuzion
Isnt that a bit complicated?
Andrew J ·
infuzion wrote: I tend to use:
xmm0 = ongoing final result
xmm1-3ish = results of sub-sections/single formula
xmm4-7 = (somewhat) static variables (eg: "in", 1.0...)
I'll break my own rules here though 🙂
That's almost exactly what I do 😀
exonerate ·
Andrew J wrote: Martin,
It's sometimes good to use other registers so that the processor can start another instruction without having to wait for the instruction involving the xmm0 to finish.
-Andrew
Yes that's right, you'll also notice with my code that I get nearly all the variables into registers straight away, this is so that when they are needed later in the code the processor doesn't have to wait for the memory, to perform a mulps or what ever, although I think variables can often be stored in the CPU cache memory, which would be fast but it's not guaranteed. (I don't really no much about the cache though and how it works)
So my thing is get them into registers long before you need them, seems to work pretty well.
Cheers 😉
Exo
exonerate ·
I've done a quick tutorial taking you through the steps I used to optimize the envelope follower...Here...
I've tried to keep it as simple and to the point as possible, I don't really explain anything about SSE/ASM but hopefully it will show how to effectively optimize ASM.
If anyone needs more detail for certain bits then let me know.
Cheers 😉
Exo
kirkagur ·
exonerate wrote: I've done a quick tutorial taking you through the steps I used to optimize the envelope follower...Here...
I've tried to keep it as simple and to the point as possible, I don't really explain anything about SSE/ASM but hopefully it will show how to effectively optimize ASM.
If anyone needs more detail for certain bits then let me know.
Cheers 😉
Exo
Very very nice!!
one suggestion....highlight the code lines that you remove in the first step
this will be more readable to users that dont know ASM .(and then you really dont need to explain nothing else)
infuzion ·
exonerate wrote: I've done a quick tutorial taking you through the steps I used to optimize the envelope follower...Here...
I've tried to keep it as simple and to the point as possible, I don't really explain anything about SSE/ASM but hopefully it will show how to effectively optimize ASM.
If anyone needs more detail for certain bits then let me know.
What, giving away all my secrets!?! 😠
I mean urm, that's great that you're helping people out! 😀 I like you sharing some of your thought-process, & the comments you put in the later sweeps of the ASM.
A few tips to improve:
1) comment on what the code does: normIn = getting ABSolute value, etc... so if they see another formula that does the same thing, they know a faster ASM replacement, & teach them to think though on how the Code works.
2) How does one get the ASM dump from the Code? 2 small pics would help.
3) Sometimes as I go though the first sweep of the ASM-dump, I only comment out the extra movaps to help keep track, & add in comment-lines with the old corresponding Code-line.
bootsy ·
Thanks for sharing!
Acrobat ·
small spelling error corrected:
the multimode delay example recites:
"Save as above" 2 times
I'm pretty sure the author wanted to say "Same as above"
😉
MichaelBenjamin ·
uh, yes, this asm explanation was surely needed.
so as i understood, sm generates unnecessary shuffling of data and does not use all registers to its full potential.
couldnt this optimisation be automated and integrated into sm´s rendercode, so it produces faster asm on its own?
its because i felt, that i when i go down to this machinecode and really do that register-variable-puzzle-game my head might explode or something similar... never thought i get any insight on this.
thanks exonerate.
infuzion ·
MichaelBenjamin wrote: So as I understood, SM generates unnecessary shuffling of data and does not use all registers to its full potential.
Well, I'm not 100% if it is SM's fault; the Code primitive might use Microsoft's Visual C++'s code-interpreting, which is not as efficient as can be. Also, Code doesn't track where each variable; it takes everything literally, forgetting what happened before it. Example:
index = index + 1;
index = (index<delay)&index;
SM's Code will see each "index" as a unique variable. It can not see like the human brain that the 2 "index" in the second line is the same as the result of the first line.
2nd example, people often need to find a absolute value:
abs = x - (x < 0 & (x+x));
But there is a very fast workaround in ASM:
hex ABSMASK=7FFFFFFF;
movaps xmm0,x;
andps xmm0,ABSMASK;
Related:
+ SSE2=64bit audio, SSE3=faster FFT... please
Code: sqrt(), abs(), pow(e,b), denorm(x,lim), +much more...
Code tips x a beginner
infuzion ·
find real osm size
[old link]
If you guys know of a better & faster way to explain, let me know!
MichaelBenjamin ·
thanks for the tips infuzion!
infuzion ·
More ASM opcodes listed (complete for the ones that highlight in 2.0 now?)
[old link]
& thanks Mo for your entries before! 😇
Hopefully someday I can add these opcodes: + SSE2=64bit audio, SSE3=faster FFT... please
trogluddite ·
Thanks, infuzion - you must have the patience of a saint to work through typing in all the opcodes to see what comes up!
Those extra jump commands look like they could be very useful for custom hopping and byoassing.
Wrote something here? To have a post removed or your name hidden, write to [email protected].