Announcement

Collapse
No announcement yet.

NEW: the Active Crossover Designer for ecasound/LADSPA (ACD-L)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • NEW: the Active Crossover Designer for ecasound/LADSPA (ACD-L)

    ANNOUNCING ACD-L, THE NEWEST MEMBER OF THE FAMILY OF ACD TOOLS

    I have started to roll out the new version of the Active Crossover Designer. In this new version, ACD-L, filters functions are implemented using the LADSPA plugin code that I recently released, ACDf and mTAP. These, in combination with a LADSPA host audio processing program like ecasound, can be used to implement the DSP crossover in software, typically on a linux based operating system. The version of ACD for the miniDSP is still available as a separate download, but has not been updates with the new features of ACD-L at this time.

    DSP crossovers using ecasound and LADSPA can be implemented on inexpensive computing hardware such as the Raspberry Pi. This opens up new possibilities for low-cost embedded DSP (e.g. DSP on-board the loudspeaker).


    NEW MULTI AXIS DESIGN AND PLOTTING FEATURES
    In addition to the switch to software based DSP, ACD-L includes new capabilities that allow multi-axis modeling of the loudspeaker response. This means that the user can see both the on- and off-axis responses while designing the crossover. Additionally, in order to visualize the multi-axis responses, a new extension will be released soon that offers several ways to plot the response data, including the standard line plot as well as a polar plot, both implemented in the tools natively. See attachments below for examples of these. For additional plotting flexibility, data is processed into the matrix format used by GNUplot. This data can then be exported and plotted using that program as a heatmap or in a rectangular or polar heatmap or sonogram. This will be available soon.



    WHERE TO DOWNLOAD ACD-L:
    To download ACD-L templates, tutorial, and technical manual please visit the ACD link in my software listings, at:
    Charlie's Audio Pages: software



    Click image for larger version

Name:	ACD-L_line_plot.PNG
Views:	1
Size:	71.2 KB
ID:	1192981

    Click image for larger version

Name:	ACD-L_Polar_plot.PNG
Views:	1
Size:	68.2 KB
ID:	1192982
    .
    Charlie's Audio Pages: http://audio.claub.net

  • #2
    Re: NEW: the Active Crossover Designer for ecasound/LADSPA (ACD-L)

    wow
    " To me, the soundstage presentation is more about phase and distortion and less about size. However, when you talk about bass extension, there's no replacement for displacement". Tyger23. 4.2015

    Quote Originally Posted by hongrn. Oct 2014
    Do you realize that being an American is like winning the biggest jackpot ever??

    http://www.midwestaudioclub.com/spot...owell-simpson/
    http://s413.photobucket.com/albums/pp216/arlis/

    Comment


    • #3
      Re: NEW: the Active Crossover Designer for ecasound/LADSPA (ACD-L)

      And if you think that is cool, check out the attached plot. This is another way to visualize those "heatmaps" that you sometimes see to show constant directivity of a horn, etc. but done using polar coordinates. This IMHO better communicates the radiation pattern away from the speaker, as if you were looking down at the top of the speaker - it would be located at the center of the plot with the drivers "aimed" to the right at the "0" axis. Makes sense?

      The radial axis is frequency, as marked (starting just below the center, and below that point). The "on axis" position is at right, and different angles off-axis are marked in units of degrees around the outside. The colors represent the SPL at a combination of angle and frequency. As shown on the bar at the right, red is the highest SPL and blue the lowest with greens in between.

      One thing I like about this plot, and why I think it is better than the rectangular plot, is the fact that it can capture larger angles (the full circle even) in a more intuitive way. For instance, if the angular range was limited to, say +/-20-30 degrees then the polar and rectangular plots are similar, the polar version being slightly more wedge shaped. When you start opening up the angles more, the rectangular plot is squeezing or stretching some parts of the plot in the same way that the Mercator projection of the surface of the Earth onto a rectangle makes northern landmasses look much larger in proportion than they really are. And personally I like to think of sound streaming out of my loudspeaker - the polar form just seems to convey that better.

      Regarding constant directivity and the polar plot, that is easy to visualize. A loudspeaker with constant directivity would have color bands that were aligned like slices of pie, or sectors. The edges of the color bands would run radially outward from the center. When you instead have a blob that is aligned in more of a horizontally oriented rectangle, the directivity is narrowing as frequency (the radial axis) increases. This is because the same width "up and down" near the center of the polar plot (e.g. at low frequencies) spans a wider angular range, whereas out near the outer edge of the polar plot (high frequencies) the same "up and down" width corresponds to a smaller angular range. Also, you can clearly see where the pattern is widening and narrowing by the "up and down" extent of the color band (e.g. the red area).

      Anyway, creating this plot, as well as the more traditional rectangular one that I mentioned above, will be made possible via a Multi-Axis Plotting Extension to ACD-L, however, there is no need to use it with ACD-L. The input is simply the SPL values as a function of angle, so you could input that from another measurement or modeling program that might not offer the same plotting capabilities. When paired with ACD-L the multi-axis loudspeaker model (including crossover) data can be linked into the Multi-Axis Plotting Extension and any of the plots (line, polar, or polar/rectangular sonogram) can be used to visualize the loudspeaker output while you design the crossover. It provides for a lot of flexibility and new ways to communicate the loudspeaker's radiation pattern that show things that line plots cannot.


      Click image for larger version

