![]() | All Advertisers |
| | #481 |
| Lives for gear Join Date: May 2003 Location: Cambridge MA USA
Posts: 1,078
| OK, I just saw your additional note. I thought you had multi tap delay lines feeding back. If you simply have multiple delays feeding back, then you view the topology as an FDN with a specific feedback matrix. The gains in this matrix must be arranged such that the power within the structure is conserved. (As you have noted!) ![]() -Casey
__________________ cdowdell@bricasti.com www.bricasti.com My love shall hear the music of my hounds. - Shakespeare |
| | |
| | #482 | |
| ValhallaDSP Join Date: Feb 2009 Location: Pacific NW
Posts: 1,536
| Quote:
YouTube - SCTV 4 Farm Film Report In reverb terms, "blowed up" is used to refer to the instability that happens when you have a feedback gain of greater than 0 dB for some frequency. The amplitude of the output will keep increasing. With fixed point systems that use saturation, you can end up getting a stable oscillation. In floating point systems, it will eventually go outside of the floating point numerical range, and you will get NaNs, which are evil. Read this whole chapter to learn how to work with feedback around parallel delay lines: Time shifts and delays Miller Puckette was one of the pioneers of feedback delay networks. Michael Gerzon developed the theory about 13 years before Puckette published his findings, but I don't know how many people actually read Gerzon's papers - they were in a journal that was very rare within the US.
__________________ Sean Costello Valhalla DSP, LLC Words: http://valhalladsp.wordpress.com Plugins: http://www.valhalladsp.com | |
| | |
| | #483 | |
| ValhallaDSP Join Date: Feb 2009 Location: Pacific NW
Posts: 1,536
| Quote:
As far as allpass filters not having a metallic ring, try creating an allpass delay nested 10 deep, with all the allpass coefficients at 0.7, and total delay at 20 msec, and run an impulse through it. This is an allpass system, but its decay is perceived as VERY metallic. We may be arguing about semantics here. You say spectral smear, I say ringing poles. The point is that nested allpass filters are tricky to work with. | |
| | |
| | #484 |
| Gear addict Join Date: Jul 2009 Location: Sunny Seattle
Posts: 324
| I've had good luck working up a bit of an I/O framework (digital or analog) and then just using a netbook and gcc on linux. You'd be surprised what a dual-core atom will do ![]() And your hardware is already built.
__________________ Fourier and Shannon were right! |
| | |
| | #485 |
| Lives for gear Join Date: Dec 2003 Location: Calgary, Alberta
Posts: 815
Thread Starter | A netbook is not a 1U high 19" rack like most pieces of outboard gear. I realize that may not be an issue for everybody, but for some people it is. Also, I rather enjoy designing the hardware... bring on the soldering iron. |
| | |
| | #486 | |
| Gear addict Join Date: Jul 2009 Location: Sunny Seattle
Posts: 324
| Quote:
I could set this on on a 1U rack shelf. ![]() Seriously, it would work, but if you want to build, that's cool. I'm just tired of DSP's and the notoriously annoying compiler/assemblers that they come with. Been there, done that, and for way, way too (unblievably gross and offensive string of expletives) long. First DSP I used kinda had a symbolic assembler. 4 tab fields, one for each stage of the pipeline. data moved from right (far tab) to left (near tab) as it got fetched, operated on once, added or not, and hten saved. Branching was, well, possible. Barely. | |
| | |
| | #487 | |
| Lives for gear Join Date: Dec 2003 Location: Calgary, Alberta
Posts: 815
Thread Starter | Quote:
I don't mind working with the DSP56k family even in assembly code, it's relatively easy to write - almost as if I were programming on a PDP11 or 68k or some other CISC microprocessor. VLIW assembly code looks scary to me, though. | |
| | |
| | #488 |
| Lives for gear Join Date: May 2003 Location: Cambridge MA USA
Posts: 1,078
| |
| | |
| | #489 | |
| ValhallaDSP Join Date: Feb 2009 Location: Pacific NW
Posts: 1,536
| Quote:
This is an interesting idea, especially if you are running Linux in a rack box (or smaller, if you use a mini-ITX, nano-ITX, or pico-ITX format). I haven't tried an Atom, though, so I don't know how they compare with the standard Core2Duo processors, or whatever they are called for PCs. Does the Atom have SSE instructions? It probably wouldn't be that useful for stomp pedals, as I presume that an Atom is much less cost effective than something like the FV-1 or a Blackfin. However, I know that you can compile VST plugins for Linux. Hmmm. | |
| | |
| | #490 |
| Lives for gear Join Date: Dec 2003 Location: Calgary, Alberta
Posts: 815
Thread Starter | That's almost always the case - for a stompbox, one other biggie is power consumption. A PC chipset of any kind sucks back the juice. It is true that a netbook takes less power from the wall than a 480L or 224, but a reverb based on something like the AL3201 in a stompbox (which will out-compute the 224) can be designed to take maybe 20mA from a battery using a linear regulator (10mA for the 3201, and about the same for the ADC-DAC), and if you spring for the cost of a switching power supply (all of three or four parts) you can get it down to probably about 7mA from a 9V battery - about 80 hours of use. On the other hand, my Aspire One netbook sucks about two amps out of its battery, and would attempt to drain a 9V stompbox battery in about ten minutes - if you could get the current out of a 9V battery fast enough. |
| | |
| | #491 |
| Lives for gear | Maybe already been discussed: Is the phaseresponse considered more important then the amplitude response within high order interpolators? Harrie |
| | |
| | #492 | |
| ValhallaDSP Join Date: Feb 2009 Location: Pacific NW
Posts: 1,536
| Quote:
- Linear interpolation has poor amplitude response versus frequency, but a nice SNR with wide modulation widths. - Higher order FIR interpolation schemes have better amplitude responses, but the cost goes up with the order. - Some allpass interpolation schemes can be very noisy when the modulation width is fairly high, so you have to be careful. This is due to the allpass coefficient getting too close to the unit circle, which results in a transient that takes a while to ring out. - Using no interpolation results in a perfectly flat amplitude response, but crappy SNR. - If your modulation is updated at a slower rate, this increases the SNR as well. | |
| | |
| | #493 |
| Lives for gear Join Date: May 2003 Location: Cambridge MA USA
Posts: 1,078
| I look for opportunities to combine linear interpolation when I have already upsampled significantly for other reasons. Sort of a freebie. ![]() In some cases multiple high order interpolations are more expensive than just running your alg at a high sample rate all the time and using linear interpolation, watch for that. ![]() -Casey |
| | |
| | #494 | |
| ValhallaDSP Join Date: Feb 2009 Location: Pacific NW
Posts: 1,536
| Quote:
| |
| | |
| | #495 |
| Airwindows Join Date: Aug 2004 Location: Vermont
Posts: 2,006
| Sure will thanks, guys- I was able to do some tweaking. With your help I got it to this... I would still like to compare more directly to existing work. This is from Casey's guitar example which I like. Again, are there dry samples I should be using to post with? |
| | |
| | #496 |
| Lives for gear Join Date: May 2003 Location: Cambridge MA USA
Posts: 1,078
| |
| | |
| | #497 |
| Airwindows Join Date: Aug 2004 Location: Vermont
Posts: 2,006
| You mean more in this direction? There's a damping slider, first example was 0.5 and 0.5 dry/wet on both. This one is damping to 1.0. It's tricky because FarSpace is the one I wanted to be ridiculous infinite-space verb- NearSpace is more contained. I'd like to lean in the direction of the spaciousness and invisibility of your reverbs, and hopefully it's a tip of the hat- even though I'm not using any of your techniques that I know of- intentionally avoided similar verb structures. I'm trying to do my own thing, it just needs to have some similar qualities to the goodness of your verbs ![]() |
| | |
| | #498 |
| Lives for gear | chris, I would rather try something different as a source to listen to a laaaaaarge reverb. Harrie |
| | |
| | #499 |
| Lives for gear Join Date: Dec 2003 Location: Calgary, Alberta
Posts: 815
Thread Starter | I've been working on a revised hardware platform, I had too many blue jumper wires on the previous version, and after too much handling, it's starting to get a bit flakey. Also, a double-sided PC board isn't the best for a 100 MHz data bus - so a 4-layer it is. Along with fixing things that were obvious errors on the previous PC board, I've changed the DSP from a 100 MHz DSP56366 to a 200 MHz dual-core DSP56720. I'm thinking about using SDRAM, however, I'm a bit confused as to the best way to arrange data and move it to/from the SDRAM. It seems to me that SDRAM timing is pretty slow for hopping around in memory. For long delays, it's pretty obvious what to do (put the head and tail in internal SRAM and burst the middle into and out of the SDRAM) but for a high density multitap algorithm, the answer isn't quite so simple. Is this a case where certain algorithms just don't run as efficiently on different hardware? Is it best to try to keep large tap sizes in internal RAM if I can? Would I be better off with an untapped algorithm like an FDN? A single random SDRAM access takes about the same amount of time as almost 20 instructions (per core) - if in internal SRAM, I could do four allpasses (two per core) in the time it takes to just fetch a single sample from the SDRAM. |
| | |
| | #500 |
| Gear addict Join Date: Sep 2004 Location: Denmark
Posts: 400
| |
| | |
| | #501 |
| Lives for gear Join Date: Dec 2003 Location: Calgary, Alberta
Posts: 815
Thread Starter | Each delay segment has a defined start and stop, without pseudo-randomly spaced taps in the middle like in the loop-style algorithms (Griesinger/Dattorro). The output comes from a summing matrix at the end of the delay lines. In this arrangement, you can easily move the middle section of each delay out into slow RAM, so long as you can write the head and and read the tail efficiently (fast RAM). That should be relatively cheap to do (in processor cycles), should be a relatively easy operation (you can probably program a DMA controller to do the memory moves), and also should handle resizing the delays quite easily. If a delay line is longer than about 100 samples, you can burst the data into and out of the SDRAM, and if it's shorter, you just turn off the SDRAM copy and leave the delay in SRAM. Alternatively, if all of the audio for a reverb would fit in about 90k of SRAM, it could all sit in SRAM, and the SDRAM would only be used for bulk delays - predelay or slapback echo, that kind of thing. But if you upsample, then the 90k would disappear quickly - that would be under a second of audio at 96k. |
| | |
| | #502 | |
| Gear addict Join Date: Sep 2004 Location: Denmark
Posts: 400
| Quote:
Btw. With the correct feedback matrix you can create 'loop-style algorithms' in FDN. | |
| | |
| | #503 |
| Lives for gear Join Date: Dec 2003 Location: Calgary, Alberta
Posts: 815
Thread Starter | Yes, it would be a sparse matrix. It may not be as 'efficient' to do it that way, but I'm looking at the hardware and trying to figure out the most efficient way of doing it - or deciding if I need to rework the processing hardware. The last thing you want to do is have a very beautiful PC board all put together, then find out the algorithms you want to run won't run efficiently on the hardware. An option I was thinking of was to put more than one DSP on there, but for a DIY project, multiprocessing seems a bit overkill. What I found on the last design was:
So I upgraded the host processor to a MCF52259, ran parallel I/O off of it to the display panel, upgraded the DSP to a DSP56720, added AES digital I/O, a USB connector, and added a ton of SDRAM. The problem with SDRAM is its random access time is sucky, but it's cheap, and it bursts really quickly. Everything else is a significant step upwards, except for memory access time, which is about a factor of 10 worse (for the first access) - then its on-par. I'm just finishing up the PC board in my CAD package now. But I want to make sure that the algorithms can run efficiently before I get the new boards made up. I picked the same families of processors so I can reuse most of the code, and all of the development tools. |
| | |
| | #504 |
| ValhallaDSP Join Date: Feb 2009 Location: Pacific NW
Posts: 1,536
| If you are working with SDRAM, you might want to switch to block-based processing, instead of sample-by-sample. My guess is that the set up and take down time of the SDRAM access is what takes the bulk of the cycles, and that once you have your setup done you can grab a block of samples rather quickly. From reading between the lines of what NS has posted, the PCM96 uses blocks of 32 samples. Back when I worked with ADI, I regularly used blocks of 16 or 32 samples to write reverbs, and it can work very well. You can do allpass loops this way, FDNs, whatever. |
| | |
| | #505 | |
| Airwindows Join Date: Aug 2004 Location: Vermont
Posts: 2,006
| Quote:
It's not a huge deal, I do make demos available, but I wish there were great public domain audio clips as good as this. I think the orchestral sample likes the laaaaaaarge reverb better- and you get more of a sense of the bass of the hall, which is kind of tricky to do without a separate LFE reverb. This is more of what the big one is for. | |
| | |
| | #506 |
| Lives for gear | Sounds nice to me. I tend to use snare/ spikey kind of sounds, so I can hear how the tail moves/evolves. In crowded music it is more about the first 200 ms or so. The rest gets masked. |
| | |
| | #507 | |
| Lives for gear | Quote:
| |
| | |
| | #508 |
| Lives for gear Join Date: May 2003 Location: Cambridge MA USA
Posts: 1,078
| |
| | |
| | #509 | |
| Lives for gear Join Date: May 2003 Location: Cambridge MA USA
Posts: 1,078
| Quote:
![]() -Casey | |
| | |
| | #510 |
| ValhallaDSP Join Date: Feb 2009 Location: Pacific NW
Posts: 1,536
| No problem - just make sure that you adjust your delay lengths to take into account the block delay in the feedback path. For example, if you want a 1000 sample comb filter, and your block size is 32 samples, you would use a delay of (1000-32)=968 samples. |
| | |
New Reply
Facebook
Twitter
LinkedIn
| Thread Tools | Search this Thread |
| Similar Threads | ||||
| Thread | Thread starter | Forum | Replies | Last Post |
| Not liking convolution reverb so much these days...recommoned me a reverb plugin? | danbronson | So much gear, so little time! | 19 | 16th June 2008 07:12 PM |
| IK Multimedia Classik Classic Reverb Plug-In Bundle or TL Space for first reverb? | Sean Sullivan | Music computers | 23 | 22nd February 2008 04:45 PM |
| Fender Twin Reverb (1971) Reverb noise/Power tube recommedations? | wthiessen | Geekslutz forum | 6 | 27th January 2007 06:19 PM |
| Fender Twin Reverb (1971) Reverb noise/Power tube recommedations? | wthiessen | Geekslutz forum | 0 | 24th January 2007 09:31 PM |
| |