Monday, March 23, 2009

Diving Into SSE - Alignment Issues

I noticed some odd behaviour, or at least I thought it was, when using SSE intrinsics in my vst plugin tests:

Using some of my classes would crash the host, while others would not, and looking at the code of the classes gave little insight to what was going on - until I noticed that the classes that would cause the crashes were all dynamically allocated, using standard new.

SSE data needs to be aligned on 16 byte boundaries, OR ELSE!

My current fix to this is to inherit from this class:

#include <xmmintrin.h>

class SSEAlign
{
public:
 void *operator new (unsigned int size)
 { return _mm_malloc(size, 16); }

 void operator delete (void *p)
 { _mm_free(p); }
};
But see this thread as to why that may not be the best way to do it. (Link is dead.)
For me, it works for now.

Wednesday, March 11, 2009

C++ VST Plugin Development Links

Here's a list of some links I've found helpful when diving into C++ VST programming, that I hope to be updating whenever I come across more good resources.

Getting started:
C++ VST Plugin Tutorials.
Teragon Audio's Developer Resources

Gui:
VSTGUI SourceForge page - Be sure you get v3.5 here, especially if you want to roll your own controls.
Thread about VSTGUI at KVR Audio.

Gui / Framework:
IPlug - An open C++ platform independent framework for VST and AU audio plugins and GUIs.
Juce - A framework for building cross-platform applications, that has support for VST, AU and RTAS plug-ins. Commercial or GPL licences available. Note that the VST SDK and the GPL are incompatible.
Plugin Developer - A resource for VST plugin development, that seems to focus on the IPlug framework.

Other Helpful Resources:
MusicDsp.org
The Yvan Grabit Developer Resource

Update: I fixed the link to Teragon Audio, and removed some dead links.

Tuesday, April 15, 2008

Expelled Exposed...

You really should check out the Expelled Exposed website!

Tuesday, March 25, 2008

Great Freeware / Donationware VST plugins (A work in progress)

This does not aim to be a complete list, rather it is a list of plugins that fit my definition of good and useful.

VST:
Eq / Filters:
Cockos - ReaEq: IIR based equalizer with unlimited bands, many types of filters (shelfs, bands, LPF, HPF, notch, bandpass, allpass) not to mention very good and precise editing.

Habib - Eq31: 31-band graphic equalizer, mono and stereo.

Habib - keFir: Zero latency FIR filter based on impulse responses from wave files. Simply put, this allows you to apply a recording of an effect or environment to a signal. Simulate your signal going through an amp/cabinet, a telephone, an old radio etc. The page has links to impulse responses you can use with it.

Voxengo - Overtone GEQ: 7-band harmonic (overtone) graphic equalizer with multi-channel support. Offers extensive internal channel routing capabilities, and supports mid/side channel processing. Beside equalizing, Overtone GEQ applies harmonic enhancement processing: it uses 7 harmonic enhancement modules, one for each EQ band. This generates a complex harmonic coloration you will probably like a lot.

Dynamics:
Cockos - ReaComp: Ultra-configurable compressor with soft knee support, sidechain filters, sidechain inputs and variable RMS size.

Cockos - ReaXcomp: Multi-band compressor with unlimited bands.
Controls per band: ratio, threshold, knee, attack, release, makeup, program dependent release, feedback detector and RMS size.

Cockos - ReaGate: Ultra-configurable gate with sidechain filters, sidechain input, lookahead for pre-open, hold control, hysteresis control and variable RMS size. Can send MIDI events on gate open/close. Also has Wet/dry mix and noise mix (can add noise when gate is open).

Digitalfishphones - Fish fillets: This magnificent trio of dynamics processors feature dead simple controls and a sound of their own.
The fillets are:
Blockfish, a vca/opto compressor with saturation and "air".
Floorfish, a gate/expander with adjustable frequency.
Spitfish is a de-esser.

Twisted Lemon - Sidekick v3: This sidechain ducking/keying compressor, allows you to do stereo sidechaining in pretty much any vst host via it's own intra-host routing system.

Delay / Echo:
Cockos - ReaDelay: Multi-tap delay with no practical limit on tap count and up to 10 second delay per tap.
Feedback, LPF/HPF, resolution reduction, stereo width and volume/pan per tap.

Togu Audio Line - Dub: A vintage style delay effect. It can be used for a wide range of delay effects from clean to extreme distorted, resonating never ending delays.
12dB resonance filter, low cut filter, maximal 4 Seconds delay time, limiter with distortion for rising feedbacks or loud inputs, delay time and feedback for each channel (linkable), input signal swap (L/R swap), filter feedback and filter fx mode (filter in feedback path or as post fx), filter mode for input (input signal will be filtered too) and easy to use midi learn. Yeah mon!