Name:	ACD-L polar sonogram example.PNG
Views:	1
Size:	402.8 KB
ID:	1169760
      Charlie's Audio Pages: http://audio.claub.net

      Comment


      • #4
        Re: NEW: the Active Crossover Designer for ecasound/LADSPA (ACD-L)

        The LADSPA plugins are really quite exiting! Now all I need is a bunch of free time to work with it ;)

        How much horsepower is generally required for the DSP processing? Is a 1st generation Raspberry Pi going to cut it, or should I look at getting the RPi2? With these plugins, it is essentially able to produce a multi-channel output over the HDMI audio interface, then use a old receiver, or maybe something like this to convert to analog audio channels.

        This is of great benefit to me, as I'd like to build something along the lines of an active plate amp, but with an integrated RPI to act as the DSP crossover as well as a network music client to stream audio to using something like MPD or Sqeezeplay. It would be far too convenient to simply plug a plate amp into the network, and be able to play all the music available on the network and adjust the crossover/EQ with just a simple web interface.
        "I just use off the shelf textbook filters designed for a resistor of 8 ohms with
        exactly a Fc 3K for both drivers, anybody can do it." -Xmax

        Comment


        • #5
          Re: NEW: the Active Crossover Designer for ecasound/LADSPA (ACD-L)

          Originally posted by dcibel View Post
          How much horsepower is generally required for the DSP processing? Is a 1st generation Raspberry Pi going to cut it, or should I look at getting the RPi2?
          I've been using the Raspberry Pi 2 for my work. I haven't tried the earlier models, and they might work but it would depend on several factors which I will explain below.

          With these plugins, it is essentially able to produce a multi-channel output over the HDMI audio interface, then use a old receiver, or maybe something like this to convert to analog audio channels.

          This is of great benefit to me, as I'd like to build something along the lines of an active plate amp, but with an integrated RPI to act as the DSP crossover as well as a network music client to stream audio to using something like MPD or Sqeezeplay. It would be far too convenient to simply plug a plate amp into the network, and be able to play all the music available on the network and adjust the crossover/EQ with just a simple web interface.
          OK, so let's get into the gory details of how to get this working...

          Initially I was planning on using audio via the HDMI output and I bought a couple of the very same extractors that you linked to above. But after trying for a couple of weeks I gave up. I was not able to get the Pi to output anything more than 2-channel audio via HDMI. This may have been because it was connected to a DVI-D monitor via an adapter. Evidently HDMI is able to sense what is connected, and when it sees that a DVI-D monitor is on the end of the cable (via an adapter dongle) it knows that the monitor has no audio capability and shuts down the audio. This is likely also a problem is your plan is to use the R-Pi "headless" (without display), which is how I use them and I think you would too (with your plate amp idea). So I would forget about HDMI audio for now. Anyway, those HDMI-audio-extractors are certainly a black box and don't have any real audio specs associated with them. Who knows if the audio output are any good or not. I would not waste time or money on one, but you can follow my lead (see below) for another way.

          Let's talk about the relative degree of difficulty of using an R-Pi for audio processing, that is for crossover or EQ tasks. So:

          EASIEST:
          You use the R-Pi as just another source component in your existing stereo system. You might connect a keyboard, mouse, and monitor to it or control it using some interface (e.g. Android player control app). All the music resides on the Pi, and the Pi is connected to the "stereo system". You do not listen to any streaming audio, just your collection from storage (e.g on a USB HDD connected to the Pi).

          HARDER:
          You use a single R-Pi as a crossover system for your loudspeakers. The Pi may or may not be connected directly to the rest of the audio system.

          HARDEST:
          You use a separate Pi in each loudspeaker and subwoofer as a crossover. The Pis are not necessarily near the rest of the audio system.

          There are several challenges to using the Pi for audio processing. First, it doesn't have an "audio input" of any kind. Second, its built-in audio output is of poor quality. Unless you are using it simply as a source you need to route the audio from the playback software to some other software that will do the DSP crossover processing, and then finally on to the audio outputs. None of this is all that well documented, although after a month or so of looking for answers on the web I had it figured out. The Pi's only built-in, non-volatile memory is a SIM card and the maximum size that can be used is IIRC 64MB. If you want your music collection to be available to the Pi, it will need to be via an external USB drive.

          Don't get all warm and fuzzy thinking that the R-Pi will be capable of the highest sample rates or DSD. It's just not in that league really. You might get 24/96 to work but I think that is about it. There is hardware for up to 192 I think, but my guess is that sustained playback will not be possible.

          MY SETUP:
          I have been interested in active speakers, with a DSP crossover embedded in each speaker. I also got interested in making my speakers "wireless" (e.g. only AC mains power is connected) a couple of years ago. I have used the R-Pi-2 to make this possible using the following scheme:
          I control the system using a tablet
          The tablet runs X-windows, in which I run the interface to my player
          The player app is actually running on a small linux computer
          The player app can stream audio (need actual audio URL) or play local files
          The player app output is directed to a "loopback" that makes the audio available to other programs as input
          FFmpeg is used to convert the audio into a stream, which is sent to a localhost port
          I then use another program to re-stream the audio from the local port to the LAN
          There is a Pi in each loudspeaker that is set to continuously look for the stream coming in via the LAN
          Audio is received on the Pi from the LAN using a player
          Another loopback allows the output of the player to be used as input by the program ecasound
          Ecasound performs the crossover routing functions and implements the LADSPA plugins on each channel
          Ecasound pipes its output to stdout
          Stdout is used by Sox as input. Sox is only used to dither the audio stream
          Sox then sends the streams on to the output devices (DACs) that render the audio
          The DACs are connected to on-board amps in the speaker.

          See, simple!

          Actually it's a pretty long chain when I think about it, but I built it piece by piece slowly. I started with the "EASY" option more or less, just trying to get some sound out of the Pi and evaluating whether to continue. There were lots of obstacles along the way, but I seem to have managed to get something working that is pretty reliable and I am using it every day.

          Now, more about the limitations and other details...
          In my setup, I am streaming the audio from the server to the Pis in the loudspeakers using WiFi. I like this because I can locate them anywhere in my home where I have WiFi coverage. Obviously this is not "as good as" a hardwired ethernet cable connection, but hey that's just adding more WIRES, which is going against my wireless speakers concept. But it is limiting in terms of throughput and bandwidth, so I have decided to use compression on the audio stream. I am currently using 320k MP3, mostly because this sounds OK and was easiest to implement. I would like to move over to FLAC eventually, but I need to custom-compile some apps for that. I have WiFi in my home via the router that my internet provider gave me, but I went out and bought another cheap ($30) 802.11n router and set up a separate network just for the audio systems use. I can take this whole system somewhere and set it up again and it will all work.
          Next up: playback. For "output devices" I am using USB DACs running at 16/48. These are plug-and-play on the Pi and have an Es9023 DAC in them, which means I get 2Vrms output signal level. This is an important point, because in the past I used a minDSP 2x4 and had some real issues with the output voltage being too low (0.9Vrms) to drive my amps. Best of all, these DACS are quiet and inexpensive. An example is the Sabre TinyDAC from HiFiMeDIY, which is about $30. You can find something with the same parts on Ebay for $15, and I have some and they are also good. If you want the possibility of using higher sample rates than 48kHz, you might check out the regular Sabre DAC from them. It's $45. I have not used it personally but it should work.

          This should be enough info to chew on for now. You should now know that this is not like some device that you buy, connect your inputs and outputs, and get up and running in 10 minutes. You will need to spend some significant time getting everything set up, but that is what DIY is about.
          Charlie's Audio Pages: http://audio.claub.net

          Comment


          • #6
            Re: NEW: the Active Crossover Designer for ecasound/LADSPA (ACD-L)

            And here is the more familiar "heatmap". I plotted the same data in the rectangular form. I think this is OK for lower angles but here we are going up to +/- 90 degrees.

            For some reason the resolution is being downsampled. The actual plots looks clearer that what you see in the attachment.


            Click image for larger version

Name:	ACD-L rectangular sonogram example.jpg
Views:	1
Size:	45.1 KB
ID:	1169771
            Charlie's Audio Pages: http://audio.claub.net

            Comment


            • #7
              Re: NEW: the Active Crossover Designer for ecasound/LADSPA (ACD-L)

              Originally posted by charlielaub View Post

              Initially I was planning on using audio via the HDMI output and I bought a couple of the very same extractors that you linked to above. But after trying for a couple of weeks I gave up. I was not able to get the Pi to output anything more than 2-channel audio via HDMI. This may have been because it was connected to a DVI-D monitor via an adapter. Evidently HDMI is able to sense what is connected, and when it sees that a DVI-D monitor is on the end of the cable (via an adapter dongle) it knows that the monitor has no audio capability and shuts down the audio. This is likely also a problem is your plan is to use the R-Pi "headless" (without display), which is how I use them and I think you would too (with your plate amp idea). So I would forget about HDMI audio for now. Anyway, those HDMI-audio-extractors are certainly a black box and don't have any real audio specs associated with them. Who knows if the audio output are any good or not. I would not waste time or money on one, but you can follow my lead (see below) for another way.
              Thanks for your comments. It's been a while, but IIRC the I/O on an RPI can be used to send I2S data, so another option is to direct I2S data to multiple DAC's for multichannel output, but that may be getting overly complicated. If there's an external multichannel USB audio device that works with RPI that may be the easiest option. I was hoping to be able to send 4-8ch output in order to use a single RPI/RPI2 as the audio processor for a fully active system (the "HARDER" option), rather than a RPI for each speaker as a 2ch device. The RPI here isn't even the most important, but inexpensive and fanless are ideal features which puts the RPI on the radar.

              For the HARDEST option, I would imaging something like the multicasting capability of pulseaudio could be used to stream to multiple devices easily, but I am unsure of how well the timing will be aligned at each unit which is of utmost importance. Multicasting pulseaudio streams uses a lot of bandwidth, so wireless is probably out of the question, but for simply using multiple RPIs, you could dedicate them on their own wired network to sync up the audio streams for processing. In this case you don't have to worry about compressed audio or not, as the uncompressed audio output is simply sent out on the network as a stream.
              "I just use off the shelf textbook filters designed for a resistor of 8 ohms with
              exactly a Fc 3K for both drivers, anybody can do it." -Xmax

              Comment


              • #8
                Re: NEW: the Active Crossover Designer for ecasound/LADSPA (ACD-L)

                Originally posted by dcibel View Post
                Thanks for your comments. It's been a while, but IIRC the I/O on an RPI can be used to send I2S data, so another option is to direct I2S data to multiple DAC's for multichannel output, but that may be getting overly complicated. If there's an external multichannel USB audio device that works with RPI that may be the easiest option. I was hoping to be able to send 4-8ch output in order to use a single RPI/RPI2 as the audio processor for a fully active system (the "HARDER" option), rather than a RPI for each speaker as a 2ch device. The RPI here isn't even the most important, but inexpensive and fanless are ideal features which puts the RPI on the radar.

                For the HARDEST option, I would imaging something like the multicasting capability of pulseaudio could be used to stream to multiple devices easily, but I am unsure of how well the timing will be aligned at each unit which is of utmost importance. Multicasting pulseaudio streams uses a lot of bandwidth, so wireless is probably out of the question, but for simply using multiple RPIs, you could dedicate them on their own wired network to sync up the audio streams for processing. In this case you don't have to worry about compressed audio or not, as the uncompressed audio output is simply sent out on the network as a stream.
                I have used two USB DACs of the type I mentioned above on the same PI for a 4-channel output setup. Works great. I imagine you can add more, although I am not sure when you will run into the bus bandwidth limit. It's doing both data reception (USB WiFi dongle) and audio output (via the DACs).
                Charlie's Audio Pages: http://audio.claub.net

                Comment


                • #9
                  Re: NEW: the Active Crossover Designer for ecasound/LADSPA (ACD-L)

                  I'm still experimenting with the heatmap and polar plot that can be generated by ACD-L's multi-axis plotting extension. During this process I realized that I should be able to calculate the directivity index as a function of frequency, provided the user supplies enough angular data for the results of the DI calculation to make sense.

                  This is IMHO definitely worth doing. Consideration of a loudspeaker's directivity is something that I have started to factor into the planning stage of my projects, since the crossover cannot "fix" problems with the directivity - it's inherent to the way the drivers in the system radiate sound into space. Also, the work by Toole and others points to a smoothly varying, if not constant, directivity. If you can't determine or calculate the directivity then trying to achieve this is still possible in a more qualitative sense, but involves quite a bit of handwaving and guesstimation.

                  Even if the directivity can be calculated, for most situations it will still be an estimate. This is because to calculate the true directivity you would need to measure (or model a la Geddes) the response of the loudspeaker on the surface of some spherical boundary at a distance r away from the loudspeaker. This is because, strictly speaking, the acoustic power output will vary all over that sphere since loudspeakers are typically directional except at the lowest frequencies. What seems to be a typically approach is to only measure the loudspeaker's output in a horizontal plane around the loudspeaker passing through the tweeter, for instance. This assumes that the acoustic power will remain the same as you move away from that plane up or down while at the same off-axis angle in the left-right direction. This assumption is more or less valid for some loudspeakers, and not so valid for others, so any directivity calculation using data from the horizontal plane only should probably have a disclaimer attached to it. It's always good to know and communicate the limits and assumptions of your methods.

                  It might be possible to incorporate measurements done in both the horizontal plane AND the vertical plane (both planes passing through e.g. the tweeter) in the directivity calculation. This still assumes some homogeneity of the response on that spherical boundary, but it might be a way to get a better DI estimate for systems with strongly varying acoustical output in the vertical direction. One example of this would be an MTM system with a high M-T crossover point.
                  Charlie's Audio Pages: http://audio.claub.net

                  Comment


                  • #10
                    Re: NEW: the Active Crossover Designer for ecasound/LADSPA (ACD-L)

                    Originally posted by charlielaub View Post
                    I have used two USB DACs of the type I mentioned above on the same PI for a 4-channel output setup. Works great. I imagine you can add more, although I am not sure when you will run into the bus bandwidth limit. It's doing both data reception (USB WiFi dongle) and audio output (via the DACs).
                    Very, very cool, Charlie! Especially the diffusion mapping! Was going to ask, but the conversation got there already on what kinds of output hardware could be used. Think there's enough CPU left in one for 6 ch? Would be interesting if the multichannel audio over HDMI issue could be fixed. Have you tried plugging the HDMI into a HT amp? Maybe you could have the monitor out, and tell the Pi it has an audio device. Would be rather awesome if you could jack into a HT receiver and be driving 4 or 6 ch of drivers, plus a sub channel or two!

                    Another thought, have you tried a multichannel USB soundcard, as an output device?

                    Again, congrats on some very cool work.... I think I'm going to be ordering a few of those cheap DACs shortly...

                    Comment


                    • #11
                      Re: NEW: the Active Crossover Designer for ecasound/LADSPA (ACD-L)

                      Originally posted by jonpike View Post
                      Think there's enough CPU left in one for 6 ch?
                      Yes, I think so. The crossover only uses a few percent (e.g. 5%) for 2 channels on the Pi 2. My guess is that the limitation likely lies with the USB bus if you use multiple USB DACs but I don't have any data on that.

                      Would be interesting if the multichannel audio over HDMI issue could be fixed. Have you tried plugging the HDMI into a HT amp? Maybe you could have the monitor out, and tell the Pi it has an audio device. Would be rather awesome if you could jack into a HT receiver and be driving 4 or 6 ch of drivers, plus a sub channel or two!
                      Well, there is no HT here, so I can't try that. I think I read that some people had gotten that to work, but honestly there were so many issues with audio over HDMI reported, after my own struggles I put it all behind me.

                      Another thought, have you tried a multichannel USB soundcard, as an output device?
                      I did try an inexpensive 7-ch USB audio box. It was prone to noise/interference and other audio characteristics were not as good as I wanted (distortion, FR, etc) so I moved on to the stereo DACs that I am using now. If you want to try it out and you come up to BA I'd be happy to give it to you to take home and try. Drop me an EMail about that if you are interested.
                      Charlie's Audio Pages: http://audio.claub.net

                      Comment


                      • #12
                        Re: NEW: the Active Crossover Designer for ecasound/LADSPA (ACD-L)

                        Originally posted by charlielaub View Post
                        And if you think that is cool, check out the attached plot. This is another way to visualize those "heatmaps" that you sometimes see to show constant directivity of a horn, etc. but done using polar coordinates.

                        [ATTACH=CONFIG]60967[/ATTACH]
                        This is a really good way to present that data. I prefer a polar plot like this as well. I've not been able to find an open source plotting tool in Windows using C# that will do polar plots of any kind. The one I set up a while back did surface plots, but I couldn't agree to the licensing requirement and removed it. I'd be happy to just be able to do standard polar plots.

                        dlr
                        WinPCD - Windows .NET Passive Crossover Designer

                        Dave's Speaker Pages

                        Comment


                        • #13
                          Re: NEW: the Active Crossover Designer for ecasound/LADSPA (ACD-L)

                          Maybe not a C# solution, but it sounds like Charlie is using GNUplot, which does have a windows port.

                          http://www.gnuplot.info/
                          "I just use off the shelf textbook filters designed for a resistor of 8 ohms with
                          exactly a Fc 3K for both drivers, anybody can do it." -Xmax

                          Comment


                          • #14
                            Re: NEW: the Active Crossover Designer for ecasound/LADSPA (ACD-L)

                            Originally posted by dlr View Post
                            This is a really good way to present that data. I prefer a polar plot like this as well. I've not been able to find an open source plotting tool in Windows using C# that will do polar plots of any kind. The one I set up a while back did surface plots, but I couldn't agree to the licensing requirement and removed it. I'd be happy to just be able to do standard polar plots.

                            dlr
                            Indeed I am using GNUplot to create the rectangular and polar heatmap/sonogram plots. I decided to use GNUplot because it's free and available for multiple OSes, including a Windows build (via MinGW I believe).

                            Some time and effort was required to get these plots worked up into their present form. The data must be in a certain format for GNUplot and this is done as part of my upcoming Excel multi-axis plotting extension. You can generate the data set for the rectangular heatmap using only worksheet functions, so that should also work in OpenOffice Calc. On the other hand, to create the dataset for the polar plot, I had to write some VBA code so at this stage that is only working under Excel.

                            To get the GNU plot scripts working took a lot of trial-and-error, headscratching, and begging around various forums until I finally was able to get something working more or less correctly. Complete and clear documentation is not a strength of GNUplot, but there are people who know it well if you can find them.

                            Also, if you only need to plot the response in polar coordinates for a single frequency (or only a couple at a time) then you can do that (just using worksheet functions) in my plotting extension. There is an example plot like this in the first post in this thread.
                            Charlie's Audio Pages: http://audio.claub.net

                            Comment


                            • #15
                              Re: NEW: the Active Crossover Designer for ecasound/LADSPA (ACD-L)

                              I investigated that once, didn't fit my needs. It's described as command-line driven. I want something that I can link with my program,

                              dlr
                              WinPCD - Windows .NET Passive Crossover Designer

                              Dave's Speaker Pages

                              Comment

                              Working...
                              X