Post Go back to editing

JUCE and AD Embedded Processing

Category: Software

Hi everyone,

I'm working on a project that involves using the JUCE framework for audio processing and I'm interested in using an Analog Devices Embedded DSP system for the hardware.

I've searched the forum but haven't found any discussions about using JUCE with these specific systems. Has anyone here attempted this integration before?

If so, I'd be incredibly grateful for any insights or advice you can share. Here are some specific questions I have:

Challenges and Compatibility: Are there any known challenges or compatibility issues to be aware of when combining JUCE with Analog Devices Embedded DSPs?
Integration Examples: Are there any existing examples or tutorials that demonstrate how to integrate JUCE with these systems?
Implementation Tips: If you have experience with this setup, are there any specific tips or tricks you can recommend for a successful implementation?
Thanks in advance for your help!

Parents
  • Hello wolfej17,

    This will be a struggle to keep this short. JUCE is obviously software based and based in a Linux system. The DSPs themselves are of course not in the software domain but in the hardware domain. So getting between the two is important. Linux is a system where you expect there to be drivers that all understand and talk between the hardware and software world. I can use an analogy of a deck of cards. The deck of cards are the hardware. You can use them to play so many different games and you can even make up your own! However, there are games that have a defined set of rules so you could program software to "control" a deck of cards to play a certain game if you have the driver programed to understand the rules of the game. 

    Well, a DSP is a blank slate so you need to have software loaded in the DSP that does something that the driver expects and the driver knows how to control the DSP program. I am sure you can find forums where someone has some examples. We have a Linux space on the forum but this forum is more for answers to specific problems not general questions. Here is that space: (+) Linux Software Drivers - EngineerZone (analog.com)

    Let me offer a bit more help...

    JUCE, and most audio software, is block based. Meaning that it gathers a block of audio and processes it then outputs a block of audio.  This means there has to be buffers setup to gather this input and output data. 

    The SHARC based DSPs we have also operate usually in a block-based processing model and uses C for programming. I suppose you could use assembly but most people use C. So the SHARC based designs will be most compatible with an environment like JUCE. 

    The SigmaDSP line of DSPs are stream based processors. Like you might expect, there are advantages and disadvantages to both. The SigmaDSPs are easy to program and easy to troubleshoot but you do not have as much flexibility in programming because it is a GUI based tool. However, it is powerful and you can do a lot with it. 

    The problem with using JUCE and a SigmaDSP is that the SigmaDSP does not have much for Linux drivers. There are some but they are very simple. You would have to write your own to interface with your custom program in the DSP. This is the "write your own game for the deck of cards" analogy. You have to have hardware that will output clocks and data at the sampling rate in real time in a sample by sample basis not block based. 

    I have a YouTube channel for the SigmaDSPs and there is a playlist for an introduction. But, you will have to know a lot about the hardware side of the system.

    (34) How to SigmaDSP and SigmaStudio - YouTube

    I hope someone else in the community can jump in here and offer more information. There may be some people who have done more of this than I have. 

    Dave T

     

Reply
  • Hello wolfej17,

    This will be a struggle to keep this short. JUCE is obviously software based and based in a Linux system. The DSPs themselves are of course not in the software domain but in the hardware domain. So getting between the two is important. Linux is a system where you expect there to be drivers that all understand and talk between the hardware and software world. I can use an analogy of a deck of cards. The deck of cards are the hardware. You can use them to play so many different games and you can even make up your own! However, there are games that have a defined set of rules so you could program software to "control" a deck of cards to play a certain game if you have the driver programed to understand the rules of the game. 

    Well, a DSP is a blank slate so you need to have software loaded in the DSP that does something that the driver expects and the driver knows how to control the DSP program. I am sure you can find forums where someone has some examples. We have a Linux space on the forum but this forum is more for answers to specific problems not general questions. Here is that space: (+) Linux Software Drivers - EngineerZone (analog.com)

    Let me offer a bit more help...

    JUCE, and most audio software, is block based. Meaning that it gathers a block of audio and processes it then outputs a block of audio.  This means there has to be buffers setup to gather this input and output data. 

    The SHARC based DSPs we have also operate usually in a block-based processing model and uses C for programming. I suppose you could use assembly but most people use C. So the SHARC based designs will be most compatible with an environment like JUCE. 

    The SigmaDSP line of DSPs are stream based processors. Like you might expect, there are advantages and disadvantages to both. The SigmaDSPs are easy to program and easy to troubleshoot but you do not have as much flexibility in programming because it is a GUI based tool. However, it is powerful and you can do a lot with it. 

    The problem with using JUCE and a SigmaDSP is that the SigmaDSP does not have much for Linux drivers. There are some but they are very simple. You would have to write your own to interface with your custom program in the DSP. This is the "write your own game for the deck of cards" analogy. You have to have hardware that will output clocks and data at the sampling rate in real time in a sample by sample basis not block based. 

    I have a YouTube channel for the SigmaDSPs and there is a playlist for an introduction. But, you will have to know a lot about the hardware side of the system.

    (34) How to SigmaDSP and SigmaStudio - YouTube

    I hope someone else in the community can jump in here and offer more information. There may be some people who have done more of this than I have. 

    Dave T

     

Children
  • Thanks Dave! That's all very helpful.

    I've talked with users in JUCE forums as well (some of who have programmed SHARC processors), and we came to a conclusion.

    Basically, I'd have a host program that would run on computer and only use JUCE UI for controlling the DSP in a friendly and familiar way. DSP would be programmed with CCES since its the AD 21593 processor I'm after. This for a real-time sound design instrument.

    In your experience, is it possible to use JUCE only for the UI as a host application on Windows/Mac, and use CCES for DSP? I'd need to control the DSP in realtime using the JUCE GUI, and this system would (hopefully) be relatively future-proof. 

    Thank you again!

    Jacob

  • Hello Jacob,

    I am the SigmaDSP person on the forum and I also moderate the Audio space. You should be asking these questions here:

    (+) ADSP-SC59x - EngineerZone (analog.com)

    There you will find the people who know that processor. 

    Thanks

    Dave T