github MMMZZZZ/Syntherrupter v4.0.0
Same thing only different

latest releases: v4.3.0-beta.4, v4.3.0-beta.3, v4.3.0-beta.2...
3 years ago

Installation

  • Tiva Flash utilities and drivers can be found in the repository under Tiva_Flash_Utilities
  • To update the Nextion firmware over USB you need at least firmware v2.0 and the Nextion Editor. On the Syntherrupter, go to Settings->USB FW Update. Connect the Syntherrupter to your PC. More infos about updating the Nextion firmware with the Nextion Editor can be found in their documentation, chapter 2.1 and chapter 4
  • If you have Nextion Editor v1.61.1 or higher you need to update your Tiva firmware to v3.1.0 or higher before you can update the Nextion firmware.

Notes

  • My scope completely failed at measuring the duty cycle of the output signals, so all I can tell you is that it looks as if the duty limiter works, but I couldn't truly measure it. Maybe some of you have a scope that feels like writing meaningful numbers on its screen. Let me know!
  • Since the amount of coils that can be controlled by the Syntherrupter has to be set at compile time I attached Tiva binaries for 1-6 coils.
  • Multiple Nextion/TJC displays are supported. Chose the firmware according to your model number. If the Nextion version doesn't work, try the TJC version; some displays are not marked correctly. More infos in this forum post.
  • If you flash the Tiva for the first time or increase the coil number always check ALL settings. You should check it after each update, too. Just in case...
  • Nextion firmware versions 3.0.1 or higher are not compatible with Tiva firmware lower than v3.0.1.
  • Nextion and Tiva firmware versions 3.1.0 or higher are not compatible with any previous versions.
  • Nextion and Tiva firmware versions 4.0.0 or higher are not compatible with any previous versions.

New "visible" features

  • Run modes in parallel. Instead of pressing the return button to leaving a mode (like MIDI Live), you can hold it, and the mode continues to run in background. You can enter another mode if you want, or modify the settings without stopping whatever you want to keep running. The currently active modes are displayed in the bottom right corner. Remember, you can immediately disable all outputs by simply pressing any inactive component (background, titles, descriptions, ...). No need to navigate through all active modes.

That's it? That's it. Despite the big version step to v4.x.x there're almost no visible changes. Don't be too disappointed, v4.0.0 made the changes necessary to allow a lot of cool and previously impossible new features.

New "invisible" features

Here're the big changes of this version!

  • One for all - instead of having an independant and custom code for generating the output signals inside of each mode, there's now a common core. Every mode can request to add (or remove) a tone. The core handles all of them, generates the output signal based on the list of active tones, and keeps an eye on the total duty, min offtime, max ontime. There's one instance of this core running for each output. A lot of the code comes from the previous MIDI Live mode, which already had many of the features needed. Nonetheless there have been a lot of changes and improvements (Over 3500 lines added, over 2000 lines removed, according to the git diff).
  • The separation of the signal generation and the different modes is what allows to run them in parallel. Luckily the handling of the commands from the touch display didn't require a lot of changes to keep modes active in background.
  • The GUI class, which interfaces with the touch display is no more the "main" class, containing all the code and running all the modes including their signal generation. This means that it'll be much easier to extend the code by other interfaces.
  • Many other things that were somehow mixed together are now properly separated in their own classes. This allowed for example to change the data structure for the currently active tones from an array to a doubly linked list without modifying anything outside of the ToneList class. Great, isn't it? Oh and this makes it harder to debug since you're permanently jumping though multiple souce files. As I said, great.
  • Better audio quality! Yes, the new code is more complex and probably less efficient than the old code, but a pretty simple change to the polyphonic signal generation actually improved the sound a lot in many cases. Try holding C5+E5+G5 on the old and the new code - you'll hear what I mean.
  • Exponential ADSR! ADSR is one of those things that was not bad but totally unflexible. So I rewrote it from scratch.
    • Any amount of data points possible
    • Out of pure curiosity: drop me a PM on highvoltageforum.net if you actually read this. Maybe there'll even be a little gift for you...
    • Constant, linear and exponential mode. Constant and linear are pretty self explanatory, exponential is the really interesting one! Each point of the ADSR curve has three values: amplitude, duration, n-tau. Duration expresses after how many microseconds the amplitude is reached. n-tau specifies the "steepness" of the exponential curve, by definind the number of time constants (usually called tau) that will be fitted inside the given duration. A very high positive value means that you quickly jump towards the target amplitude at the beginning, while a value of zero will cause a linear curve. You can even specify a negative value, which means that you get "the other" exponential curve. Instead of rising (falling) faster at the beginning and slower at the end it will rise faster at the end. Sounds interesting? Great! Because you can't do anything with this feature yet. It is very powerful (and efficient btw. the actual runtime ADSR calculation is as little as substract, multiply, add, done.), but writing a useful editor for the datapoints is rather hard. Especially with the limited capabilities of the touchscreen. For now the only thing you've got is all of the currently available ADSR curves (MIDI program 1-9) in an exponential form (MIDI program 11-19). At least something to play with. Sorry.
  • Did I forget something? Oh yeah, that little bug, you know, deadly for every coil with imporper OCD, is gone. Forever. Bye, won't miss you. (Probably got replaced by 10 others... - the joys of software development)

Minor changes

  • Sliders got a more differentiated rounding. BPS f.ex. goes now down to 1 BPS and has steps of 1 in the lower range, then steps of 5, 10, 50, 100, ...
  • Imagine you‘re currently editing MIDI channel 0 and want to edit channel 15 next. That‘s 15 (!) page reloads or in other words: a lot of clicks and waiting. Therefore you can now go back (forward) on channel 0 (15) and land on the page for channel 15 (0). Similarly you can go from coil settings page 1 (6) to the „previous“ („next) page of coil 6 (1). However you‘ll never ever guess what‘s the actual reason why I introduced this feature. NEVER!
  • Separated buffers for every MIDI command source. This will allow you to use multiple MIDI inputs at once. However, at the moment of writing this I realize that it does not work yet. Sh*t.

Previous big changes

v3.1.0 introduced a ton of new stuff. It's worth reading!

Live long and prosper

Don't miss a new Syntherrupter release

NewReleases is sending notifications on new releases.