grame-cncm / faust

Functional programming language for signal processing and sound synthesis
http://faust.grame.fr
Other
2.57k stars 322 forks source link

add ac101 driver support for faust2esp32 #343

Closed Mehdalon closed 5 years ago

Mehdalon commented 5 years ago

I need some help to add an ac101 driver to the faust2esp32 tool. The Sawtooth example works with the driver but I was not yet able to implement it to the faust2 tool by myself. If some faust2 experienced person could help out that would be appreciated.

Mehdalon commented 5 years ago

https://github.com/Dig0xin/faust2esp32ac101/tree/master

I have put the files here for now for reference.

Mehdalon commented 5 years ago

I start understanding the eps32.cpp file a bit better. With some luck, we have a working faust2esp32 with ac101 soon with audio and midi over uart...

rmichon commented 5 years ago

Hey hey, sorry for the late reply! I was out on vacations for the past few weeks ;). As you probably noticed at this point, the ADC/DAC driver files are completely independent from the ESP32 portion of the code (https://faust.grame.fr/doc/tutorials/index.html#configuring-the-audio-codec). In other words, we could just add your AC101.cpp and AC101.h to architecture/esp32/drivers/ac101 and document how this object should be used in a README placed in the same folder and perhaps in https://faust.grame.fr/doc/tutorials/index.html#configuring-the-audio-codec. What do you think?

thopman commented 5 years ago

Hi Romain,

I've ported a arduino AC101 driver to esp-idf and have a working example with the ac101 in both arduino and esp-idf. i put some simple #if #elif #else statements in the faust user code to switch between the ac101 or the ttgo t-audio board pin definitions and I2S intialisation. I'll do some documentation and post them on my git later this week. I'll send you a message with a link once i have them up.

Also working on implementing MIDI and will probably have some questions later about that.

with kind regards,

Thomas

Mehdalon commented 5 years ago

Thanks for the reply Romain and Thomas! No Sorry :) I hope you had a great time on the vacation. Thanks to Thomas for the AC101 job! Right now I am adding the Arduino esp32 core to the components folder and will see how far I get as I overlooked this from the beginning and havent tried it yet. I will keep you updated.

rmichon commented 5 years ago

OK, ping me when I'll need to take action or if you have any questions. #if #elif, etc. is definitely the way to go about this, but since features/functionalities vary from one audio codec to another I think it'll be hard to have a "universal" solution and configuration might change for different applications, etc.

thopman commented 5 years ago

Hi Romain, completely understand that a universal solution is not feasible. However i do think the ac101 driver option would make a great addition. The A1S module is incredibly cheap and the board for it is easily available.

I have the driver ready, i added support for it in the faust2esp32 script and have made support for it available as a define option in esp32.cpp/h. I compiled it and after some testing all seems to be working properly.

i also have the driver, together with arduino and esp-idf (faust sawtooth) examples up on my git page. https://github.com/thopman/AC101

What would be the git etitquette to get these changes commited and pushed? Normally only using git for my own projects, so not quite sure how to proceed.

with kind regards,

Thomas

Mehdalon commented 5 years ago

I am now at the point where I can use the arduino midi library and see midi incomming on the esp32. I did not use the components folder (slow compiling and large files) but ported the arduino lib (mainly hardwareserial) to esp32. Next step is to get a simple faust gate triggered via the midi call. I think I will look into how its done inside smartkeyboard the owl or teensy. Alsways glad for some directions :D.

Mehdalon commented 5 years ago

Just found the faust -h and got some infos from Thomas. Thanks for that. Will now look at the Faust2esp32 part to make sure the midi is fine on the faust.dsp end and write something like a esp32-midi file to connect to the faust midi like the teensy has.

rmichon commented 5 years ago

Great work! Thanks, Thomas! I just approved your pull request.

breekmes commented 4 years ago

Hi guys,

I seem to run into a brick wall, maybe you could help me out. In Arduino IDE , which board should I select/connect to when using the ESP32-A1S chip/board ? I am using an Ai thinkers Audio Dev Kit board from ali, but it doesn't seem to be in my list of ESP32 boards.

Friendly greetings, Hannes

thopman commented 4 years ago

Hi Hannes,

i've only briefly tested my ac101 driver on arduino (i tend to only use esp-idf). But i remember choosing one of the esp32 based boards with 4Mb ram at random from the boards available.

with kind regards,

Thomas

breekmes commented 4 years ago
    Thank you Thomas, will try it out when I find some time.

    Vriendelijke groeten,Hannes

On Sun, Apr 5, 2020 at 12:55 AM +0200, "Thomas Hopman" notifications@github.com wrote:

Hi Hannes,

i've only briefly tested my ac101 driver on arduino (i tend to only use esp-idf). But i remember choosing one of the esp32 based boards with 4Mb ram at random from the boards available.

with kind regards,

Thomas

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

dami1 commented 3 years ago

Hi @thopman and @rmichon ,

I don't if this is connected to the new updates on the FAUST web IDE, but the .cpp files exported from the website carry a lot of information concerning the WM8978 codec, leading to many errors, at least while using the Arduino IDE. I managed to run the example provided by Thomas, but I can't upload my own FAUST codes due the incompatibility with the AC101 codec..... Is there an example where I could look to try to figure this incompatibility out?

best,

damião

Mehdalon commented 3 years ago

Hi @thopman and @rmichon ,

I don't if this is connected to the new updates on the FAUST web IDE, but the .cpp files exported from the website carry a lot of information concerning the WM8978 codec, leading to many errors, at least while using the Arduino IDE. I managed to run the example provided by Thomas, but I can't upload my own FAUST codes due the incompatibility with the AC101 codec..... Is there an example where I could look to try to figure this incompatibility out?

best,

damião

@dami1 The codec is an option at compile time - the web editor does not have a drop down for that. You can compile from a linux machine for example with faust2esp32 and the options you need: https://github.com/grame-cncm/faust/blob/master-dev/tools/faust2appls/faust2esp32 And the editor itself you can as well clone and edit to have the functions you need if you prefer that. As rmichon mentioned on Aug 30 above it will be difficult to get a universal solution. Faust uses codec related features.

jonrichings commented 2 years ago

I have a similar question, I'm using a Lyra 4.3 board with an ES8388 audio chip. I can see that Faust2ESP32 offers an option for that chip but I can't get it to run under windows and (my preferred method) FaustIDE does not offer the option. Are there any workarounds?

sletz commented 2 years ago

I suggest you use the Faust Slack channel https://faust.grame.fr/community/help/ to ask for help.