# How can I build something, like actual implementations of all these things I am learning in signal processing?

I am an undergraduate electronics engineering student taking a signal processing course this semester.

I have learned a lot of theoretical things in my lectures, such as how to shift or fold a signal, how to convolve 2 signals, how to take their Laplace or Z or Fourier transforms, but I want to build something useful in real life using all these concepts. All we do in our lab is just write simple programs in MATLAB to do these computations.

I found out that effect pedals used for instruments such as guitars are basically signal processors. How and where can I learn to build something practical from all this theory I am learning in my signal processing classes?

It is not just signal processing, but other classes too. Sometimes I feel like in electronics engineering all we do is learn theory and never build anything in real life. Like CS students can build actual stuff in software but we can't.

Can anyone tell me how can I build actual stuff from all the courses I am taking in electronics engineering? Do I need to learn how to use an Arduino or a Raspberry Pi for that?

New contributor
Koustubh Jain is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
• I think this is something you should bring up with your professors. Academics are often excited by the theory, and don’t realize that many students would like to see the practical application of that theory. Honest feedback is the first step towards changes in education. They might or might not accept it, but without the feedback they surely won’t know something is missing. Mar 19 at 14:22
• Something you can do right now is write a computer program that operates on a .wav file. If you want to do it in real time like a guitar pedal, any small microcontroller with ADC and DAC can do it - not just a DSP. However a DSP can do a lot more of it. Mar 19 at 19:34
• Start with the .wav file -- there's a lot of picky practical barriers to making it work in real life. If you know it works with the .wav file, that'll motivate you to push through all the practical nasties to reach your goal. Mar 19 at 20:14
• "sometimes I feel like in electronics engineering all we do is learn theory and never build anything in real life". In EE school that's what you do -- because technology changes, but the theory lives on and on. If I hadn't learned technologies on my own, I'd be building filters with op-amps and wouldn't know how to hook up an ADC -- much less know what pitfalls to look for in a microprocessor with an integrated ADC. If I stop learning technologies now, then 20 years from now I'd be helpless in the face of whatever will be available. But the theory -- that won't have changed. Mar 19 at 20:17
• For some students the important aspect is not learning how to work with a particular technology (often obsolete five years down the line as has been pointed out) but that practical hands-on experience is needed to truly comprehend what is taught in lectures and read in textbooks. I am such a person. I am now happily retired from an engineering career, but I still recall how I dreaded classes for which no practical component (like a lab) was offered, and for which it was difficult to set up something experimental at home with very limited means. I still like to experiment (in software). Mar 20 at 8:09

I recognize your frustration. I graduated with little skill in software development, electronics assembly or acoustic construction, even though I had classes and a personal interest in topics that touched upon all of them.

There are dev kits for DSP that are pre-configured to accept a signal input and output (e.g. audio, radio) and allows you to inject your DSP code. Perhaps tiny-dsp is suitable? I did not try myself.

Googling «DIY guitar pedal» brought up this project. It seems relevant to your questions:

Perhaps writing an app for iOS or Android would give you the hands on experience that you want?

It is possible to do realtime DSP in MATLAB. The portaudio project requires no expensive toolboxes. Surely something similar is possible in Python. I think that might be the low threshold way to be more hands-on about theoretical MATLAB classes.

Doing practical work is quite different from theoretical work. Even the most basic theoretical concept tends to require significant amount of work just to bring up. As such it can be frustrating to know somewhat fancy theory but have to struggle to implement even baseline stuff. Best-case a solid theoretical and practical experience is going to aid each other in that one gives insight into the other. My education did not really give me that, but on good days I feel that my colleagues and employers have helped me towards that goal.

• All good ideas. I bought one of these dsPIC DSC and it's quite cute. The development tools come for free (at least for what I want to play with).
– Peter K.
Mar 19 at 14:04

By an large, an electrical/electronics engineering education teaches you all the theory that underlies electronics. They go light on teaching you actual technology, because technologies go obsolete well before you want to retire.

I got my EE degree in 1988, when most signal processing was done with op-amps, diodes, resistors and capacitors. DSP was a thing, but it was mostly done with custom circuits*; audio-speed DSP was just barely viable to do useful things with it in a box the size of a book.

Between then and now, dedicated DSP chips have gone from being obscure, expensive, cutting-edge fringe technology to being (mostly**) obscure, expensive, obsolete fringe technology.

Somewhere around 2000, if you did signal processing that was synonymous with having a DSP chip in the mix. Today if you want to do DSP you'll probably do it using the SIMD extensions to whatever microprocessor is embedded in your product (or is on the phone that's executing your app). If the DSP is too intensive for that, it'll likely be happening in a GPU, an FPGA, or an ASIC.

But in all that time the theory hasn't changed. So be happy you're getting loaded up with theory -- it should last you your whole life.

Frankly, if those CS people you envy are just learning "how to code in Python" and not enough real computer science to learn how to code in anything, on the fly, when they need to, then they're being short-changed. So perhaps you should be grateful.

On the practical aspects

Start doing stuff on your own. Manufacturer's development kits are a great place to start, or open-source products (like the effects pedal mentioned in the other post) that you can modify.

If your school has them, shoot for getting a position as an undergraduate research assistant, preferably at a lab that deals with real equipment. You'll be at the very bottom of the pecking order, but in the right lab you'll be making actual equipment actually work. When you get out of school, you'll be the only one at your job who doesn't have gray hair who knows how equipment behaves when there's a broken wire or a dirty contact in a switch.

(Edit): or if you're one of the now-rare people working a side job to get through school -- try getting a job as a technician, or even an assembler, at a place that does electronic equipment.

* My third job out of school, which I started in 1994, was with a quarter-million-dollar (1994 dollars) system that featured a video tracker. The tracker was two 6U VME boards stuffed full of programmable array logic*** and one lonely transputer****. I don't know how much it cost, but I'm guessing it was between \$2000 and \$5000, in 1994 dollars. You could implement its functionality today in a cell phone, if you wanted something so primitive.

** Arguably -- I'm sure someone will disagree.

*** FPGAs were not a thing when it was designed.

**** Yes, one transputer. Why? I dunno.

– bazz
Mar 20 at 2:08
• Also +1 on becoming a research assistant. Ask around in other departments (eg. astronomy, physics); there are often groups building scientific instruments who are looking to hire undergrads with interest in electronics and DSP. Can't beat hands-on experience while getting paid in the process! Mar 21 at 18:31

### Audio effect plugin software development

If software is real enough for you and if you are interested in audio, then you could try making audio effect plugins:

### Running DSP audio effects on hardware

If you want to run audio effects on hardware, but don't want to fully build the system yourself, then you can use embedded single-board computers with ready-made audio I/O add-on boards:

• There is the Bela cape for the BeagleBone Black single-board computer. A smaller version is available for PocketBeagle. Bela provides low-latency audio input and output as well as other I/O. It uses a programmable realtime unit (PRU) on the Beagle to generate interrupts for extremely low-latency audio processing on the main processor.
• Allow me to add the Electrosmith Daisy and the Teensy Platform as beginner- and cost- friendly real-time audio hardware projects. Mar 20 at 11:02
• @Jazzmaniac I made this a community wiki in case you or someone would like to edit Mar 20 at 14:31
• juce.com is also an interesting audio software programming platform. Mar 21 at 5:49