Hi there,
We are happy to announce the release of a new version of the Bela codebase! There are three major new features:

  • IDE: New design, with improved workflow and functionality
  • Code libraries: Libraries are pieces of code that can be easily shared across projects. We turned some of the existing Bela C++ examples into libraries (such as Scope, Midi, Udp, OSC), and added some others (like basic DSP libraries, such as ADSR and Biquad).
  • GUI: One of the new libraries is for easily making GUIs for your Bela project, using the p5.js library.

We have prepared videos demonstrating the new capabilities:
- a quick tour of the new IDE:

- libraries:

- GUI:

Install

Instructions to update your board are here. Please report any issue you may find during updating below.

Possible issues

Using #includes

Some Bela classes (such as OSC, Midi, Udp, and Scope) have now been turned into libraries. If your project used some of these Bela classes, you will get a warning when you are building your project. The warning encourages you to update your #include directive by adding libraries/LibraryName to the path.

For example, if you used:

#include <Scope.h>

you should now use:

#include <libraries/Scope/Scope.h>

Changes to libraries

The init() method of the UdpClient, UdpServer, WriteFile classes has been renamed to setup() for consistency with the other libraries.

Removed libraries

The OSCClient and OSCServer classes had long-standing problems, so we replaced them with OscSender and OscReceiver. See the examples Communication/OSC and Communication/OSC-Pipe to get a taste of how the new classes work.

Build errors

If you have an unusual build error (such as "missing symbol" or similar), re-build the project by adding AT= to the Make parameters in the Project Settings tab and send us the full log that is produced as a result. Include a copy of your project (which you can download as a zip archive with the dedicated icon in the Project Explorer).

Conclusion

Thanks to all those that have participated in the beta testing of the software over the past months.

Giulio

6 days later

For those who updated: I just pushed a fix to get some of the command-line options to work again, as they broke at some point.

IDE : unable to open project...
there seems to be a new issue , with the latest update.

because my projects are a little more complex (as I write crossplatform code, compiled with cmake blah blah), I don't keep my projects in ~/Bela/projects

what I do is have something like
~/projects/MEC/mec-api/*
~/projects/MEC/mec-bela

then what I do is I do
ln -s /root/bela/projects/MEC/mec-bela ~/Bela/projects

this has been working really nicely... but its suddenly stopped working today when I updated.
if I try to open the project is simply says unable to open project ๐Ÿ™
I'm guessing its not traversing links anymore ๐Ÿ™

unfortunately, its really not practical for me to stick all my bela projects in ~/Bela/Projects
not only due to all the libs I build, but also because I categorise my bela projects into subdirectories, which the IDE project menu does not support ๐Ÿ™

    thanks...

    also I've noticed the 'IDE settings' are not appearing in the Microsoft EDGE browser - not a big deal I can switch to chrome which is fine - perhaps edge its not on your 'supported browser list' ?

    giuliomoro Like, they are not appearing at all? What version on what OS?

    yeah, IDE settings are not shown at all on Windows 10 / Microsoft edge browser (so the 'new' default browser)

      thetechnobear IDE : unable to open project...
      there seems to be a new issue , with the latest update.

      because my projects are a little more complex (as I write crossplatform code, compiled with cmake blah blah), I don't keep my projects in ~/Bela/projects

      Fixed here. I am curious as to why/how it used to work before.

      thetechnobear yeah, IDE settings are not shown at all on Windows 10 / Microsoft edge browser (so the 'new' default browser)

      Ok, I tried this with the new Chromium-based Edge Beta for Mac, and it works all fine. Can you confirm if you can see the "Use Analog" and "Use Digital" and "Disable LED" controls?

      thank you - the fix works a treat can now open all my projects again ๐Ÿ™‚

      nope, use analog/digital missing - its seems to be all the toggles are missing.

        7 days later

        Just a quick note to thank all those at Bela HQ for all your hard work on this.

        I must admit Iโ€™d didnโ€™t really see a need for the UI side, given Belaโ€™s embedded nature - but Iโ€™m actually enjoying it and finding it useful, and itโ€™s easy to use.
        Top job, thanks for opening up new opportunities.

        Iโ€™ve got sidetracked on something else, but hope to have something to share soon.

        17 days later

        thetechnobear I seem to remember you had asked about folder hierarchies in projects, maybe a very long time ago. While creating/moving files within subfolders is still not easy through the IDE, you can view and edit them. Now I have a branch where you can even compile files in subfolders as part of a C++ project. Maybe this will become useful to you, as you seem to have fairly complex project structures.

          4 days later

          giuliomoro I have a branch where you can even compile files in subfolders as part of a C++ project. Maybe this will become useful to you, as you seem to have fairly complex project structures.

          hmm, that might be interesting to use....

          yeah, my projects are not that complicated... the main thing is that I modularise my software into different libraries.
          so bela patches tend to be using a number of different libraries.... and whilst I could copy these (binaries/headers) into the bela projects this is very inconvenient when doing development.

          what Ive done to date is something like :

          checkout all my GitHub projects into a project directory
          ~/projects/BelaPatches
          ~/projects/SoundplaneLib/

          then hard link the specific bela projects into bela
          e.g.
          ~/Bela/projects/soundplane -> ~/projects/BelaPatches/salt/c++/soundplane

          the only 'pain' in this is it mean my bela project file needs to link to something like
          ~/projects/SoundplaneLib/build/release/lib

          so what Ive recently been doing a hard link into Bela
          e.g.
          ~/Bela/external/soundplanelib -> projects/SoundplaneLib/build/release/lib

          so I can link using ../external/soundplanelib , which is a little more neutral.

          I dont really want to have these as a subdirectories for a couple of reasons
          a) there are lots of file
          b) they need a makefile to compile, they cannot just be compiled in

          what I was hoping is that "Libraries" would be a bit more self contained...
          in particular, would use a makefile to compile if they were present...and to allow libs to be linked, rather than directly compile C++ files.

          that said, Im sure I can make it work... just need to alter my makefiles to perhaps 'release' to the Library directory.

          at the end of the day its just a different way of working... partly because my code is cross-platform, its not just for bela - so I cannot 'conform' to doing it solely the 'bela way'

            thetechnobear what I was hoping is that "Libraries" would be a bit more self contained...
            in particular, would use a makefile to compile if they were present...and to allow libs to be linked, rather than directly compile C++ files.

            If I understand correctly, most of these things are (or should be) possible. Linking system shared libraries to a shared library is done by specifying LDFLAGS and LDLIBS in the metadata file, see e.g.: this. In fact, you can have a Bela library which is just a convenience wrapper for a shared library, e.g.: this.

            But maybe I am misunderstanding there.

              3 months later

              Tried to update from the command line. Didn't replace core files. Deleted core files ran again. No files added. Tried to run command line update with the clean option, deleted Bela directory and installation script died. Now trying to figure out how to add Bela back.

              EDIT: just flashed the card with the latest image. back in action.

                giuliomoro
                no weird messages.
                can't reproduce as I'm reflashed the card (it was a 2018 image though).

                3 months later

                Hi,

                I'm writing a library for creating NodeTree based audio applications with Bela, with integrated open sound control handling and preset manegement..I would like to share it when slightly more mature....

                What is the status on user added libraries ?