Superseded: Bees-in-the-Trees 3.z: the post-antepenultimate v3 release candidate


Updated documentation for Bees-in-the-Trees is now available. Note that I erred in previously calling it Bees-in-Trees. More testers are wanted. Have a look at the installation and de-installation section on the project page, and if you are still game, send me a PM and I’ll send you a link to a compiled WAV firmware file for it. The intention is to make compiled firmware files in WAV format readily available, but only after some more brave souls have tried it out a bit more and thoroughly kicked its tyres. Your name (or pseudonym) will be mentioned in dispatches if you volunteer to test it (um, at your own risk).


again, everything ok with this new firmware
meta sequencer is pretty cool, a lot of fun with
and thank you Tim for the mention on the documentation, just testing some nice new stuff :wink:


@BB, the clicking going into the Zero oscillator model just adds character :-). BTW, Braids can now be an awesome standalone drum machine with an (up to) 8 step pattern with just a trigger input!


Hi guys,
A bump here to say that bees-in-the-trees firmware is great and working very well so far! :slight_smile:
So please guys don’t hesitate to give it a try, just PM Bennelong and you will get the WAV file…
He needs more beta testers so jump in :wink:
It seems a bit complicated at first but really fast and logic to learn, just think to put the GAIN to 0 if you want to use ENV and/or LFO on the vca… You can do soft/harsh crossed modulation on many parameters without even patching cv, but then you can still add external cv…
You really can bring nice life and movements to new parameters, and then you have the meta step sequencer…So Go Go Go…


@BennelongBicyclist sorry for the off-topic question but… what’s the Eva cup-thing on the left in your firmware demo? is it a mug? (sorry I’m a huge evangelion fan lol)


Just reporting a successful install and to say thanks to BennelongBicyclist for his great work on this. I haven’t really scratched the surface yet but everything works well that I’ve tried.

When I was installing I got ‘@SYN’ on the very last packet but it didn’t brick it, I was able to just repeat the process and it worked fine


@sixty_n I believe that error can be caused by the level of the incoming audio being too hot. I had that on a few occasions, and it never caused the unit to fail.


Yes, it’s a mug (see mug shots attached) which a friend bought for me on a recent visit to Japan. My eldest son and I watched Evangelion over and over when he was about the same age as Shinji Ikari. In fact, he even looked just like Shinji at the time.

Fly me to the moon…


@stevenb thanks, that’s good to know. In fact now you mention it I think it happened when I upgraded to 1.7 but the guy next door was drilling and I blamed him for it


@sixty_n, LOL! I think that there are inconsistencies in the audio levels between some of the different wav files.


As Olivier notes, you need to turn off all other sources of sound when uploading the Wav files. I routinely forget this, and then a Facebook notification always seem to arrive when it is up to about data packet 98. Just try again and it should work.


@BennelongBicyclist ty! gotta find one now hehe


OK, I have pushed Bees-in-the-Trees version 3y to my GitHub repository, and have sent links to the compiled WAV file for it to the eight or nine people who are currently helping to test it.

In version 3y, I have removed VCO jitter (JITR) as a destination for the internal modulators. It wasn’t really very useful, and caused too much pitch shift. However, JITR is still settable via the menu, and can still be cranked right up. It is also still voltage-controllable. Bit-crushing (BITS) is now once again voltage controllable too. And sample rate reduction (SRAT) has been re-instated, both as a menu setting and as a voltage-controlled parameter. Pairs and all three of of JITR, BITS and SRAT can also be voltage-controlled simultaneously via FMCV settings called DIRT, FLTH, UGLY and one other which has slipped my mind. There are also now adjustable clock/trigger dividers on the two internal modulator phase reset settings (M1SY and M2SY). Thus if M1SY=9, then the phase of modulator 1 will only be reset every 9th trigger input. And GAIN has been renamed LEVL for the sake of consistency, and the parameters for each step of the meta-sequencer have been renamed WAV1…8 and LEN1…8. Unfortunately there was insufficient room for the code required to add a third level parameter (LEV1…8) for each step. If I can find a few hundred bytes of code size savings, I’ll add that. The CV dial displays remains - the saving in space by removing it was too small to justify its loss.

The project page has been updated to reflect all these changes.


Another quick update: I have added a short-cut between menu mode and oscillator model selection mode in Bees-in-the-Trees version 3y. If you are in menu mode, then a long-click (holding down the encoder for more than half a second) will take you directly back to oscillator selection mode. In oscillator selection mode, a long-click will drop you back to menu mode at the menu choice which you were on when you last used the long-click short-cut. This makes it easy to switch back-and-forward between oscillator model selection and settings adjustments, without losing your place in the (unavoidably too long) menu structure each time. Note that this long-click short-cut doesn’t work when actually editing a setting value (edit mode), only when you are in menu mode. Because a long-click when the version number is displayed in menu mode also resets all stored settings in both Braids v1.7 and Bees-in-the Trees (including the calibration data), I have added an extra guard against inadvertent resets in Bees-in-the-Trees version 3y. This guard is explained in detail on the Bees-in-the-Trees project page, but basically you need to do a long-click on the version display twice to cause a settings reset - once to arm the reset function, and then a second time to actually make it happen.

At this stage I am going to spend a bit of time looking for potential space savings in the code, but no more features are planned for the version 3 series of Bees-in-the-Trees. Critiques and suggestions for improvement of the code are most welcome from experienced C++ programmers. I’m not a programmer by profession, although like most research scientists, I spend a lot of time writing program code, although usually not C++ code. Input from proper software engineers is thus very welcome. All the code is on GitHub - just use the HEAD of the master branch, which will contain the latest working version (I tend not to push incomplete work-in-progress branches to GitHub).

Thus, there will be a final version 3 series release for testing in about a week or so, with only code clean-ups and bug fixes, but no new features. If testers give that the thumbs up, then I’ll make Bees-in-the-Trees firmware freely available in compiled WAV file format by the end of February 2015. All the source code for it is already (and continuously) available, of course, on GitHub.

If you’d like to test Bees-in-the-Trees prior to its wider release, please read the warnings and instructions in the installation and de-installation section on the project page, and if you are still game, contact me by PM on this forum and I’ll send you links to compiled WAV files.


Re. saving space:

What about getting rid of, debug_pin.h,, uart_logger.h - as well as all references to them, eg. void DebugMon_Handler(void) { }, etc.?


@Sneak_Thief, good suggestions! I’ve already removed a few things like the method in the UI class for printing values in hex to the LED display, but I’ll comment out those others as well.


Optimize wisely…

make -f braids/makefile disassemble

And inspect build/braids/braids.top_symbols


Unfortunately, commenting out all calls to those files and removing them saves exactly 4 bytes. Probably because the compiler and/or linker was already optimising them away, since the functions defined in them were never being called. Oh well…


@pichenettes, thanks! Yes, DebugMon_Handler() is actually needed…


hi everyone,
just a little teaser of the META SEQ mode,
this module is getting even better than it was,
thanks to BennelongBicyclist