
MULTI-CHANNEL WAV LOADER (DSP & GUI)
------------------------------------

Loads a mono, stereo or multi-channel .wav file.

16, 24, 32 bits PCM and 32 bits FLOAT formats are supported.

Every channel present in a wav file will be sent to a separate BLOB auto-duplicating output.

Samples are always transmitted using 32 bits float format, which is the standard for ED sampling system other than Synth Edit standard, no matter the original file depth.

If more outputs than loaded channels are connected, the unused channels will transmit a void blob.
If the Replicate Mono option is enabled instead, a mono sample will be sent to all connected
outputs; this is particularly useful when using a stereo sample playing configuration which must
still support mono samples, without resorting to an external circuitry.
Connecting less outputs than the loaded channels is harmless.


WARNING:
Despite ED Sampling System was chiefly designed to add to Synthedit those ever lacking modular *sampling* features, some users are abusing it to load and process very large *recordings*.
Doing so is discouraged and can become very inefficient, CPU and memory consuming. Please consider using an actual audio editor or your DAW audio track capabilities for such tasks, which are perhaps more suitable.


WHICH ROUTE TO PREFER ?

The DSP route (no GUI lines involved, no Patch Memory BLOB) has the advantage that there is not any theorical limit as for the sample size, despite handling very long recordings has the potential of causing hiccups and audio drop-outs. Long samples can be sent to the GUI (eg. for displaying) using the included Bridge modules.

The GUI route on the other hand allows (possibly short) samples to be stored in Patch Memories (i.e in presets), plus several editing and display operations allowed by GUI modules only. Also, being GUI executed on a different thread than the Audio process, there are less changes to experience drop-outs. The drawback is that the infamous 5MB limit of the internal SynthEdit DSP<->GUI buffer is at risk of saturation (see the included README).
->When storing samples into presets is not required (eg. romplers, drum-machines, etc), ALWAYS PREFER THE DSP ROUTE !


DSP VERSION:
Connect the needed output(s) to a suitable Sampling module accepting standard BLOB sample input.


GUI VERSION:
Always connect the needed output(s) to one or more Patch Memory Blob modules, for usage with other GUI based sampling modules and/or to interface with DSP sampling modules.
The File Name pin with non-empty content will be used. In case both are non-empty, the content of the last File Name pin set will be used.
You can limit the max BLOB size in bytes for every output channel with the (unexposed) Max Bytes x Channel pin (more in Pin Description).


LOCATING SAMPLES IN THE VST FOLDER:
A file name without path will be located inside the plugin folder (plugin only).
However, you can specify the full path of the file on your hard disc; if such file can't be located at the original path (eg. by an user of your plugin), it will be located in the plugin folder. This makes embedding files easy, in conjunction with "Copy additional files" feature in the Export dialog. This way, removing the file path parts before exporting your plugin is NO LONGER REQUIRED.


USING A FILE REQUESTER MODULE:
an annoying feature of SynthEdit prevents a pin being updated whenever it is set with the same value. This prevents the module being triggered when Auto Trigger is enabled and the same filename is set, for example to reload a same sample. To circumvent this issue, a better File Requester module is included in this package (GUI/FileOperations) providing an additional User OK pin, which is set to true (and then to false) everytime the user presses the OK button in the file requester.
This pin can be connected to the Trigger pin of the Wav loaders and savers.



PIN DESCRIPTION

.Auto Trigger - Selects whether to automatically trigger sample loading when FileName pin(s) is(are) set.
		Manual triggering is always possible.
                WARNING: as explained above, setting a pin with the same file name previously set will
                NOTE cause a retrigger sadly

.Replicate Mono (Bool) - If set, a mono sample will be sent to all connected outputs for convenience.
                         If unset, a null blob will be sent to all connected outputs corresponding to
                         non-existing sample channels.

.Max Bytes x Channel - Temporary safety measure to avoid saturating the internal SE 5MB DSP/GUI queue,
                       waiting for this limit to be increased/abolished some day (if ever).
		       Limits the size of output BLOBs for every channel to the specified amount of bytes.
                       Keep in mind that the 5MB limit is *cumulative* and whether the queue will be saturated
                       or not depends on how things are wired up.
                       A negative value (default) means no limit.
                       The effective amount of bytes per BLOB will be internally rounded to the smallest
                       multiple of four, since every sample is four bytes (one Float) long.
                       

.Sample Out (Blob) - standard BLOB sample data outputs, auto-duplicating

.Filename In (Text) - Filename of the wav file to load. On the GUI module, wwo identical pins are provided for
                      convenience, one on the left and one on the right side

.Sample Rate Out (Int) - Outputs the sample rate of the wav file loaded. When connecting this pin to a Patch
                         Memory Int, always make sure you have set a suitable upper value range

.Sample Length Out (Int) - Outputs the length in samples of the wav file loaded. When connecting this pin to a
                           Patch Memory Int, always make sure you have set a suitable upper value range

.Bit Depth Out (Int) - (V3 only) Outputs the original bit depth of the loaded Wav. Please note that this
		       is made available for information purposes only, since internally samples are
                       always converted to 32 bits float, no matter which their original bit depth

.Trigger (Bool) - Triggers actual loading when set, if a valid filename string is supplied to the
                  Filename pin



