JUCE
stm32mp1-baremetal
Our great sponsors
JUCE | stm32mp1-baremetal | |
---|---|---|
105 | 9 | |
6,096 | 138 | |
2.3% | 8.7% | |
9.5 | 5.0 | |
6 days ago | 7 months ago | |
C++ | C++ | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
JUCE
-
3rd Edition of Programming: Principles and Practice Using C++ by Stroustrup
Personally, I started by writing externals for Pure Data, then started to contribute to the care. Later I took the same path for SuperCollider.
The more typical path, I guess, would be to start with simple audio plugins. Have a look at JUCE (https://juce.com/)!
Realtime audio programming has some rather strict requirements that you don't have in most other software. Check out this classic article: http://www.rossbencina.com/code/real-time-audio-programming-...
-
Anyone know anyone that creates plugins?
Check out https://juce.com in the meantime
-
Modern C++ Programming Course
You can definitely start putting C++ into your embedded projects, and get familiar with things in an environment in which you're already operating. A lot of great C++ code can be found with motivated use of, for example, the platformio tooling, such that you can see for yourself some existing C++ In Embedded scenarios.
In general, also, I have found that it is wise to learn C++ socially - i.e. participate in Open Source projects, as you learn/study/contribute/assist other C++ developers, on a semi-regular basis.
I've learned a lot about what I would call "decent C++ code" (i.e. shipping to tens of thousands, if not hundreds of thousands of customers) from such projects. I would suggest finding an open source C++ project, aligned with your interests, and study the codebase - as well as the repo history (i.e. gource) - to get a productive, relatively effortless (if the interests align) boost into the subject.
(My particular favourite project is the JUCE Audio library: https://juce.com/ .. one of many hundreds of great projects out there from which one can also glean modern C++ practices..)
- Ardour 8.0 released
-
What programming languages do you recommend starting with regarding audio visual programming/audio software development?
Respect for the others here who recommend C but I think they’re possibly masochists. If anything JUCE, which uses C++ is in my opinion far more approachable.
-
How have you used coding in your setup?
Here's a link to their website: https://juce.com/
- xcode or visual studio?
-
Anyone here have experience writing VST audio plugins in C++, or 'wrapping'/converting a VST to an AU plug-in?
It seems like most audio plug-ins are built in C++ inside an audio coding program called JUCE, so maybe if I could open up the exisiting code inside that and then output it as an AU instead of a VST that could work.
-
Common Audio Production
C++ has https://juce.com/, I think.
-
Apple Logic Pro Ruleface
Open source rule https://juce.com/
stm32mp1-baremetal
-
Anyone using the STM32MP1 ? (Dual ARM cores (A7 + M4), Linux, Ethernet, CAN, USB, DACs, ADCs...) FreeRTOS on the 2nd core ?
2x A7 cores for running an OS (Linux, Android) or you can run bare metal code on them too. (https://github.com/4ms/stm32mp1-baremetal)
- The state of neovim with Unreal 4/5
-
STM32MP157F-DK2 Bare Metal
stm32mp1-baremetal and forum post and summary, linker script
-
Hard Real Time Embedded Linux in MPU(cortex A7+M4) Question
As others have said, it’s not real-time Linux because it’s not Linux. I also want to add that if you require hard-real time and are ok with not having Linux, you can also use the A7 core for hard-real time applications. Some example projects here: stm32mp1-baremetal
-
STM32MP1 SAI Module Slave RX FIFO not filling. TX works fine
I didn’t go through the 29 bytes you’re sending to the codec, but I do see you call the array “master”. The codec should be setup as slave. It could cause problems if the codec and ARM chip are both trying to be the master (generating the clocks). You’ve double/triple checked those bytes set up the codec properly? You may want to spell them out like I’ve done here: https://github.com/4ms/stm32mp1-baremetal/blob/master/examples/audio_processor/lib/mdrivlib/drivers/codec_CS42L51_registers.h
-
Real-time Audio Processing Question
And if you want more processing power and memory, there are some audio examples in this project using a Cortex A7 (STM32MP157) bare-metal (512MB RAM, 800MHz) https://github.com/4ms/stm32mp1-baremetal
- Heap userage on bare metal
What are some alternatives?
Qt - Qt Base (Core, Gui, Widgets, Network, ...)
stm32-usart-uart-dma-rx-tx - STM32 examples for USART using DMA for efficient RX and TX transmission
iPlug2 - C++ Audio Plug-in Framework for desktop, mobile and web
mt32-pi - 🎹🎶 A baremetal kernel that turns your Raspberry Pi 3 or later into a Roland MT-32 emulator and SoundFont synthesizer based on Circle, Munt, and FluidSynth.
OpenFrameworks - openFrameworks is a community-developed cross platform toolkit for creative coding in C++.
deepC - vendor independent TinyML deep learning library, compiler and inference framework microcomputers and micro-controllers
imgui - Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies
STM32_Base_Project - STM32 Base project with a lot of stuff
audiogridder - DSP servers using general purpose computers and networks
cortex-m3-rtos - ARM Cortex-M3 Real-Time Operating System for educational purpose.
Cinder - Cinder is a community-developed, free and open source library for professional-quality creative coding in C++.
MySQL_MariaDB_Generic - This MySQL_MariaDB_Generic library helps you connect your boards directly to a MySQL / MariaDB server, either local or cloud-based, so that you can store / retrieve data to / from the server. Supported boards are ESP8266/ESP32, WT32_ETH01 (ESP32 + LAN8720A), nRF52, SAMD21/SAMD51, STM32F/L/H/G/WB/MP1, Teensy, SAM DUE, Mega, RP2040-based boards, Portenta_H7, etc. with Teensy 4.1 NativeEthernet/QNEthernet, W5x00 or ENC28J60 Ethernet, WiFiNINA modules/shields or Portenta_H7 WiFi/Ethernet. Ethernet_Generic library is used as default for W5x00