github MMMZZZZ/Syntherrupter v3.1.0
Stereo, Effects, MIDI In, Usability, ...

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

Invalid binaries

The Nextion binaries originally published with this release were compiled incorrectly. Please refer to release v3.1.1 for the fixed binaries.

New "visible" functions

There's quite a lot that happened since the last release, hence this pretty long list. But trust me I'm an engineer it's worth reading!

  • Support for direct MIDI In. If you have a keyboard with MIDI out, you can now connect it directly (using an optocoupler!) to pin PC4 of the Tiva microcontroller. Note that you can't use USB MIDI and "direct" MIDI at the same time; the data would be scrambled together.
  • Stereo functions. Now this is a rather big set of new functions. Let me try to put them in a meaningful order
    • Support for the MIDI command "pan". It indicates the stereo position of a channel (0: left, 64: center, 128: right).
    • Assign a stereo position to each coil, and a "listening range" - both on the same 0-127 left-right scale. If the distance between the coil and the channel position is within the listening range, the coil will play the note.
    • You can change between two "listening modes": const. or linear. In linear mode, the volume of the notes decreases within the coils listening range. If channel and coil are at the exact same place, the volume is 100% of what the note should be. Moving away from the coil, the volume decreases down to zero at the edge of the range. In constant mode a note within range plays at 100%, a note outside of the range won't play at all. This is useful if you have many coils (I'd say 4 or more) and want that notes always play on only a single coil, rather than playing at a fraction of the volume on two or more coils.
    • This is all pretty nice, however many MIDI files don't use the pan command that much. Most channels are placed once at the beginning and that's it. No more movement. In this case you could simply assign each MIDI channel to a different coil and that's it. But what if you want movement? Here comes stereo note mapping: You can tell the Syntherrupter that it maps the notes according to their frequency to a certain stereo position. F.ex. low notes to the left, high notes to the right. This is a very powerful feature that allows a lot of visual effects.
    • Sometimes you do not want to play a channel at a certain stereo position, f.ex. if you want to play it equally on all coils. In this case you can set the channel to "Omni mode" (not to be confused with the MIDI omni thing - this is Syntherrupte omni and not related!). It specifies that this channel has no stereo position; meaning each coil will play it the same way, independent what its range or position is.
    • You can disable "stereo" for each coil. This coil will then play all the channels assigned to it, no matter "where" the channel is located. Might be useful if you have a couple similar coils in a row (perfect for stereo effects!) and another, different coil sitting "aside" that shouldn't be part of the stereo effects.
    • All of this allows pretty much any stereo effects you can imagine. You are now completely free what notes are played where. While some of this is in theory possible without NRPs, using only the MIDI pan command, it would require heavy MIDI editing (f.ex. adding a pan command for every single note). Video demos, documentation of the commands and how-to can be found here.
  • Added a NRP and MIDI "editor". Holding on a channel button opens a page that allows you to send any MIDI command and modify any NRP. Why? To use the stereo note mapping described above, you need to modify "non-registered parameters" for some MIDI channels. Of course you could add the commands to the MIDI file you're playing, but this is rather annoying if you want to quickly try different settings. The integrated NRP editor is way more practical.

New "invisible" stuff

It might not be visible in the GUI, but it's there, and it makes a difference!

  • Support for MIDI registered parameters, which are used by some MIDI files to modify the pitch bend range. If you have a file that does this, you can't really play it with the previous versions; it sounds horrible!
  • Support for MIDI expressions. Same thing as volume, but often used for nuances.
  • Support for MIDI SysEx and Realtime commands. Especially the realtime commands could have caused random hanging or missing notes in previous releases.
  • Support for MIDI running status. This feature aims to reduce the number of bytes necessary to send repetitive commands. It's used by some keyboards, which would make them completely incompatible with previous versions.
  • Rewrote the way output signals are generated. This allows much cleaner (fast) pitch bending. Additionally I removed a lot of unnecessary (re)processing which - surprise - dramatically improved the overall sound quality. No more noise with high number of outputs, pretty much no voice limit anymore (currently fixed at a max. of 16 per coil).
  • Reduced the maximum modulation depth from 100% to 50%. This seems to fit better the "expectations" of MIDI files, because I found some with high modulation values that didn't sound right.
  • Nextion released a new version of their Editor (previous version: 1.60.2, new version: 1.61.1), which adds a confirmation box to the firmware upload feature. This breaks the "end of update" detection in previous releases, making an update almost impossible (you'd have to confirm the dialog in ~0.5 seconds). This version fixes that problem. The fix is backwards compatible, meaning you do not have to upgrade your Nextion Editor if you don't want.
  • Increased output current for the interrupter signal pins from 2 to 12mA.

Small changes and better usability

Things you'll find out anyways, or not notice at all.

  • The MIDI program numbers for ADSR have been shifted by 1. Program zero, and any value higher than the number of ADSR curves, disables ADSR. See the start page / readme of this repository for the current list of ADSR parameters. Oh and btw. some of them have been tweaked a little bit. Not much though.
  • I decided to make NRPs "persistent", meaning they are not affected by the usual "reset" commands sent at the beginning or end of a MIDI file. Therefore you now have a "NRP Reset" button which does exactly what's written on it.
  • The slider "velocity" was not optimal across different ranges. Lower range too slow, middle and upper range too fast. So I rewrote the math from scratch and it works now much better IMHO. That wasn't exactly a small change for me, but you probably won't really notice it.
  • You can now define a voice limit for each coil under Settings->Coil Limits. Assuming you have a coil that can operate at 10% duty and one that can operate at 20%. It makes sense that the first one can't play as much notes as the second one without exceeding the duty limit, right? In that case its probably better to limit the number of voices instead of having too much - and no reasonable output (because the duty limiter reduces the ontimes).
  • "Backgrounds turns outputs off" is a useful safety feature - as long as there's enough visible background. Adding more and more features, there's not a lot of background left. Therefore all "inactive" components like texts will disable the outputs, too. If for some reason you always hit the wrong spot and shut your outputs down, you can disable this feature in "Settings->Other Settings". However it will be enabled again when you turn the Syntherrupter off and back on.
  • To switch between the MIDI settings of Coil 1 and Coil 2, you hat to go back to the MIDI Live page, and hold the button of the other coil. This doesn't take a lot of time, but it's still annoying. Therefore you now have a "previous" and a "next" button that brings you directly from Coil 1 to Coil 2. Very convenient, believe me! Of course you can do the same thing on the new MIDI channel settings page (see "NRP/MIDI Editor" above).
  • Remembering which button you have to hold or not to access "hidden" pages behind them is not obvious - especially if you're using the Syntherrupter for the first time. Therefore all buttons that can be pressed and hold now have a double outer line.
  • Controlling up to 6 coils is not hard. Keeping track of 6 different ontime and duty settings on the other side is challenging. Therefore the currently active ontime, duty (and in simple mode: BPS) values are written below each coil button.
  • Displaying the Tiva and Nextion firmware version at startup.
  • Minor fixes and improvements not worth the time mentionning them here.

Changes since the last beta release

  • The MIDI In feature has been fixed; didn't work in any of the beta releases.
  • Minor fix to the NRP/MIDI editor page.

Live long and prosper

Don't miss a new Syntherrupter release

NewReleases is sending notifications on new releases.