DIYstompboxes.com

DIY Stompboxes => Digital & DSP => Topic started by: dougman0988 on July 27, 2010, 08:05:28 AM

Title: How can a digital noob get started making effects?
Post by: dougman0988 on July 27, 2010, 08:05:28 AM
Well, being an electrical engineer in school, but not having had any hands-on digital experience yet (we do have a class for that, I'll be taking it in the fall, which is my last semester, YAY!), and being a musician, I'm very very interested in learning how to start making my own digital effects.  I'm confused about what hardware I should use.  I know there's lots of development kits out there, but which is best to start with?  I'm familiar with programming already, though I'd prefer to program with C instead of assembly...and I'm thinking that once I have a setup where I can write code, program a DSP, and see what it does, then I can really start to experiment.  I just need a setup that will work.  Just looking for any suggestions.  :icon_biggrin:
Title: Re: How can a digital noob get started making effects?
Post by: ExpAnonColin on July 27, 2010, 12:39:09 PM
This might help:

http://experimentalistsanonymous.com/board/index.php?topic=2115.0

And, the simple answer for what to get started on is often the Arduino, because it's easy to use and set-up, has a huge amount of support, and you can do quite a bit of interesting stuff with it.

-Colin
Title: Re: How can a digital noob get started making effects?
Post by: SeanCostello on July 27, 2010, 01:24:31 PM
I would probably start by programming effects on a host computer, such as VST or AU plugins:

- You will be working in C (actually C++, but the C++ you need to know to get a GUI-less plugin running is fairly minimal)
- Lots of support and fellow travelers, in places such as KVR Audio
- No need to struggle with drivers, microcontroller code, frameworks for getting audio from the ADC into the DSP and back into the DAC, etc.

If you are gung-ho about pedals, the Spin Semiconductor FV-1 development board is a great system to play with. It is fairly limited, but the limitations can make it easier to learn. The environment has very little to do with any modern DSP or plugins - it is much closer to the dedicated reverb hardware of the 1980's.

Sean Costello
Title: Re: How can a digital noob get started making effects?
Post by: dougman0988 on July 31, 2010, 02:56:19 PM
Thanks for the suggestions, guys.  I'm gonna get the latest Arduino for my bday and play around with it.  Also, SeanCostello, is there some kind of IDE that I use to program VST effects?  I've never done this before so I'm just wondering what I need.  Is it something I can just write the code in a text file and save it in the VST directory of Audacity or w/e other software one might use?
Title: Re: How can a digital noob get started making effects?
Post by: Taylor on July 31, 2010, 03:41:53 PM
I've said it a bunch but I'm a big fan of the FV1. I think for audio DSP there's nothing easier to get into than this. After getting my development board, I had programmed a pitch-tracking ring modulator within a couple of days, an effect that I had tried to design in analog for months with no success. I had absolutely no programming experience except late 90s HTML.

I find working with the Fv1 much easier and more intuitive than designing analog circuits. Maybe my brain is just strange, but it's true.
Title: Re: How can a digital noob get started making effects?
Post by: Transmogrifox on August 04, 2010, 02:44:28 AM
The very first thing I will say is for a moment forget about hardware, programming languages, and implementation-specific details.  Start by giving yourself a primer in signal processing theory (which branches to DSP theory).  I didn't fully appreciate how my DSP class in college was such that we finally got to program a filter on DSP hardware in the last lab in the class.  Everything else we did in MATLAB.   These days I am grateful for the focus on theory, because as you will find, writing code is easy.  Writing algorithms is what makes it all meaningful.  You can't write algorithms if you don't know what you're doing.  If you're smart enough to write good algorithms, you're smart enough to figure out how to implement it on some piece of hardware...so there's my 2 cents.

Of course, there are shortcuts.  Once you get familiar with frequency domain & time domain relationship, a 1rst order digital filter, 2nd order biquad and a little general knowledge about sampling and aliasing then you're on a good track to do some interesting things.  You can probably learn everything you need to know in order to model a basic wah wah or distortion pedal from information on wikipedia, blogs, and other educational sites.

Second is a prototyping environment (MATLAB, GNU Octave, Scilab, MathCAD, MAPLE...choose your poison).

Last is your physical deployment. 

For developing audio applications without getting your testicles tied into M$ and other companies who own the Windows & Mac based standards.  I have to put in my plug for programming on Linux.  If I had been aware of what was available for audio production and programming capabilities in Linux I would have kissed M$ goodbye 10 years ago. This is probably the best you will ever get for low latency audio on a PC...well maybe a Mac can compete, but Windows is too bloated to be devoted to really low latency audio without seriously stripping it down to the console.

Once you're over the learning curve hurdle, the freedom is tremendous.  You can make a small partition on your HD (or even install to USB) and set up your development and audio environment there.  Currently I have a <8G partition devoted for this purpose.  Jack audio connection kit makes the input/output stuff really easy.

Another option is a flavor of BSD, although the BSD kernel is not optimized for RT operation while the Linux kernel (stock) is getting better at scheduling in this way and also there is the RT patch which often puts audio into the <1ms latency arena if your sound card is capable.

The other thing is, in a University environment you will probably find plenty of people who are enthusiastic about helping you with setting up a Linux system. 

Then finally start looking around for cost effective DSP demo boards or consider designing your own based on a chip that meets your processing needs.  Prototyping on a desktop or laptop system is another good way to assess the processing requirements for a given type of application.  Once you commit to hardware, you're typically locked in...unless you have unlimited time & money (ie, R&D engineer of a large corporation who does this).