Aaron, I just want to say that I really appreciate this content and your work more generally. Discovering your channel this year has been very encouraging. I'm currently in a master's program developing audio DSP software for both embedded and g-purpose PC environments, and am hoping to unite them with an open ecosystem that supports common filetypes for amplifier modeling (i.e. NAM) and other standards for configuring effects and sharing "patches". I was inspired by an old Fender patent (US Patent No. 20070234880) which sought to unify bedroom/desktop, rehearsal, studio and stage environments with a portable device that would "dock" into each context. Their vision never made it to production in that form... I think you'd really get a kick out of the drawings! Software that ports between the various environments seems much more feasible- a library that wraps both libDaisy (for Daisy dev), Circle (for bare-metal raspi), etc and compiles the same DSP code with alternative backends based on the arguments of a run.sh script.
RUclips recommended me this video on the main page, I thout SHARC was obsolete. Im glad to see it get some use, it is an interesting DSP architecture. Best of luck with your poject
If Analog Devices didn't charge $1,000 for their compiler, there'd be more people interested in trying out their chips. If SHARC dies it will be by their own hand. (The demo board we're using comes with a free license but it only works on the demo boards; if you then wanted to make a commercial product with it you'd have to buy a CrossCore license).
I started using SHARC in 1995 when they were still X( not released) parts and I was the only person using them in the entire Midwest. I needed the 40 bit floating point for my accelerator project. The silicon has always been amazing, but like many embedded software tools, they are not the best. This is the same for many FPGA tools. This may be hard for a student to do but you need a dedicated computer and or virtual machine and don’t install anything more on it than you need to do this work. A VM will allow for regular backups of the complete system which can be a lifesaver when something breaks you and you have no idea what. Clean installs following your own developed process is also a big help. These products have very small development teams and they are doing their best. I know there is a lot of competition out there but show me a better interrupt structure than a SHARC for audio work.
That’s really likely! My code was saved in my Georgia Tech OneDrive, which has the chunky fixed name of “OneDrive- Georgia Institute of Technology”. Not to mention everything before it in the path
This is a pretty common issue when trying to build projects that don’t have tons of users and dev support. The ORDER you include header files can be critically important to whether the system builds or not, along with a number of other issues. Just part of the development process unfortunately, dealing with someone else’s tech debt on the build system.
For twenty years ago I was using the Ez-Lite shark for designing a digital RIAA correction filter and I remember that there were examples in the manual for ex. chorus flanger effect. I would take a look in the old shark manual from that time, because it all started out from shark and in the meantime ADI developed new DSP (Blackfin) but the drivers are properly only modified to the bare-metal.
it would be amazing if you did a whole tutorial series on how to get started. im planning on doing a capstone project at school for a guitar pedal design and im looking into different dsps or mcus. thanks so much
I definitely wouldn’t recommend the SHARC. I’d strongly recommend checking out the Daisy Seed - I put another student on that and he was up and running full speed in about a week.
@ i see thanks for replying, this is for my graduate research so i do have 3 months for the basic concept and planning. thesis portion would be an actual working design with pba layout and firmware.
Oh dear, it’s always the magic incantations - that’s one thing I hated about embedded header files, declaring and linking. I did an embedded flowmeter on bare metal on the cortex platform and I spent HOURS AND HOURS creating, tracking and editing the hardware definition header files and all the includes and project file structure. Would love to see the hw oscope on here with the input and output waveforms and an explanation of the sample rates, nyquist and a 20khz tone 😊
Oh my, ... I must still have ADSP21061s from more than a quarter of century ago in my archives... I was eagerly perusing comp.dsp in the 1997-2001 era 😀
Lol I work at ADI, but in RF… I only know one person who worked on Sharc and they’re in MA. Last time I encountered an issue like this was with the stm32cube IDE for hobby DSP. It wasn’t recognizing the include files because I needed to point the compiler to the actual location of the header files, this looks like a more advanced issue though.
Oh look, another dodgy embedded IDE based on Eclipse! Aaaargh! At my last job we had to use the STM32 Cube IDE for the embedded software development. What a hellscape. I swear there's something seriously wrong with most Java developers. Anyway, so with the include files not working, Eclipse (and by association I assume, the CrossCore IDE) treats C and C++ build configurations separately. There may be an include directory definition in the C++ configuration that isn't in the C configuration. Check in Project -> Properties to see if they have a list of include directory options. You could confirm it's a C/C++ thing by trying to include the file in a .c and a .cpp file and see if anything fails. The IDE uses GNU tools to compile and debug. GCC, GDB, etc. What it sounds like is gdbserver is launching and uploading the binary to debug to the hardware, but the IDE isn't connecting to gdbserver to tell it to start. When you close the IDE, gdbserver terminates and the code break stops, causing the core to start running. You may need to go through logs to check the IDE is trying to connect. I'd like to help more but these things are very nuanced! Cheers.
If you buy this Audio Module board, you get a special license that only works with it. But a standard single user license for that dodgy IDE is around $1,000!
@@Lantertronics Yikes! I would think they're probably licensing the right to use the libraries and any proprietary tool chains used to compile code for the system, rather than the IDE itself, unless they have their own agreement with Eclipse. It's still a slight improvement on some FPGA IDEs I've used :)
0:16 can’t help with the include statements but I can tell you that Andy Summers’ “chorus” effect was actually an Electric Mistress flanger with the Range knob maxed out 🤘🎸
Did you tried to move the dat files in a shorter paths? I know some old windows libraries are not able to handle paths with more than 256 chars and will return a IO failure.
3:23 Include files are searched for in SPECIFIED directories. These are specified to the compiler with -I options on Unix, e.g. g++ and clang++ and /I I think on MSVC. Your IDE also needs to know this information and is getting it somehow from your configuration. I have always had trouble on MSVC++ in supplying paths and other config for "release" builds but then building in "debug" and wondering why changes weren't taking effect. I think you can use an absolute path name starting with /. Also try including with instead of "".
Could it be that the linker search is missing a few paths? I hate depending on demo code for drivers and so I usually write my own. It's tedious, but I never run into issues like this.
for the includes: do the files actually exist in that location? and no, the editor finding a file with that filename doesn't necessarily answer that - it could be looking elsewhere. if that's not it, try moving your project out of your OneDrive directory, specifically to something that's not OneDrive (OneDrive does screwey stuff behind the scenes), doesn't have spaces in the directory name, and is significantly shorter (windows has issues with very long filenames).
The file-not-found problem smells like maybe a file system case sensitivity issue. If, for example, your file system is setup to be case sensitive and the creator of the project had a case insensitive file system, then they would never see their own file name bug. And it would be potentially hard for you to spot it.
How has Analog Devices not been more formally supporting your program? They should be providing as many hardware and software licenses as you guys need to teach and grow support for their platform, and providing technical resources to the faculty AT THE VERY LEAST to create a conduit to solve problems everyone is facing with these processors.
Wow, I had no idea the H9000 was ARM all the way! Indeed... I had another student look at the Daisy Seed (STM32 based) and he was fully up and running in about a week.
@ if you did some googling after my first comment, you also probably found the internal pics, they have a 4 cpu boards, that plugin to repurposed dimm sockets. The marketing states this is for future upgradability…
Nah, not dying. You still can't make 1 sample stream audio processing with CPUs. Block size is most of the time 32 samples on ARM. DSPs or synthesized DSPs on FPGAs are still king in low latency audio processing.
Aaron, I just want to say that I really appreciate this content and your work more generally. Discovering your channel this year has been very encouraging.
I'm currently in a master's program developing audio DSP software for both embedded and g-purpose PC environments, and am hoping to unite them with an open ecosystem that supports common filetypes for amplifier modeling (i.e. NAM) and other standards for configuring effects and sharing "patches". I was inspired by an old Fender patent (US Patent No. 20070234880) which sought to unify bedroom/desktop, rehearsal, studio and stage environments with a portable device that would "dock" into each context. Their vision never made it to production in that form... I think you'd really get a kick out of the drawings!
Software that ports between the various environments seems much more feasible- a library that wraps both libDaisy (for Daisy dev), Circle (for bare-metal raspi), etc and compiles the same DSP code with alternative backends based on the arguments of a run.sh script.
this guy should have his own YT channel
He is fantastic! I've been very fortunate to have him as a student.
I couldn’t agree more!
RUclips recommended me this video on the main page, I thout SHARC was obsolete. Im glad to see it get some use, it is an interesting DSP architecture. Best of luck with your poject
Mostly this experience is convincing me we should stick with STM32. ;)
If Analog Devices didn't charge $1,000 for their compiler, there'd be more people interested in trying out their chips. If SHARC dies it will be by their own hand.
(The demo board we're using comes with a free license but it only works on the demo boards; if you then wanted to make a commercial product with it you'd have to buy a CrossCore license).
@@Lantertronics oh wow that really sucks. as if they didnt want people to use these chips!
I started using SHARC in 1995 when they were still X( not released) parts and I was the only person using them in the entire Midwest. I needed the 40 bit floating point for my accelerator project. The silicon has always been amazing, but like many embedded software tools, they are not the best. This is the same for many FPGA tools. This may be hard for a student to do but you need a dedicated computer and or virtual machine and don’t install anything more on it than you need to do this work. A VM will allow for regular backups of the complete system which can be a lifesaver when something breaks you and you have no idea what. Clean installs following your own developed process is also a big help. These products have very small development teams and they are doing their best. I know there is a lot of competition out there but show me a better interrupt structure than a SHARC for audio work.
Rad! Great work! Really fun to see some conversation about some hurdles programming for these
Could you be hitting Window’s max path length limitation of 260 characters? There is a registry edit to fix that.
First thing I thought of. Definetely not a good idea to put such a long path on the include section.
That’s really likely! My code was saved in my Georgia Tech OneDrive, which has the chunky fixed name of “OneDrive- Georgia Institute of Technology”. Not to mention everything before it in the path
This is a pretty common issue when trying to build projects that don’t have tons of users and dev support. The ORDER you include header files can be critically important to whether the system builds or not, along with a number of other issues.
Just part of the development process unfortunately, dealing with someone else’s tech debt on the build system.
Tough problems. You should be...
Sending out an SOS.
Hah! :)
For twenty years ago I was using the Ez-Lite shark for designing a digital RIAA correction filter and I remember that there were examples in the manual for ex. chorus flanger effect. I would take a look in the old shark manual from that time, because it all started out from shark and in the meantime ADI developed new DSP (Blackfin) but the drivers are properly only modified to the bare-metal.
it would be amazing if you did a whole tutorial series on how to get started. im planning on doing a capstone project at school for a guitar pedal design and im looking into different dsps or mcus. thanks so much
I definitely wouldn’t recommend the SHARC. I’d strongly recommend checking out the Daisy Seed - I put another student on that and he was up and running full speed in about a week.
@ i see thanks for replying, this is for my graduate research so i do have 3 months for the basic concept and planning. thesis portion would be an actual working design with pba layout and firmware.
Oh dear, it’s always the magic incantations - that’s one thing I hated about embedded header files, declaring and linking. I did an embedded flowmeter on bare metal on the cortex platform and I spent HOURS AND HOURS creating, tracking and editing the hardware definition header files and all the includes and project file structure. Would love to see the hw oscope on here with the input and output waveforms and an explanation of the sample rates, nyquist and a 20khz tone 😊
@12:31 he’s got the flange there but Soundgarden used an actual Leslie cab on “Black Hole Sun” - extra credit! ;)
Oh my, ... I must still have ADSP21061s from more than a quarter of century ago in my archives...
I was eagerly perusing comp.dsp in the 1997-2001 era 😀
Lol I work at ADI, but in RF… I only know one person who worked on Sharc and they’re in MA. Last time I encountered an issue like this was with the stm32cube IDE for hobby DSP. It wasn’t recognizing the include files because I needed to point the compiler to the actual location of the header files, this looks like a more advanced issue though.
Oh look, another dodgy embedded IDE based on Eclipse! Aaaargh! At my last job we had to use the STM32 Cube IDE for the embedded software development. What a hellscape. I swear there's something seriously wrong with most Java developers.
Anyway, so with the include files not working, Eclipse (and by association I assume, the CrossCore IDE) treats C and C++ build configurations separately. There may be an include directory definition in the C++ configuration that isn't in the C configuration. Check in Project -> Properties to see if they have a list of include directory options. You could confirm it's a C/C++ thing by trying to include the file in a .c and a .cpp file and see if anything fails.
The IDE uses GNU tools to compile and debug. GCC, GDB, etc. What it sounds like is gdbserver is launching and uploading the binary to debug to the hardware, but the IDE isn't connecting to gdbserver to tell it to start. When you close the IDE, gdbserver terminates and the code break stops, causing the core to start running. You may need to go through logs to check the IDE is trying to connect.
I'd like to help more but these things are very nuanced! Cheers.
If you buy this Audio Module board, you get a special license that only works with it. But a standard single user license for that dodgy IDE is around $1,000!
@@Lantertronics Yikes! I would think they're probably licensing the right to use the libraries and any proprietary tool chains used to compile code for the system, rather than the IDE itself, unless they have their own agreement with Eclipse. It's still a slight improvement on some FPGA IDEs I've used :)
@@256byteram Yeah, you're paying for the special compilers. There's no open-source compilers for SHARC, Blackfin, etc...
My thought though is that if they want to encourage people to use their chips they should just give them the tools.
0:16 can’t help with the include statements but I can tell you that Andy Summers’ “chorus” effect was actually an Electric Mistress flanger with the Range knob maxed out 🤘🎸
That's interesting!
Did you tried to move the dat files in a shorter paths? I know some old windows libraries are not able to handle paths with more than 256 chars and will return a IO failure.
I spent 5 years trying to buy a sharc development board in India without paying extortion money. Now I have a Raspberry Pico 2.
1:06 rather than checking for mod_ind_L < 0 you might be able to used unsigned ints and get the right sign for free?
3:23 Include files are searched for in SPECIFIED directories. These are specified to the compiler with -I options on Unix, e.g. g++ and clang++ and /I I think on MSVC. Your IDE also needs to know this information and is getting it somehow from your configuration. I have always had trouble on MSVC++ in supplying paths and other config for "release" builds but then building in "debug" and wondering why changes weren't taking effect. I think you can use an absolute path name starting with /. Also try including with instead of "".
Could it be that the linker search is missing a few paths?
I hate depending on demo code for drivers and so I usually write my own. It's tedious, but I never run into issues like this.
for the includes: do the files actually exist in that location? and no, the editor finding a file with that filename doesn't necessarily answer that - it could be looking elsewhere. if that's not it, try moving your project out of your OneDrive directory, specifically to something that's not OneDrive (OneDrive does screwey stuff behind the scenes), doesn't have spaces in the directory name, and is significantly shorter (windows has issues with very long filenames).
You are on target I think.
Analog devices should send more boards effective immediately. 😤
Strymon also dropped SHARC in their new line of effects, they also switched to native ARM
Great !
Thanks!
Also, please tell Andrew his locks sound great
is this the same chipset as the Neural DSP Quad Cortex, or does that use something different?
The file-not-found problem smells like maybe a file system case sensitivity issue. If, for example, your file system is setup to be case sensitive and the creator of the project had a case insensitive file system, then they would never see their own file name bug. And it would be potentially hard for you to spot it.
😂 I feel that.
How has Analog Devices not been more formally supporting your program? They should be providing as many hardware and software licenses as you guys need to teach and grow support for their platform, and providing technical resources to the faculty AT THE VERY LEAST to create a conduit to solve problems everyone is facing with these processors.
Iron Maiden……
I worked with the Sharc DSP it was a clown show.
Yeah, it's not been easy so far!
Great video.. but can't help but say.. DSP's are a dying technology, Native ARM is the future... Just look at what Eventide have done with the H9000
Wow, I had no idea the H9000 was ARM all the way! Indeed... I had another student look at the Daisy Seed (STM32 based) and he was fully up and running in about a week.
@ I was also super surprised, the H9 is also arm based.
@ if you did some googling after my first comment, you also probably found the internal pics, they have a 4 cpu boards, that plugin to repurposed dimm sockets. The marketing states this is for future upgradability…
Nah, not dying. You still can't make 1 sample stream audio processing with CPUs. Block size is most of the time 32 samples on ARM. DSPs or synthesized DSPs on FPGAs are still king in low latency audio processing.
@@MrPureBasic Have you tried the XMOS stuff? It looks kinda interesting. I can't fully wrap my head around it.