Here are my synthedit modules - no guarantees of working though ...
Use them as you like as long as I get a credit (Daz Disley), and if you make money with any of them I'd appreciate a donation. Get in touch if you have an idea and a little cash and I'll see if I can make the sem you're after !
cheers - daz
please note : these SEMs were made with version 2 of the Synthedit SDK
oh, and my plugins are here...
MODULES - dd_VSorts
funded by Dennis & Ralph ...
4, 8 and now 12, 16, 20 and 24 I/O pins
sorts incoming pin values so that the lower outgoing values are on the lower pins
*except* if value <= 0 it is put to the end of the list ...
example : inputs (5,0,4,-1,3,2,-2,1) gives outputs (1,2,3,4,5,0,0,0)
MODULE - Fseq
for SirSickSik ...
give it a text array of values and an index - it will spit-out a value
please note : this is 1-indexed - i.e. the first item in the array has index = 1
index automatically wraps so if there are (e.g.) 21 items in the array and you give it index 22 you get item 1 back
MODULE MASHUP ZONE
An new experimental page featuring source code for over 50 dd_Modules. Use it to combine multiple modules into one sem and then retrieve the source code ...
If you're not familiar with compiling SynthEdit modules, for a small fee, I'll compile the selection for you ...
More modules will be added soon - if there's a dd_module you use that isn't on this page, please let me know !
MODULE - Float2TextUnits
replacement Float2Text module with option to append a text string to the value
decimal places 0 upto 10 with <auto> setting
built-in float limiter to handle out-of-range user text input
fine mode adds 2 decimal places to readout when mouse is down and <ctrl> key pressed
PREFAB - SE 'ROM'
One solution to creating a 'built-in' effects unit for a synth where you have, for example ; a reverb unit with its own presets that operate independently of the rest of the synth patches, but can be assigned to a patch - i.e. when each synth preset uses a different reverb setting chosen from a pre-defined list of reverb presets.
Rather than using multiple patch mem floats for the data, a single patch mem text holds the current preset with others stored as arrays in a text switch
The images for knobs can be used during design-time and deleted for the exported plugin creating a built-in 'ROM' of presets ...
To add presets to the rom, simply throw-in additional text-fields and populate the data (the KDL module blocks the patch mem text from overwriting the patch rom)
DATA - dd_dataPACK
a whole bunch of modules for handling data, including updated versions of the "TextPlex" modules with editable pin names.
GUI - pseudo lcd display
basic example of using dd_FloatLabel, dd_FloatLabel2, dd_TextPass2 and dd_PadText to display control values as text with David Haupt's DH_CharacterBitmapDriver module
zip includes skin elements and image overlay to create a virtual screen-contrast control.
(basic) compressor response graph
Handy sometimes if you're making a compressor (or other dynamics tool) to be able to visualise the response. This prefab has send and return pins to connect to your circuit, and when the update button is held, the graph samples the dynamic response of whatever you attach to it.
This is a very simple measurement mechanism, using dd_Measure.sem - for decent results, set the attack time of the tested circuit very short, as all the prefab does is send a 1khz sine wave through the test circuit whilst ramping the volume from -64 to -0dB. The output is generated simply by comparing the difference (in dB) between the "dry" sweep send, and the "wet" return signal, then plotting the result.
Prefab requires various sems from other developers (details in the zip) as well as a couple other dd_SEMS - it uses dd_TrackerB to turn a garbled array into an array compatible with dd_GUIF2TeP to send a float to each of the first 64 attached bitmap images. The prefab can be extended to show an additional graph for any make-up gain you might be using - duplicate everything coming out of dd_TrackerB pins (1-32 and 33-64) to (65-98 and 97-128) and replace the (solid background) images with transparent ones in the same position. Now the gain pin of dd_Measure determines how far above or below the regular graph the output graph appears ...
licenced *only* for use in SE - do not use this in a plugin !
IMG : making an EQ response graph ...
(click for a larger version)
The above image shows a prefab for whiteLABEL stWIP that draws an approximate EQ resonse curve. This is just the "measurement circuit" - basically, everytime one of stWIP's EQ knobs is pressed, an envelope is triggered which creates a sine wave sweep. This sweep is then sent through the circuit to be measured before being compared with a "dry" original sweep. The result is plotted via dd_TrackerB and a set of Text Arrays ... the pink section is repeated several times over. This can draw graphs upto 256 pixels wide (with a png for each pixel) ... so, in order to get values in the right range when using fewer than 256 pixels display width, its necessary adjust the frequency range of the sweep, which has inputs for both start freq (40hz here) and sweep range (40 + 250k here). The result is plotted in V/Oct (hence going above nyquist) with linear dB cut/boost. One additional thing in this circuit is that as frequency rises, the release time on the envelope followers is reduced - an to attempt to more accurately measure higher frequencies ...
GUI : dd_MouseHide
Hides mouse when bool input true and caches mouse position whilst invisible
Attach to mouse down pin on an image to have the mouse vanish whilst changing a control and have it reappear when you release the mouse button ... for similar behaviour to SynthMaker guis ...
dd_MouseHide - for SE1.0x
dd_MouseHide2 - for SE1.1x (both are in the zip)
suggested by GuitarBro65 on SE Yahoo group
PREFAB : using dd_4Shaping for dynamics processing
Imagine your regular compression response graph - a diagonal line that at some point or other becomes more horizontal.
That's what dd_4Shaping does - but with 4 threshholds instead of one
When the input is (Xn) the output is (Yn) - (Xn).
dd_4Shaping pumps out the dB gain needing to be applied to the input magnitude of (Xn) in order to make it (Yn).
When the input moves between (Xn) and (Xn+1) the output is scaled to reflect gain required for the result to be between (Yn) and (Yn+1)
The multiplier on the output simply scales the gain to adjust the "amount" of processing, or depth of effect ...
to get (Yn) values simply add the dB input feeding dd_4Shaping to its output ...
for example, to generate a 0 to 1 v scale around a 30dB input you could use the following as a start-point :
(X1:-60)(X2:-45)(X3:-30)(X4:-15)(X5:0) ... (Y1:0)(Y2:0.5)(Y3:1)(Y4:0.5)(Y5:0)
and by combining the hard-knee example with this sort of scaling factor, softer knees can be made
tip : mix between fully compression and no compression (from 1st dd_4Shaping) using a 2nd 4Scaling to drive the mix knob
eg : 100% of gain signal at low and high input, 40% of gain signal at a point in the middle, and scaled between middle and edges.
dd_4Shaping is part of SEMPack Two (below)
dd_SEMPack TWO - various functions ... various uses :
Waveshaper, Dynamics, Control Shaping
MIDI to GUI
Patch number to Volts
Stereo to and from Mid/Side
Enhance GUI displays - wet/dry and ms/bpm
Text Alignment for DH_CharacterBitmapDriver
Float Max from 6 sources
example prefabs including png graphics
** oops ** - I forgot to include dd_PadText in the zip - its here
GUI : dd_YesNo
Raises a simple dialog box with title and text of your choosing.
Outputs a gui bool pulse depending on which button the user presses
in the above example, clicking Yes results in a web-visit
could also be used to verify user wants to commit to e.g. reset
can be cascaded to create a path through branched messages ...
PREFAB : dd_Transfer
want to copy a bunch of values from one set of patch mems to another ?
here's one method using dd_CopyPaste and text arrays.
click the image for larger version :
DSP : Float Scaler
Re-scale Floats on DSP-side
sometimes its handy to have several values originating from a single gui control
using dd_DSPFloatScaler on the DSP side removes the need for multiple PatchMemFloat modules (i.e. scaling done in gui)
and removes need to scale Voltages too ...
Same functionality as built-in (gui) FloatScaler ... output = (input * multiply) + add
GUI : Bools to Float (via binary)
Bi-directional conversion between binary and float ...
connect a button for each binary digit and make a number from bits.
MODE choice determines LSB or MSB read/write order, and when changed flips the bits
DSP : Pulse Train
dd_Pulse - output a pulse every N samples
N = (2 to 100)
Mode determines voltage (0,10) (0,5) (-5,5) (-5,0) (-10,0)
On/Off switch for cpu-saving sleepiness
MIDI : 3 MIDI SEMs
MIDISplitChannels : send input to channel-exclusive outputs
option to KEEP incoming channel number, or FORCE all to channel 1
MIDISplitZones : split a keyboard into 5 zones
4 pins for split positions ... use for multitimbral synths
MIDIHighLow : outputs HIGHEST (or LOWEST) note currently pressed
use to (e.g.) set a monophonic filter frequency after a polyphonic synth
See module help dialogs for further information
Source files for dd_MIDIHighLow can be found here
MIDI : Voice Splitter
Development funded by Wayne @ Jtones - many thanks :)
Splits incoming polyphonic midi into multiple monophonic outputs
Each new note-on goes out of a different (auto-duplicated) midi output pin
Non-note data goes out of the DATA pin
if number of notes pressed is greater than number of output pins, new notes use the OVERFLOW pin
Release order list determines if oldest or youngest notes are terminated when duplicate note events occur
Works over multiple MIDI channels ... see module help for more information ...
DSP : TextSwitcher
made for Del F, this dsp-side text switch is designed to be used with a (0-10v) slider through a (voltage to List) converter - 11 text inputs correspond to voltages 0,1,2,3,4,5,6,7,8,9 & 10 ...
output also updates when currently selected input changes ... no example .se1 as it should be nice and simple to use ...
** update : NOT SUITABLE FOR SWITCHING FILENAMES **
GUI : alternative input methods ...
set a control via time user holds mouse-button down ... delay pin so a single click resets value to zero - hold down <ctrl> key for inverted operation
infinite rotary encoding thingy - use a mask image to control direction / velocity - turn a knob into a rotary encoder / selector switch
includes .se1 example
MIDI : dd_MidiHold
not sure what to call this - maybe midi hold unit with gate .... maybe instant trance gate ...
1 midi pin to play a chord, and another pin for triggering the gate. result is similar to an arpeggiator, except that the entire chord is output on each gate note-on, rather than playing sequentially throught the chord ... image in zip should help explain ... hook it up to a keyboard (for chords) a sequencer (for gate) and a synth (for audio) ... good luck !
GUI ::Float Magnet
Creates a magnetic patch whereby the value won't change within a certain distance of a defined point :
use a transparent (1% alpha) "hit area" or "handle" on top of the visible knob :
example (with magnet position of 0.5 and a magnet strength of 0.1)
when handle is 0, AP is 0, when handle reaches 0.4, AP reaches 0.5
when handle is 0.6, AP is 0.5, when handle reaches 1.0, AP reaches 1.0
(and in the opposite direction when AP changes)
example prefab in zip download
GUI & DSP::Float Plex
*ADDITION* : new dd_DSPTeP2V & dd_DSPTeP2FL - use in place of dd_DSPFloat & Volt Plex as these newer ones sleep - this zip
*ANOTHER ADDITION* : 4 gui-side float to text Plex modules with additional mode pin for direction control - this zip
they look similar to this, and the gui-side i/o swaps variously for the 4 versions:
For when you have a lot of values that change with preset but don't need automation or midi control.
Combines 32 gui-floats into a single gui-text to pass from gui to dsp, then splits dsp-text into dsp-floats.
Includes dsp-text2dsp-volts module too - more cpu than using 32 x Float2Volt but maybe useful.
GUI :: Animation position to Bools
Turns a knob image into a rotary selector for GUI lists - like OL AP2List, but with Bool outputs instead - Auto-Duplicating Bool pins for connecting as many or as few as you like ...
NEW -> dd_SEMPACK_ONE
various (30+) SEMS for gui enhancement and polyphonic effects circuits !
download includes various examples of what these do - for a VST plugin using a majority of these SEMS, please see this page.
DSP :: No Sleep
simple sem that blocks ST_STATIC calls - "forces" downstream modules to stay awake ...
GUI :: bool send
Isolates mouse down from bitmap (and other bools) so they're no longer bi-directional ... i.e. when the outut pin receives a change in state, it doesn't pass it to the input pin ...
DSP :: Voltage Sorter (4) & Voltage Sorter (8)
fed with 4 voltages, dd_Vsort4 outputs them in ascending order. Zero volt inputs are put to the end of the list :
inputs [6,3,7,2] >>> outputs[2,3,6,7]
inputs [6,0,7,2] >>> outputs[2,6,7,0]
inputs [-6,0,7,2] >>> outputs[-6,2,7,0]
made for Prodyon virtual gear ... although primarily designed for control signals [midi2cv ->pitch] there is grizzly fun to be had by running audio through it too ...
As you'd expect, VSort8 has 8 i/o instead of 4 ...
GUI :: diy envelope display
using a single Patch Mem Float Out, dd_EnvDisp drives an arbitrary number of chained containers to create the above display from a single png
throw some audio at it, and watch it go :)
zip includes sem, se1, png & txt
GUI ::Double-click reset
The name says it all ... double click the knob to have the value reset
The 2 clicks must be less than [Interval (ms)] apart
Ctrl-Double-Click to randomize :)
Bool input pins duplicate the above functions too ...
Suggested and tested by Eric Langou and Max Bregestovski
Also Double-click reset (2) with min and max random range pins
turns a regular knob into an infinite one.
lets it spin round and round and round and round ....
when Animation Position == 1, if previous AP >=0.9 then new AP = 0
when Animation Position == 0, if previous AP <=0.1 then new AP = 1
Obviously, it requires a knob image that has positions for all points around 360°
Additional version with Mouse Down bool pin allows an AP value of 0.0 or 1.0 to also wrap ... try it - you'll see !
DSP :: bucket delay unit
A simple little bucket-style delay box - no interpolation and a size control instead of a modulation control.
dd_bucket acts like an old-skool bucket delay - when the size is decreased, whatever is in the 'rest' of the bucket remains so that when size is later re-increased, the remaining material gets played once more.
does not change pitch of audio when size is changed, but rather decreases the amount of the bucket in use
does not sleep, or anything else fance - size not suitable for sample rate modulation, but then, why would you ?
N.B: a seriously simple modification to the SESDK delay example, so its more by Jeff M than me ;)
GUI::7 Segment LED display driver / controller ** newly updated
7 segment numerical digital display driver.
dd_int_unitizer : Animation Position to Value with Increment / Decrement buttons for 'direct' attachment of Bitmap Images
dd_7seg : single int to 7 segment led animation positions
now works for positive and negative numbers with choice for number of decimal places
GUI::23 Segment LED VU driver *** updated ***
LED driver using 3dB steps from 0 down to -60, then -60 to -90 and -90 to -120
doesn't simply turn the led on and off, but smoothly fades animation positions between 0 and 1
2 Main modes, for full bar graph or single flying led
3 clipping modes - fade : hold for X, fade over Y, flash : in over X, out over Y, wait : stay lit until reset
peak output pin which, as the name would suggest, outputs the peak level.
when reset pressed, this is, err, reset.
ZIP file includes module, prefab, leds, and reset button
DSP::bit depth prefab
bit reduction to a specific number of bits
uses standard quantizer and fixed values of (20/2^x) where x = bitdepth
thanks to Rurik, Eric and Lance ...
passes signal for 58 seconds, mutes it for 2. When passing, voltage on notify pin = 0v, when muted = 10v
use to make your demo switch off for 2 seconds every minute !
outputs current time as guifloats, and as animation positions for driving analog style clocks.
comes in 3 flavours with different pin arrangements
to use your own graphic to make a clock hand, include a frame for both 0% and 100% values, or it won't display properly ...
my first synthedit module : DD_DateTime, with big thanks to AstralP for getting me started.
2 text pins - put a c++ strftime() argument into one and get the resulting string from the other.
version 1.1 - thanks to sirsicksick and HGFortune - 2 format pins and no default time format - see the module help window for help on format ...
download it here
DSP::dd_wireless [basic proof of concept]
not at all tested yet !! more than one instance of each module will cause problems, and there is no attention paid to sync, so don't expect much :)
founding member : Lincoln Digital Arts