was it the name of the interface changing at every reboot (like wlan0 changing to wlan1) or the IP address?
If it is the former, I don't know much about it, but having the same configuration in /etc/interfaces for both, should take care of that.
If it is the IP address, then it is up to your router to make sure it always assigns the same IP address to the board (or you can set the board to a fixed IP address, but this needs to be non-conflicting with the router).

The MIDI demo shows how to send out some control changes. They just happen to have the meaning of toggling a LED on that specific device, but there is no reason why you would need that device to run the example. You can use any device, but you'll need to send a different value in order to obtain some effect. Sure that may be confusing, so I'll replace it with a more common "note on/off".

The oscillator-bank example surely is missing documentation, though the inlined comments should be enough to get the grasp of it.

Not sure what is this output distortion you are referring to, maybe this thread ? Despite it is not clearly stated anywhere in our guidelines, I think it is reasonable to expect the user to provide detailed instructions to a minimal working example that can reproduce the issue, otherwise it may be very difficult (and time consuming) to help users. Also, it is not clear from that thread whether your issue was finally resolved or not.

The git issue has definitely been logged as such. The github tracker is the right place for posting issues (again, with a reasonably detailed set of instructions on how to reproduce them).
Feel free to create issues also for the lack of documentation above.

What sort of examples would you like to see? If you post them on the forum, then maybe the community can help with them, or we when we are done with fixing bugs.
I2C / serial are not really Bela-specific things, so did not put much effort into documenting them, as the internet is full of tutorials on how to get them running on a BeagleBone.

    Ok so this is starting to be quite an interesting discussion because I find myself agreeing with @ben_wizards here. While I think the BeagleBone offers pretty amazing functionality I think it does it in a way that is much harder to use than e.g. an Arduino. Linux is pretty complicated and hard to understand unless you've spent a lot of time learning it.

    This was basically the main motivation behind the IDE, to get as much of the confusing boilerplate out of the way and make things as straightforward as possible, without dumbing down the functionality. And I think we could go a lot further by developing our APIs and user interfaces for peripherals and abstracting away a lot of the obscure Linux and Xenomai complexities.

    And I think we're going in the right direction but there's a lot of work to do first! And other commitments to fulfil in the meantime.

    giuliomoro One boot-wlan8, reboot, wlan0, wlan1, so on.

    To recreate the distortion-create any complex signal, even bandlimited, output that to a scope.
    Hell, input a signal and loop it back to the output.

    Look at the signal.

    Massive over/undershooting.

    It's written (with screenshots )in my post.

    The comments for the oscillator bank were not enough, I didn't get it. Instead of a simple example, it's a complex thing with lots of moving parts and no clear comments as to what each part was doing or how use them.

    You write "2C / serial are not really Bela-specific things, so did not put much effort into documenting them, as the internet is full of tutorials on how to get them running on a BeagleBone." but apparently to use standard beaglebone functions you have to use something called an auxilliary function and your example of how to use one of those isn't something simple, it's a whole program that does something complicated that HAPPENS to use an aux program.

    One of many reasons things like the Pi and Arduino took off is because they provided a solid backbone of examples that people could build from instead of "see, there's this part here that you need, just reverse engineer what we did, despite minimal documentation and it'll be fine"

    I'd love to see things like...Simple examples. Basic functions to create a toolkit.

    The expectation that we should submit complaints to Github instead of here should be the default answer to any question, or you could recognize that people who buy a product want to ask questions in a forum dedicated to that product. I'd never used github before the Bela. I'm quite fond of it now, but it was 100% foreign to me the first time I used it. I imagine that lots of people, especially artists, who want to go past arduino and into some real power will have the same experiences as me.

    Regarding the wifi dongle, it may be worth having a look at this file on your board
    /etc/udev/rules.d/70-persistent-net.rules
    feel free to paste its content in a new thread if you want to seek help with that, I'll be happy to have a look, though given my limited knowledge of the topic, maybe a Debian/Arm/BeagleBone forum would be more appropriate?

    The example in 11-Extras/bucket-brigade-chorus is as simple as it gets for demonstrating AuxiliaryTasks : a loop runs in an Auxiliary Task to write to the I2C bus, while the audio code runs unaltered, though you are right it could use a better name and it deserves an entry in the wiki. Although I reckon the documentation on AuxiliaryTasks (available here or on your board) is probably enough.

    The issue tracker we ultimately look at and where we fix issues is the one on github. Now if a problem comes up in the forum which reveals an issue with the core code or IDE or documentation, I usually add an issue to GitHub as well, but I may occasionally fail to do so (maybe because I do not think it deserves it). If we fail to add them there, then users should feel free to add them in (possibly after a discussion on the forum). Again, we have to prioritize resources, so not everything that is on it will be closed immediately, but if it is not there, it is unlikely that we will ever fix it.
    Just a side note: despite the tracker shows 98 issues, most of those have been fixed in various dev branches and will shortly be merged into master. The issues that are ACTUALLY still open (if my filtering rules are right) are these 16

    Another side note is: users are welcome to contribute with code examples and even wiki pages. Wiki pages are editable by anyone with a GitHub account.

    I'd love to see things like...Simple examples. Basic functions to create a toolkit.

    That sounds good, exactly what we want. A more detailed list would help us get a better idea of your expectations are (maybe good for a separate thread?).

    11 days later

    LiamDonovan Any update on the i2c liberry? I realized that the Adafruit one is written in Python and I'm not sure how to integrate that into the Bela environment at all.

      I know there are ways of including python libraries in C/C++, but I'm not sure if it's doable in the Bela/BBB.

      I saw this Library and it'd pretty much cover everything one would need for getting Bela going as a fully functional module.

      @LiamDonovan Actually I am thinking that to write to the I2C device from a time-critical thread you may be able to simply the call to write() in I2c_Codec::writeRegister with rt_fprintf().

      Alternatively, the proper "Xenomai" way of communicating between rt and non-rt threads is rt_pipe. You would then need a "consumer" non-rt thread which reads from the pipe and writes to the I2C pseudo-file . Xenomai pipes allow bi-directional communication so you could use the same thread to read from I2C and send back.

      The catch in these cases is always that you have a finite amount of memory pre-allocated, but that would be the same catch for any other rt implementation. So it is important that the user a) does not write too much data at once (and if they do they should increase the buffer size beforehand) and, b) the user checks for the return value of writeRegister().

      I used pipes in the latest Midi https://github.com/BelaPlatform/Bela/blob/dev-midi/core/Midi.cpp but only in one-direction.

      thought rt_fprintfis probably less deterministic than using the queue (as the buffering is left to Xenomai), though it probably does not make a huge difference either way for most I2C applications.

      ben_wizards I'll get on it once I figure out how rt_pipes work. At the moment it occasionally causes mode switches so it would probably not be very useful in its current state.

      Ok I've got this working. You can get it by checking out the dev-i2c branch from the repo, then take a look at the 06-sensors/i2c_accelerometer example. A disclaimer: it is not yet well tested or documented.

      The important thing is to use i2c.request and i2c.write to read and write from the audio thread (i.e in render). In setup or on an auxiliary task you should instead use i2c.requestNow and i2c.writeNow.

      Suggestions / comments / testing are all welcome.

        LiamDonovan Great! I only have one problem-the I2C libraries for the common OLEDs are all either written for Arduinos or are written in Python. Any idea how I can get around that?

        Can you link to one of the Arduino ones you are looking into using?

        I'm using the adafruit library right now on an small Arduino project I'm doing for a client.

        https://github.com/adafruit/Adafruit_SSD1306

        It's very easy to use (with the Arduino) and the display is awesome-one or two of them would be PERFECT for a Bela based Eurorack module.

        2 months later

        ben_wizards I did have a go at porting the arduino library to Bela but I ended up needing to include the entire arduino codebase within the project just to get it to compile, and it was getting very messy so I abandoned the attempt. When I have a little more time I plan to try again, this time using the datasheet for the SSD1306 and Bela's I2C API. It should just be a case of following the instructions on the data sheet, but the instructions for this particular module are infuriatingly complicated and obscure.

          4 days later

          ben_wizards the one I could find seems to be a python library, did you find any C++ library?
          Going Python is a possible solution, but you would need some sort of inter-process communication (e.g.: sockets or pipes) to communicate between the Bela C++ program and the Python script.
          If you do not need to upgrade the display TOO often (e.g.: less than 5 Hz, I would say) , then you could also consider spawning a python process from the C++ code with a command line parameter to set your visualization, e.g.:
          system("python myscript clearDisplay"), but this is very inefficient as it needs to reload python and import all the libraries for each new command.

          2 months later

          Is there any update on this matter? I bought a display that uses the exact library as above, and am unable to figure out how to get it to work. It seems that it is much harder than I originally expected, especially since their website says "The libraries are written in C++ for Arduino but could easily be ported to any microcontroller by rewriting the low-level pin access functions."

          This is the display I am using:
          https://www.adafruit.com/product/2719

          And the 2 required libraries to use it:
          https://github.com/adafruit/Adafruit-GFX-Library
          https://github.com/adafruit/Adafruit_SSD1306

          Any help would be much appreciated.

          I tried to comment out all the things that were needed in order for these libraries to compile. So now they compile but obviously do not work.
          Anyhow looking at these two commits you will see what would need to be re-implemented (which I have not done and I do not plan to do in the near future):
          https://github.com/giuliomoro/Adafruit-GFX-Library/commit/452dc305f3ded58da66fdd1033d338c6d6e185c1
          https://github.com/giuliomoro/Adafruit_SSD1306/commit/fb63b38e06bed5af5b1f9195b70d4e29f9e07206

          Before going down this rabbit hole, though, I would encourage you to double check if there are any port of the libraries for the BeagleBone. Both projects have several hundred forks, I would be surprised if nothing is there already.

          Great, thanks. I'll give it a look.