-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compile error: exit status 1 Compilation error: variable or field 'send_midi_noteon' declared void #2
Comments
Please, make sure that you clone the latest version of main. I checked the project, it is compiled in IDE v.2.3.3 and v.1.8.9 successfully. I now added IF's for ESP32 / ESP32S3 variants. |
Updated ESP32 board library to 3.0.3. Yes, that is the newest. And then tried compiling again using Arduino IDE 2.3.2. I can update to 2.3.3, but maybe it's a macOS issue. Really weird errors that make it look as though stdlib isn't in it, so I tried adding includes for Arduino.h and stdlib.h, but that didn't make it compile either. Only other thing that seems logical is maybe there is something is trying to get an output from that method it errors on. Here is that debug log: exit status 1 Compilation error: variable or field 'send_midi_noteon' declared void |
Ah I see. This port is not yet adapted for core v.3.x.x, please, revert to v.2.0.17, this one should compile ok. |
Ah! OK. Surprising that board updates from Expressif in that IDE aren't backward compatible. I imagine STM and Atmega MCUs don't have that issue. |
I installed ESP32 board library 2.0.17. Still a compiler error though, sadly. What library is "USBSerial" from? Here is the console log of that error: exit status 1 Compilation error: 'USBSerial' was not declared in this scope |
Tried simply commenting out those calls, but then there were many, many other compiler errors. I assume wrote macros to replace DEBUG() with Serial.println or similar somewhere, but maybe didn't include that file in the repo. Anyway, now compiler is complaining about zigbee mode on the one that was compiling before, so maybe switching between board library versions wasn't something that IDE can handle properly. |
Depending on what mcu you have, select either esp32 devboard or esp32s3 devboard, and download latest repo of open303 port |
I thankfully got it to compile by adding this to that main .ino: Thanks again for posting that port! I recommend having a look at that work-in-progress diode ladder port I worked on for most of yesterday night. Actually I worked on it A LOT yesterday using that HORRIBLY formatted PDF (that added a bunch of nonsense and bizarre line breaks and so on when copied from), and then today remembered that there was a repo with generally the same as PDF, so started modifying those files instead. That is here: |
PS: Hearing that was a reminder that a vanilla silver box of that type sounds relatively basic compared to when compressor and bass boost and an MXR and reverb are added. |
Initial opinion is that the AcidBox filter (combo?) and that VADiodeLadder filter emulation filter sound noticeably more accurate. I suspect this filter maybe uses less CPU than that VADiodeLadder filter emulation though. This filter sounds more like somebody is imitating by making sounds through a talkbox in some ways. |
Downgrading from double to float reduced accuracy, and now the port requires tuning |
Ah! Yes, it sounds out of tune. |
Tried adding an LVGL GUI and, although it sounded better than when added a GUI to that other project, it was playing VERY slowly and the CPU was supposedly at about 98% constantly. There is a way to make the synth run on one core and the GUI run on the other core? (without WIFI) Oddly it still had that high CPU usage when the jukebox feature was stopped. |
Would removing all the external MIDI portion or anything else non-essential lower the CPU usage a lot? Vaguely pondering using a second ESP32, but that would maybe involve designing a dual MCU cap touch PCB. Sounds doable, although somewhat burly to make. Adding a tiny S3 such as the Seeed Xiao board and powering it from the other board's USB port seems to be an option though. |
It's definitely possible to run it on selected cores, when using RTOS tasks |
Looked at RTOS tasks some today and it seems putting a lot of tasks on second core would make it run much more efficiently on ESP32. Supposedly the "run arduino on core 0" means that ALL of the code in Arduino IDE runs on only that core. That obviously seems SO inefficient. Here is a supposed example of multi-core tasks for assignment: // Function to be called as a task void setup() { void loop() { |
Yes, correct, and actually you are not obliged to use Arduino loop(), you can kill it with vTaskDelete(NULL) like this
There is also more advanced technique to manage tasks with so called event loops, which can help with balancing cores' load. |
Pondering if that or designing a dual ESP32 PCB is easier to get a GUI on some synths. |
Frankly speaking I would prefer RP2040 as a control mcu, cause it has all the USB host functions, while ESP32-S3's host abilities is still under development. |
Ah. So using an RP2040 as a synth makes MIDI control through USB from a computer easy? I assume that is what "USB host functions" would be for in that use case. |
Nope. When connecting to a PC, MCU acts as a USB device, not as a host. Host functionality makes it possible connecting USB MIDI keyboard to the MCU directly. |
OK, realized I had that concept backwards. Seems obvious that the computer with DAW would be "host" and a peripheral would be a "device". So using an RP2040 as a synth makes MIDI control from a "USB host", such as a computer, easier than with an ESP32? |
ESP32 has that USB host ability no matter one or two connectors are present. But the library components are still under development and are quite raw i'd say. |
Ah. So it's recommendable to use Arduino MIDI Library for making ESP32 synths that are controllable from a laptop DAW through MIDI over USB? (until the ESP32 library is completed enough) |
I'd do so |
Ever tried putting the filter on an FPGA? Seems like that can be a nice solution to use with many different MCU. A diode ladder filter ASIC would be nice also. I made some SMT boards that had been posted on youtube, but the 2 that I made sadly didn't function yet (maybe because of chinese components though). |
FPGA and ASIC aren't yet my hobbies. Also this doesn't seem to be affordable, so a bit out of DIY theme. |
The cost used to be a reason I hadn’t done any FPGA programming, although
now thankfully the “Tang Nano 1K” is low cost, and it can run a full color
tetris emulation.
So I got one of those yesterday. Main issue now is how to transfer data
between the boards.Doing a serial bitstream seems slow, but I have’t run
the maths of 16 bits at clock speed for latency info. The cool thing about
using fpga for filters is that it can likely be multiple filterrs with no
latency, so that should compensate for data transfer speed. Recommend a
better way to transfer data to it?
Plan is to only put filter on the fpga. Doing i2s from fpga sounds
complicated though, so was thinking may start by sending processed data
back to ESP32.
Anyway, sounds complicated (although sounds easier in some ways than
yesterday, when had a pile of wires connected up to try to make a +~ 12V
diode ladder filter on a PCB function) and the wireless communication
between ESP32 boards may still be best solution to that GUI speed issue.
I should maybe quit attempting that for now, unless I commit to making a
dual ESP32 board with a touchscreen. Yesterday a voltage converter was
smoking on the first ESP32 PCB that I designed that sorta functions though,
and a supposed expert at PCB design looked at schematic and couldn’t
clearly find the reason why, so I maybe should base boards on known
functional open source schematics next time.
…On Thu, Aug 15, 2024 at 3:33 AM copych ***@***.***> wrote:
FPGA and ASIC aren't yet my hobbies. Also this doesn't seem to be
affordable, so a bit out of DIY theme.
—
Reply to this email directly, view it on GitHub
<#2 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACJ7JDVX266CMNCKAON4P43ZROWJ3AVCNFSM6AAAAABMBUPJNWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEOBZG4YTOMZYGQ>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
The matter is that accordingly to Wiki, i2s stands for Inter-Integrated Circuit Sound and intended for transmitting two-channel digital audio as PCM between integrated circuit components. So in your case you'll first have to direct the i2s stream to FPGA filter and then back to ESP32, fully occupying one ESP's duplex i2s port, leaving the second port for output (in theory). I don't think that you need to invent something instead of i2s, cause AFAIK i2s ports of ESP32 are using hardware and DMA, so any alternatives would probably be less CPU effective. And maybe there's already some i2s implementation for Tang Nano (which really seems to be affordable). |
Thanks for explaining that! Yes, after I saw full color tetris running with a gamepad on the lowest cost tang nano, I decided to get one. |
By the way, it seems generally recommendable to make all of the secondary C and CPP and Header files (aside from the main .ino of a project) .c or .cpp or .h respectively, and declaring all the functions in a .h file for each. That overcomes the hassle of the Arduino compiler failing to include all the .ino files (as it has HORRIBLY been doing tonight, even after restarting it multiple times...sigh...). I think there are scripts for auto-generating header files. By the way, tried PlatformIO yet? Wondering if it has less hassles and better reliability than the Arduino IDE. (Tired of setting board parameters in Tools menu every time I plug in same board and tired of having to restart that IDE because of it not finding .ino files in same dir and so on) |
It comes in its place once you get the logics of arduino :-/
|
Yesterday was VERY busy (so is today), so excuse the delay in replying. Yesterday THANKFULLY got the first functional MCU PCB design I have made functioning. That's an ESP32 S3 board, so I may hook up a DAC to it later (waiting for a replacement cap as some of the chinese caps seemed faulty) and plug in a knob and run one of these on that. Thanks for that warning about PlatformIO! Hopefully it's much more stable and reliable recently. Tried the Expressif IDE also? Basically what had happened in Arduino IDE was compiler said it couldn't find: Haven't done a lot of C++ programming and when made C++ specific-ish header files it was in Objective-C++, so don't think there were .hpp there. Had thought that .h files work with .cpp files also. Anyway, found a C headers generator script here (although bizarrely python wasn't already installed and then the installer wanted to install 15GB or so...blame apple, so I haven't tried that): |
On IDEs. I have tried Espressif IDE, but this was a nightmare when clean installed IDE just won't comple examples and won't even let you choose a target board. After some tribe dancing I cancelled and moved to VS Code (actually, PlatformIO and Arduino IDE 2.X are based on VS Code) |
Right, adding a quick declaration instead of a header file. That can be alright for getting things functioning. Ah, didn't know it's based on VS Code. By the way, today saw posts about USB MIDI host mode on: touchgadget/esp32-usb-host-demos#1 Is that USB host code for S3 boards already included in AcidBox now? |
Nope, I haven't succeeded with getting the example to work, so I postponed adding the USB host to the AcidBox. Also I am not sure that we have enough CPU cycles left to fit these routines, so I'm gonna test it someday again. |
Ah, tried it also? I should notify that repo about the specifics of those issues...oh wait, there weren't many specifics...aside from the TX light turning on after it was loaded. By the way, using only one bass synth to have MUCH better performance and CPU space is totally reasonable to do. Can add an easy #define flag for that option. |
Additional info, AFAIK PlatformIO cancelles support for the new ESP Arduino core. |
Ah, not so informed about that.
…On Fri, Aug 23, 2024 at 3:58 PM copych ***@***.***> wrote:
Additional info, AFAIK PlatformIO cancelles support for the new ESP
Arduino core.
—
Reply to this email directly, view it on GitHub
<#2 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACJ7JDSULZ7KWCSQTXU4UFDZS3TRPAVCNFSM6AAAAABMBUPJNWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMBWGUYTIMZWGE>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Closing. Feel free to re-open. |
OK. Thanks for notifying about that PlatformIO issue.
…On Sat, Aug 24, 2024 at 6:56 AM copych ***@***.***> wrote:
Closing. Feel free to re-open.
—
Reply to this email directly, view it on GitHub
<#2 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACJ7JDTS3YW4HEPT2MPXA53ZS643PAVCNFSM6AAAAABMBUPJNWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMBXHEYDGNJRG4>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Hi,
Thanks for attempting to add that jukebox mode. Notifying that there was a compiler error in Arduino IDE 2.3.2:
I assume there was maybe a function call somewhere that tried to get send_midi_noteon() to output something. The compiler sadly wasn't very precise about the error.
If it compiles properly there on another version of Arduino IDE, then thanks in advance for notifying what version number.
The text was updated successfully, but these errors were encountered: