DIY DSP around the corner this time

Started by Peter Snowberg, July 20, 2005, 12:40:06 AM

Previous topic - Next topic

DavidS

How about MIDI? Seems like a simple enough solution for external control. I've got a couple of MIDI floorboards, sure would be sweet to be able to use them!

As an added bonus, there are lots of DIY midi controllers on the net. You can pretty easily put together custom control surfaces.

As far as effects, what about an algorithm that acts as a pitch-dependant sort of EQ, that has its center frequencies on specific harmonic overtones of whatever note you're playing? if done right, you could really alter the fundamental character of your guitar/bass. Of course, it would only work right for monophonic playing, but you could sure get some freaky-ass sounds out of it, especially with some time-based morphing parameters. Like, say, delay the third overtone 20ms, ramp down the first while ramping up the second, whatever.

Awesome project! Can't wait to see this develop!

D Wagner


davebungo


Peter Snowberg

VST plugins? Nope.

1590B? Yep. ;)

MIDI? There's no reason why it couldn't be done with an adapter. I didn't want to list MIDI at first because I don't know how it's all going to shake out but the serial port will handle it no problem. The only real issue is powering the MIDI interface. One more 2.1mm plug I guess.

The coefficients in this system may be computed either by the DSPs, or via a basic scripting language that runs in the ATmega. This script allows you to get a value (from preset, table, pot, expression pedal, switch, or serial port), test it, perform basic math on it (add, subtract, multiply, divide, reference in a table), and then send that value into the DSP subsystem. There's no reason why you couldn't wrap universal effects DSP code around whatever control devices you have available.

How about a dual through zero flanger? ;)

The 1KS DSP has four stereo in ports and four stereo out ports, three of these pairs are connected to the singular stereo in and out of the three reverb engines while the fourth pair is connected to the ADC and DAC. There are not full DSP CPUs.... they're more like MAC cores with sequencers attached. Datasheets for the chips is available from http://www.wavefrontsemi.com/ . They used to be Alesis Semiconductor before being spun off totally.
Eschew paradigm obfuscation

sir_modulus

I'm served...send me up a pm when the boards are ready!

Cheers,

Nish  8)

squidsquad

Peter,

You ever used the OhmBoyz VST plug in?
Because I do...and I think it's the software equivelent of what you are going for.  Pre-delays....multi taps....LFOs...rsonance....filters a-gogo.  I love the thing...and it would be SO fun to have in an ax pedal.  If you're unfamiliar...look here:
http://www.ohmforce.com/  
and in particular:
http://www.ohmforce.com/ViewProduct.do?p=OhmBoyz

Not to plug anything...but even reading the ads may give you ideas.
And you could DL a demo & play w/it.

And if you're already well aware....uhhhh.....sorry!

bryantabuteau

got a vero layout? ;)

I'd also be very interested in this board, I'm a programmer by day job and would love to get into DSP.

RobB

This may not sound too exciting to some but, a high quality reverb in a small package is something I've never seen presented in a DIY package before.  

What do the reverbs sound like?

StephenGiles

Is this really more exciting than a fuzz box???? :lol:  :lol:  :lol:  :lol:
Stephen
"I want my meat burned, like St Joan. Bring me pickles and vicious mustards to pierce the tongue like Cardigan's Lancers.".

travissk

The reverb chip is the one Alesis uses for their units; I'm pretty sure it's the same one you get in a Nanoverb or Picoverb. If that's correct, you get some good reverbs in addition to chorus, auto-wah, flange, delay, and a rotary sim right out of the box (on the 3201 chip).
http://www.alesis.com/products/nanoverb/index.html
The 3201 has these ROM programs as well as some user-programmable memory. The wavefront site has some pdfs that have some example code for simple custom reverbs, "off-center 45's" effects, and pitch shifting (using the circular buffer approach - nothing too special but a good starting point for some crazy stuff). The 1K datasheet area includes some EQ code as well as examples of a compressor and more.

Definitely looking forward to building one of these  :D

Peter Snowberg