Voxengo - Tempo Delay: Delay module based on tempo, incorporating EQ and tremolo sections with separate controls for each output channel.

Reverb:
Magnus Jonsson - Ambience: In Magnus' own words, Ambience is a reverb that rivals the quality of the best commercial reverbs. I can't disagree with that, it really does sound very good. Two-band eq and damping, gating, very good presets and a nice clean gui.

Effects:
Habib - Extremist: Guitar multi-effect plugin.

Togu Audio Line - Chorus-60: A standalone version of the chorus implemented in U-NO-60.
Characteristics of the Juno-60 chorus, 2 modes, Dry/wet adjustable, Volume knob, Low CPU.

Togu Audio Line - Flanger: An easy to tweak stereo flanger effect with its own special sound and some asymmetric analog like components in the feedback corner. Useful for a wide range of flanger effects from subtle to extreme.

Togu Audio Line - Phaser: A carefully modelled stereo phaser effect. The user can choose between two, four and six stages. Its possible to adjust the lowest and highest frequency of the filter.

Saturate / Amp / Distortion:
Atom Splitter - Distroyr: Multi-algorithm plugin with lots of potential for getting just the edge your sound needed.
Algorithms: Feedback, signal clipping, bit crush, valve distortion, saturate and overdrive.

Togu Audio Line - Tube: A saturation plugin that has the characteristic of tubes and an additional amplifier mode. It's very suitable for adding higher harmonics and can give more excitement and analog character to digital sounds or drums.

Voxengo - Tube Amp: Add a tube-like warmness to any audio material.

Voxengo - Boogex: Guitar amplifier plug-in with a variety of sound shaping features. Achieve anything from a slight distortion to heavy distorted sound. Also has support for speaker cabinet impulse responses with a selection of built-in impulses is available

Mono / Stereo:
Voxengo - Stereo Touch: Add stereo width to audio tracks. Most effective on mono pad sounds and alike.

Voxengo - MSED: Mid/side encoder/decoder.

Utility:
Cockos - ReaFIR: FFT based dynamics processor (requires host plug-in delay compensation) with FFT sizes from 128 to 32768. Allround effect, with uses including Dynamics, EQ, Compression, Gate and Noise removal.

Cockos - ReaStream: Supports streaming from host to host of audio and/or MIDI over LAN, streaming from different host software on each end and UDP broadcast for streaming one to many.

Voxengo - Recorder: Allows you to record the output of the track or bus into a stereo WAV file of specified bit depth. Routing to MME soundcard is also supported.

Voxengo - Audio Delay: Delay stereo audio for a specified amount of milliseconds. Delay can be separately specified for each channel.

VSTI:
Andreas Ersson - ErsDrums: A ten-part virtual analog drum machine with seven different algorithms.

Andreas Ersson - Iblit: A monophonic virtual analog with BLIT (Band Limited Impulse Train) oscillators, which gives very low aliasing.

Andreas Ersson - Poly Iblit: The polyphonic version of Iblit.

Dash Signature - DaHornet: This classic mono synth has a nice dusty sound. I like to refer to it as "electro in a box". Get the serial number from the download page.

Wednesday, February 27, 2008

Howto: Change the color of #region and #endregion in visual studio

In Visual Studio, by default #region and #endregion are the same color as accessibility modifiers. In my opinion that gets a little confusing -- but how exactly do you go about changing their color then?

Turns out they are registered as "Preprocessor Keyword" (In Tools->Options->Environment->Fonts and Colors)

now, instead of this:












I get this:












Now if only I could find a way to change the text after the #region tag too...

Thursday, February 22, 2007

[Danish] QXL spam.

Det var åbenbart ikke nok for QXL at blive afsløret i, at beskytte storsælgende svindlere på dansk tv. Det var velsagtens efter devisen "al PR er god PR", at de valgte at sende deres "slagtilbud"-nyhedsbrev til folk der har afmeldt det.

Spam-mailen:


Min QXL-opsætning:
 

[EDIT]
Så ville det jo være rart hvis jeg kunne slette min bruger på QXL, da jeg ingen interesse har i at indgå i nogen som helst forhold med virksomheden - men det lader ikke til at være muligt.

- Grumpy old Ernst.

Sunday, February 18, 2007

The Great Gig in the Sky

Thanks to Bizk for pointing me to http://wikisky.org/, which works a bit like google maps for the sky. It also implements links to Sloan Digital Sky Survey (SDSS), an on-going astronomical survey aiming to provide detailed images of more than a quarter of the sky in - addition to a 3-d map of about a million galaxies and quasars.

While I'm at it, let me recommend Celestia; a free program 3d-visualising data (stars, planets, moons and other satellites, galaxies, etc.) from the Hipparcos database of stars. Certainly helps you appreciate the scales astronomy operates with.
Available for pc, mac and linux.