1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- SPS allows you to program signal processing using simple expressions.
- Many aspects of SPS code are similar to C (including comments).
- You can create new variables just by using them, and you can read
- and write predefined variables (of which each effect has its own)
- to interact with the effect. Note that variables are all floating
- point numbers (no strings), and the maximum length of a variable's
- name is 8 characters (anything longer will be ignored).
- So, to create a variable, you can simply use it, for example:
- x = 5;
- You can also use a variety of operators and math functions to
- modify variables, see the Operators and Functions tabs above.
- Code can include C and C++ style comments:
- // using the doubleslash comments until the end of the line
- /* using the classic C comments
- comment a block of text */
- You can combine operators and functions into expressions, such
- as:
- x = 5 * cos(y) / 32.0; // this does some leetness right here
- You can use multiple expressions by seperating them with one or
- more semicolons, for example:
- x = x * 17.0; x = x / 5; y = pow(x,3.0);
- It is worth noting that extra whitespace (spaces, newlines) is
- ignored, so if you need to space things out for clarity, you can.
- Variables that are predefined for your effect to use:
- nch: number of channels of PCM stream (1 or 2)
- srate: samplerate of stream (i.e. 44100)
- slider1, slider2, slider3, slider4: the four sliders. Each has a range of 0.0..1.0
- trig1, trig2, trig3, trig4: the four trigger buttons. These should be reset to 0.0
- by your code when you've caught the trigger
- Variables that your per-sample code can modify to apply its effect:
- spl0 = left/mono channel sample, -1.0..1.0
- spl1 = right channel sample, if nch == 2, -1.0..1.0
- skip = set this to > 0 to drop the current sample and not output it
- (this effectively can be used to speed up the output
- repeat = set this to > 0 to process this sample again after
- outputting (this effectively can be used to slow down
- the output. Note that the most you can slow down the
- output due to Winamp architecture limitations is by 50%)
- Now to the important part, how to actually make meaningful effects:
- A simple volume control might be:
- spl0 = spl0*slider1; spl1=spl1*slider1;
- To slow down the output to half speed:
- tmp=bnot(tmp); repeat=tmp;
- To speed up the output to double speed:
- tmp=bnot(tmp); skip=tmp;
- To swap left and right channels:
- tmp=spl0; spl0=spl1; spl1=tmp;
- etc�
|