Quote from: squidsquadYou ever used the OhmBoyz VST plug in?
I've never used any VST plug-in. Now who's mister low-tech? :P

I don't do any serious computer recording and don't have any software that will run a VST plugin. :) PS: I compute on an 800MHz P3 machine, at least I've got two monitors and a RAID.

I took a peek at it and it sure looks cool! 8) I'm hoping that the SOMA DSP architecture can get used as a starting point for creating similar things... up to the limits of the hardware. It should be a playground for easy and high quality DSP effects.


Quote from: bryantabuteaugot a vero layout? ;)

I'd also be very interested in this board, I'm a programmer by day job and would love to get into DSP.
Yes I have a vero layout, just grab some 0.8mm pitch SMD Vero.... :lol:

You can download their assembler from http://www.wavefrontsemi.com . Be sure to download the assembler and all the app notes for the 1K and the DRE DSPs. SOMA uses both.


Quote from: RobBThis may not sound too exciting to some but, a high quality reverb in a small package is something I've never seen presented in a DIY package before.  

What do the reverbs sound like?
Once somebody writes them I'll point you to some sound samples. ;) This is just hardware with nice reverb capability. There's enough power to create some really nice reverbs. :) There is a total of 2.04 seconds of delay memory to play with along with nice filter capability.


Quote from: StephenGilesIs this really more exciting than a fuzz box???? :lol:  :lol:  :lol:  :lol:
Stephen
Fuzz... Yes.

Distortion... Maybe. ;)


Quote from: travisskThe reverb chip is the one Alesis uses for their units; I'm pretty sure it's the same one you get in a Nanoverb or Picoverb. If that's correct, you get some good reverbs in addition to chorus, auto-wah, flange, delay, and a rotary sim right out of the box (on the 3201 chip).
http://www.alesis.com/products/nanoverb/index.html ....
The Reverb Engines come with a bunch of programs built-in, but SOMA makes no provision to use them. That stuff is Alesis code and it's not available for viewing, manipulation, or basic adjustment for that matter. Allowing the use of the built-in programs would have also taken 15 additional outputs which would have required a different microcontroller or an additional I/O chip and 3 outputs that the microcontroller still can't spare. That would take space that the board can't spare as a 1590B sized board with a single side populated.

The reverb engines are the same chip used in the Picoverb, but this is like three picoverbs in parallel/series/you decide.

I think the nanoverb uses a different chip set because it claims 18 bits rather than 24, and it states the sample rate as 46.875KHz while processing at 3 MIPS. That would equate to 64 instructions per word clock and the DRE provides 128 (with 124 accessible to the programmer). The nanoverb also lists 64K x 16 as the delay memory. That's twice the RAM length of an AL3201B but the 3201B RAM is wider.
Eschew paradigm obfuscation

Peter Snowberg

DRE code for Wide Sterero Chorus Example: (note: this chip allows programs up to 123 instructions long. LFO frequency assignments not included.)

Alesis comments in RED Mine in BLUE
____________________________________________________________

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; File: AN320103.ASM
; Description: Wide Stereo Chorus Example
; Authors: Jeff Rothermel
; Copyright 2001 Alesis Semiconductor
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;

LFO0 SIN AMP=10000 FREQ=2 ; f = FREQ * 0.029Hz for Fs=48kHz set LFO 0 (for left channel) to sinewave, amplitude=10000, speed=.058Hz
LFO1 SIN AMP=10000 FREQ=3 set up LFO 1 (used by right)
;
MEM chorusmeml 8192 ; 8192 big enough for full AMP LFO  left channel delay line memory allocation for assembler
MEM chorusmemr 8192  ; right chorus memory right channel delay line memory allocation for assembler
;
;NOTE: memory locations are referenced by:
; name Start of memory block
; name' End of memory block
; name" Middle of memory block
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
Process Left
RZP ADCL K=.5 ; Read left/2 into accumulator
WZP chorusmeml ; Write acc to start left chorus mem
RZPB chorusmeml+400 ; Read delayed left to B reg
;
CHR0 RZP chorusmeml" COMPK LATCH ; Read middle of chorus memory
CHR0 RAP chorusmeml"+1 ; Read middle+1 chorus memory
;
WBP OUTL K=.999 ; Write dry (B) + chorus (acc) to OUTL
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
Process Right
RZP ADCR K=.5 ; Read right/2 into accumulator
WZP chorusmemr ; Write acc to start right chorus mem
RZPB chorusmemr+400 ; Read delayed right to B reg
;
CHR1 RZP chorusmemr" COMPK LATCH ; Read middle of chorus memory
CHR1 RAP chorusmemr"+1 ; Read middle+1 chorus memory
;

WBP OUTR K=.999 ; Write dry (B) + chorus (acc) to OUTR
;
That's all there is to a dual-mono chorus! 12 instructions + LFO setup + DRAM refresh (16 instructions)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Add 16 extra reads for refresh  
These instructions refresh the buffer which is made of DRAM
RZP 0x00
RZP 0x40
RZP 0x80
RZP 0xc0
RZP 0x100
RZP 0x140
RZP 0x180
RZP 0x1c0
RZP 0x200
RZP 0x240
RZP 0x280
RZP 0x2c0
RZP 0x300
RZP 0x340
RZP 0x380
RZP 0x3c0
Eschew paradigm obfuscation

Maneco

one important point...where to buy those wavefront chips? is any distributor (digikey,mouser) carrying them?


Peter Snowberg

http://www.wavefrontsemi.com/salesinfo.html :D

The rest of the parts come from either Mouser or Digikey. I'm only designing with parts that are currently in stock. The wavefront chips are the only odd-ball parts.... oh yes... and the stompswitch which comes from Aron. ;)
Eschew paradigm obfuscation

amz-fx

QuoteAllowing the use of the built-in programs would have also taken 15 additional outputs which would have required a different microcontroller or an additional I/O chip and 3 outputs that the microcontroller still can't spare.
Isn't there a bank-select switch that allows you to toggle between presets and the one memory set?  I don't know how you have it set up but it seems a simple toggle and a 4-line decoder would allow you to use the internal sounds?

The sample code on the Wavefront site are not much use until one figures out how to load the program into memory via the serial port....  which you obviously have managed!  :)

regards, Jack

Tim Escobedo

Quote from: Peter Snowberg

Quote from: StephenGilesIs this really more exciting than a fuzz box???? :lol:  :lol:  :lol:  :lol:
Stephen
Fuzz... Yes.

Distortion... Maybe. ;)

What, no overdrive?!?! I knew it was too good to be true...   :(

:wink:

Seriously, fantastic work, Peter!

Peter Snowberg

Jack,

I saw you were bumping around over at Wavefront recently. :)

The internal/external effects selection requires one line and then you have to give each DRE a four bit code to select the algorithm you want. The serial port is already connected to two of the select lines so actually it's only requiring 9 more lines that are not available. These additional lines must be hard-wired. They are not available via the serial interface. The built-in effects are cool for reverb, but the Leslie sim, chorus, flanger, and delays without speed control limit the utility drastically. The reverb programs are all stereo and are made to be used with external wet/dry mixing which is OK seeing as how the 1K DSP will do that, but this is really a mono box first.

I figure the DIY crowd will have the reverbs replaced with open source code by the end of day 1. 8)

The PCB is pretty packed. I could make it much smaller with 4 layers and parts mounted on both sides, but I want some shot at being to build commercially so 4 layers isn't going to happen. ;)


Tim,

Thanks. :D

The effects loop is where the overdrive goes... that way you can do:

In -> 20 band EQ -> loop send -> analog overdrive -> loop receive -> 20 band EQ -> Out

Rather than switch the overdrive in and out totally, you could blend it away and/or modify the EQ around it.
Eschew paradigm obfuscation

Maneco

IMHO this is the most trascendent project/thread /topic in the history of this forum,a breakthrough in what can be acomplished by DIY ...
I vote to make it sticky

all my respect and admiration

Maneco

Maneco