The first big problem is: Two pulses can follow each other very shortly. 1 "tick" is not enough time to ensure primary current has ringed down to 0. That means you have a high risk of hard switching on the next ontime (UD1/UD2 drivers always switch at the beginning of an ontime to start the oscillation and only after that first kick start using ZCS. UD+ (which I have) is even "worse" as it has a startup oscillator switching at least twice). This becomes even more of a problem when low notes (allowing looong ontimes) are mixed with high notes. Therefore a minimum offtime needs to be ensured between notes. How? Well I implemented three different ways:
1. Skip. If the next ontime is too close to the current, skip it.
2. Delay. Wait until the minimum offtime is over before generating the pending ontime.
3. Merge. If a ontime shall be generated, "look ahead" if another one is too close. If yes, merge them, meaning generate a pulse with the sum of both widths. I thought this should be the best sounding option.
Thanks to Netzpfuschers explications I finally got some promising results for polyphony! As of now the interrupter is configured to play up to 4 notes on 4 independant outputs, making a total of 16 independant notes with ADSR.
It already sounds quite good, but there are still lots of problems to solve.
- I need to get the timers working as oneshot timers instead of PWM + ISR stopping the gimer after each pulse
- The code misses some notes; not exactly clear why.
- One midi file causes way too high ontimes, and prevents the interrupter from normal operation. Very strange... probably too many commands at the same time.
- Minor bugs...
I like the screw fibre optic transmitters and receivers, so thought about trying out these broadcom ones, not cheap, but not SUPER expensive either. Mouser does not sell the IF-D97 / IF-E97 anymore :(What a bummer. I haven't seen them anywhere else. Or at least not for <10$.
The Nextion Touch display can only be ordered from their site: https://www.itead.cc/nextion-nx8048t050.html (https://www.itead.cc/nextion-nx8048t050.html)
You can find them on ebay, however that are incompatible twins - always. They look the same but they're only meant for the chinese market and can't be easily programmed.
[...]
Edit 2: You could actually buy the 7inch model (65€) instead of the 5inch one (56€). Both have the exact same resolution, therefore no changes to the GUI are needed. Depends on whether you prefer bigger buttons and fonts or a more compact interrupter :)
Ok i checked, FL Studio does recognize the virtual port. So i just bought the components from the links you provided
Parameter Function | NRP Number (Coarse) | NRP Number (Fine) | Data Entry (Coarse) | Data Entry (Fine) |
Mode | 42 | 0 | X (don't care) | 0=Mapping off, 1=Mapping on, 2=Omni Mode |
Input range | 42 | 1 | Upper End (0-127) | Lower End (0-127) |
Output range | 42 | 2 | Upper End (0-127) | Lower End (0-127) |
Turned out niceAgreed! I like those 4 transmitters in a row.
@futurist
Are those four tx modules all going to be used or are they just for future expansion? I'd love to hear some of the stereo effects with more than two coils. If it sounds cool enough I might juststealcoincidentally have the same idea for my midi stick :P
*actually only futurist could do it AFAIK... ;D
I'll try new firmware asapGreat! Thank you.
I'm going on vacation ThursdaySince you're currently the only one who could have played with real tesla coils, I don't like this for sure. However I hope you'll enjoy it! ;)
Looking forward to get this put together :) I must say that the Omni-mode is what I have dreamt about for years, I am really looking forward to use that feature (and not so much that I now have to build 6 identical coils)Honestly it already works pretty well with only 4 coils. However, having played with those features myself, I have to build 6 identical tesla coils, too. One day... ;D Maybe smaller SSTCs. Then I could even build 12 coils 8) Oooh so many ideas, so little time...
I'll try new firmware asapGreat! Thank you.I'm going on vacation ThursdaySince you're currently the only one who could have played with real tesla coils, I don't like this for sure. However I hope you'll enjoy it! ;)
As I said I'm still getting used to UI but for now everything works nicely and it isn't difficult to set the exact values I wantHappy to hear that! :D
Finally! Guys i recommend you to buy the display from mouser or some other local store, i waited for almost 3 weeks for it to arrive, but it's finally here. It works like a charm. I need to find some nice enclosure for it. Thank you Max for sharing the project with us! :)
(https://scontent-dus1-1.xx.fbcdn.net/v/t1.15752-9/117014555_290451172053492_344595119118117971_n.jpg?_nc_cat=104&_nc_sid=b96e70&_nc_ohc=JuPrZz81rkIAX90Ixjo&_nc_ht=scontent-dus1-1.xx&oh=c1257bf70b0e5cda8545dd08d1e349b7&oe=5F516AD9)
The thing that never ever should occur has occured. AstRii found a critical bug in Simple Mode that causes WAY too long output pulses. It is almost the exact same issue I had with v1.0, and that I fixed after lots of work in v1.1. Although I'm sure it was gone, it's back for some reason. Probably since v2.0.
If you drastically reduce the BPS, e.g. from 1000Hz to 100Hz, the output can go high for a whole period, meaning for miliseconds (!). Since it is a hardware bug* none of the safety measures can prevent it.
Until I get it fixed, don't use Simple Mode. MIDI Live mode generates signals in a completely different way. Therefore it can't have this bug.
* Some timer registers don't synchronize the way they should. That causes glitches when making bigger jumps which happens if you sweep quickly though a frequency range. That's why it took me so much time the first time to "fix" it (rather mitigate it). I'll replace the whole stuff by the same code I use for the MIDI Notes. That's a complete overkill but at least it's been reliable so far.
I'm very sorry for this.
Max
Hey Mads,
Yes i quickly designed it in EasyEDA. My previous interrupter was a mess, and i actually even fried it because of it. So i wanted a clean build with minimum wires, hence a PCB was born :)
I added some extra headers to connect some switches for safety and LEDs for indication.
(https://scontent-dus1-1.xx.fbcdn.net/v/t1.15752-9/117304619_242809933367198_8254849614620986566_n.png?_nc_cat=102&_nc_sid=b96e70&_nc_ohc=Kj_tdTUqZ9wAX_SHZ9B&_nc_ht=scontent-dus1-1.xx&oh=e6d4b579500bd9333a8214f482bb69a4&oe=5F507CE4)
Ordered from JLCPCB, it had arrived in a few days :)
@Mads:
For <100mA a TO220 MOSFET seems like an overkill to me...? Or are they cheaper than standard TO92 BJTs? I somewhat doubt that since you’d need the logic level version of the MOSFETs.
I don‘t really get how the SW7-12 will be wired. Jumpers on the board...?
The buzzer header is connected via resistors to 3.3V. How/where do you connect the other end of the buzzers?
The ESPs were never intended for replacing the optical outputs. The idea was that you 3D-print yourself a nice Star Wars lightsaber, put a battery, IMU, ESP8266 in it and get the well known lightsaber sound from your tesla coil(s) when moving the lightsaber.
Here‘s a first „proof of concept“ video. Sound effect isn‘t great but that aside the new mode is already well integrated and works as expected. It is possible to connect up to 4 lightsabers to Syntherrutpter.
I just use the same foot print for TO-220 and TO-92, they got plenty long legs to fit that width and its also to give myself some more room since I etch the boards myself, so there is no reason to go for thin as possible for me :)Assumed something like that. The main reason for brining it up was that usually TO-92 pinout is CBE (SGD for MOSFET) instead of BCE/GDS for TO220.
The light saber idea is brilliant!Remember, it's not from me but from Netzpfuscher :) But I agree 100%. I thought the same thing when he showed me his prototype.
QuoteI just use the same foot print for TO-220 and TO-92, they got plenty long legs to fit that width and its also to give myself some more room since I etch the boards myself, so there is no reason to go for thin as possible for me :)Assumed something like that. The main reason for brining it up was that usually TO-92 pinout is CBE (SGD for MOSFET) instead of BCE/GDS for TO220.
Okay if the plugs make sense it's fine. I guess I'll have a better idea of it once you've build it.
Step | | Next Step | | Amplitude | | Duration [ms] | | n-tau |
1 | 2 | 1.0 | 500 | 2.0 |
2 | 3 | 0.0 | 200 | 2.0 |
3 | 2 | 1.0 | 100 | -2.0 |
8 | 8 | 0.0 | 100 | 2.0 |
Step | | Next Step | | Amplitude | | Duration [ms] | | n-tau |
1 | 2 | 2.0 | 15 | 2.0 |
2 | 3 | 1.0 | 100 | 2.0 |
3 | 3 | 0.0 | 8000 | 7.0 |
8 | 8 | 0.0 | 200 | 4.0 |
I‘m very curious to hear what you mean with „changing on-time didn‘t behave like [expected]“!It seems that spark length is not changing as linearly with on-time like on my old interrupter, but it could just be my personal view
Since you write you wanted to turn off the outputs - was that a reflex action or was it actually still generating an interrupt signal?The coil continued to buzz, I panicked a little after I saw that the interrupter has crashed. I don't know why UD+ UVLO didn't trigger. All LEDs turned on, a pity I didn't record it.. very strange
I guess you're using a SMPS for the UD+? At least my Meanwell SMPS is able to maintain it's output for a few seconds even with two relais and the UD+ drawing current.QuoteSince you write you wanted to turn off the outputs - was that a reflex action or was it actually still generating an interrupt signal?The coil continued to buzz, I panicked a little after I saw that the interrupter has crashed. I don't know why UD+ UVLO didn't trigger. All LEDs turned on, a pity I didn't record it.. very strange
I doubt it had anything to do with EMI, laptop and interrupter were far away and USB cable is short and shielded. Also I'm only using one output, so current shouldn't be a problem
Do you think I can set duty limiter to 15-20%?Probably yes. Here's what I'd suggest. Increase duty step by step (5 percentage point steps sounds reasonable) and keep an eye on the temperatures, maybe on the current consumption, too. As long as nothing gets too hot or fries something like the input rectifiers (or the fuses) it should be no problem to increase the duty.
Next time I'll test two coils at once, does someone have MIDI files for playing on two coils simultaneously?Well... I posted a Popcorn MIDI (click (https://highvoltageforum.net/index.php?topic=1020.msg8493#msg8493)) in this thread and a Thunderstruck MIDI (click again (https://highvoltageforum.net/index.php?topic=1020.msg8343#msg8343)). Both have multiple channels that are suited for playing on tesla coils. I'd suggest to play around with the channels; which go better together (same coil) and which are better separated (different coils). Additionally you can even play a single track on two coils using the stereo features. F.ex. you could assign the channels with the bass line to one tesla coil, fully using the low frequencies for some pulse skipping, and the melody on the other coil, producing intense, high BPS streamers.
I guess you're using a SMPS for the UD+? At least my Meanwell SMPS is able to maintain it's output for a few seconds even with two relais and the UD+ drawing current.LEDs on UD+ and precharge controller, really strange. It all happened in a few seconds in the dark, so I didn't catch every detail. Next time I'll setup camera to record the whole test
What LEDs do you mean? I can't see LEDs on your Syntherrutper so I guess you talk about those connected to the UD+? Which wouldn't be that surprising; although it's no real help either.
That's very strange indeed. Since it continued to buzz the Tiva microcontroller did obviously not crash* but then remains the question what happened.I think we have to pretend it didn't happen until I test the coils again, with oscilloscope and camera to catch any problems
A word about the error screen you saw. It is not part of my firmware. Its part of the Nextion bootloader, which runs my firmware. Usually you see a bootloader message only when there's no firmware, a corrupted firmware, or during a firmware update. But if the firmware has been compiled successfully and uploaded successfully, it shouldn't appear. Hence I've never seen that error, and I haven't found anything about it. I assumed that when the Tiva microcontroller crashed it sent a ton of gargabe to the Nextion, causing that one to crash, too. But since you say the microcontroller continued to operate, that makes not much sence anymore. Like the rest.
I'm curious what was max. duty cycle with my onetesla interrupter turned to 300us max. on-time. I think I'll hook it on the oscilloscope and measure, I wouldn't be surprised that it's around 20% for MIDIs like popcorn. SKM400 halfbridge was barely warm with onetesla interrupter on max., MMC is overkill for this coil and is always stone cold. I blew few 16A fuses with the final countdown song solo partDo you think I can set duty limiter to 15-20%?Probably yes. Here's what I'd suggest. Increase duty step by step (5 percentage point steps sounds reasonable) and keep an eye on the temperatures, maybe on the current consumption, too. As long as nothing gets too hot or fries something like the input rectifiers (or the fuses) it should be no problem to increase the duty.
I flashed the Tiva without any problems, drivers and all that, just worked out of the box, literally.Glad to hear that!
However, it turns out its the "intelligence" version of the display that I have. NX8048P070-011R to be specific. So I assume that I can not use the very specific model files in the release?That‘s unfortunately true. Edit: Originally I thought the follwoing wouldn’t be feasible. However a quick check showed that it can be done. You can modify the source file such that it works. Some components have an additional property on the Intelligent series displays that doesn’t get a correct value automatically. Since I never expected anyone to pay the completely unecessary premium for the intelligent series I couldn‘t be bothered to do this for every series by hand.
I also tried downloading the Nextion editor (v1.61.2) to just choose another model in the TFT file, but its not a project file and trying to run the TFT file in debug mode I just get this message "TFT file version is not supported" and another popup "invalid tft file".TFT files are like binaries, they‘ve been compiled for that specific target. You can run them (on real or virtual hardware) but you can‘t modify them.
8)Quote*Keeping my thread at the top* ;Dguess I can do the same :P So just a quick update:
Aaah shit. Sorry I was too late with my edit. Turns out it is possible because unlike i thought it‘s only one component type that needs to be modified. See my edit above. Still, I think you should get a Basic or Enhanced series screen if possible.
I‘ll investigate the TFT file issue tomorrow. Maybe its a problem because I‘m still on Nextion Editor v1.61.1.
Kind regards,
Max
b[sys0].pic1=b[sys0].pic
at the end of the last else if section: ...
}else if(sys1==1)
{
// Types that have pic, pic2:
// slider
b[sys0].pic=b[sys0].pic%Settings.picCount.val
b[sys0].pic+=sys2
b[sys0].pic2=b[sys0].pic2%Settings.picCount.val
b[sys0].pic2+=sys2
b[sys0].pic1=b[sys0].pic // <= NEW LINE
}
}
I could set up all settings, change users, browse around and overall its a very nice GUI you have made. Now I just need to test my optical PCB and it should be good to go for a first test.Wohoo!
I just tried adding in "b[sys0].pic1=b[sys0].pic" in the latest HMI project file from you with a NX4048K070 device selected, that does not generate any compile errors. Maybe you can just leave it inthere as dead code on the basic/enhanced models and to fix dark mode for the intelligent. Perhaps you could even just do the same for the slider pic1 ID reference? I got no basic display to test it on, if that illbehaves.The reason it doesn't give errors is because the array based addressing of components doesn't contain any checks whether that attribute even exists or not. However, during runtime it will generate an error message over serial (which you can see it in the debugger, too). The Tiva firmware ignores those errors, making it in theory possible to go for this "solution". However, I am by no means a fan of deliberately introducing errors into my firmware. And there are some reports that runtime error handling costs quite a bit of processing time on Nextion, so it might even slow down the page loading times (which wouldn't be noticeable in the debugger).
Its a terrible fix settings variables that does not exist, but then again its a terrible IDE/editor that doesn't even have search and replace :DYou don't even want to know what's necessary to get a decent UI on these things... ::) If you look through some of the code and it hurts your eyes, it's not because I'm an idiot (well, not always) but because there's no elegant way to do it. It's somewhat similar to Arduino. Very easy to start and get basic things done. Even some advanced stuff works right out of the box. But if you want something custom and/or more performant it gets messy. quickly. One significant difference though: with arduino you're not forced to use the Arduino Methods, you can use your own functions, access registers, etc. Here you can't.
@Mads: Urks - more bad news... Do you know by chance whether lvgl is a viable alternative?
Since I have currently no new features that I'm working on, I made a very small update that fixes a bug introduced with the last release. Details as always in the notes. https://github.com/MMMZZZZ/Syntherrupter/releases/tag/v4.1.0-beta.7
TBH I hadn't much time for extensive testing. So there may still be other MIDI bugs. Let me know if you find any!
Kind regards,
Max
@futurist:
Thank you very much for sharing! Couple good songs among those clips. And some really intense arcs as well. Did you push the limits or are these coils capable of even more?
What happened at 1:47 in this video??
What do you mean by „two channel MIDI“? Or in other words, what midi are you looking for?
MIDI is playing with different pitch until I restart midi to serial converter
if you have specific things you need tested, I will see if I can find a spot for that.Very kind offer but no, currently not. The bugfixes are already tested and the SysEx stuff isn‘t ready for a release yet. I do have a first implementation of a few commands and already a pretty complete documentation (https://github.com/MMMZZZZ/Syntherrupter/blob/7d1ee4d57b84ae300addaf5d879d3f986e833f3f/Documentation/Wiki/Custom%20MIDI%20Commands.md#syntherrupters-sysex-commands-version-1). However, it is currently not possible to control anything outside of MIDI Live mode - a limitation I want to get rid of before releasing a beta.
Input: Set ontime for coil 1 and mode simple to 100
Output: F0 00 26 05 01 7F 21 00 01 00 64 00 00 00 00 F7
Maybe a settings button underneath each coil activate button instead?The double outlined buttons are used in more places. For that reason it‘s explained on the Help and Info page. I thought about showing that one the first time Syntherrupter‘s started but never got to the implementation.
I would also wish for a "midi signal" status blinker on the live midi mode page, just for trouble shooting between pc, syntherrupter and output modules. It would also give some more life to the very static page, when playing MIDI, you got no idea if its playing or not :)I know the UI is very static. This is because the Nextion commands for controlling the UI from the Tiva sideare quite expensive (string based). With the buffered outputs and an optimized serial library I might get it to work. However, I‘d much prefer tossing out the Nextion protocol entirely and replacing it by something custom. Both cases require quite some work to do so it‘s not for anytime soon. Actually, getting live readouts was a feature I planned for Syntherrupter 2 only. We shall see…
I guess I can just contribute to the documentation on github? I think the PC MIDI setup chapter that you put out in the "front" readme, needs some more integration into the main documentation.Any contribution is more than welcome! :)
All channels activated for all coils as default, also had me confused, because that sounds very weird and wrong the first time you just try to play a midi. Maybe add new defaults that is just channel 1 to coil 1, 2 to 2 etc.?I had my 4 mini teslas play the same channels now a couple time; didn‘t sound weird and wrong to me…? Or did you just forward all channels to Syntherrupter? In a complex MIDI file this is likely way too much (and would explain your description). However, that‘s not a good idea to begin with. You should only pass the channels to Syntherrupter you want it to play. There‘s no point in loading it with additional channels that are „muted“. Even if they‘re not audible Syntherrupter needs to keep track of all the volume, pitchbend, envelopes, etc in case you activate the channel again.
Did I miss the "omni-mode" somewhere? I thought it could auto-assign midi channels according to active coils and also just randomly choose them? I might remember completely wrong.The stereo mapping features - which includes omni mode - is really the most hard to use feature of Syntherrupter*. First of all, omni mode only makes sense if you have stereo enabled. Quick recap: in stereo mode, every note has a position on the stereo scale. Every coil has a position, too, and it only plays the notes within its reach. Syntherrupter got a couple festures for making melodies move around across the stereo range (and thus across different coils) but you don’t always want that. Since every note has a precise position, you can’t really play it on multiple coils equally anymore. That’s where omni mode enters the game: if a MIDI channel is put into omni mode it doesn’t have a stereo position anymore but is „everywhere“ - thus can be played by all coils „normally“ again (as if no stereo stuff was enabled).
I will admit that the learning curve seems steep, especially with SysEx, envelopes and such, but I hope it will soon make more sense and the prepared midi files on PC for a certain coil setup can just be played and all settings for the coils, channel assignment and such is in the files.Syex might be a lot to begin with but when you‘re using Syfoh (and it‘s really the only practicable way to use sysex), it‘s basically just a command line interface for Syntherrupter - no more no less.
python Syfoh.py -m mid -p 1 -i "D:\Syntherrupter Setup for Final Countdown.txt"
### Syntherrupter Sysex commands for mini orchestra
### Final Countdown.
# Setup stuff
set ui-update to manual
set mode-enable for mode all to 0
set coil-buffer-time to 10000
# Coil settings and limits
set coil-max-duty for coil all to 0.2
set coil-min-offtime for coil all to 0
set coil-min-ontime for coil 1 to 40
set coil-min-ontime for coil 2 to 15
set coil-min-ontime for coil 3 to 35
set coil-min-ontime for coil 4 to 10
set coil-midi-voices for coil all to 16
set duty for mode midi-live and coil all to 0.03
set ontime for mode midi-live and coil 1 to 200
set ontime for mode midi-live and coil 2 to 300
set ontime for mode midi-live and coil 3 to 200
set ontime for mode midi-live and coil 4 to 200
set mode-enable for mode midi-live to 1
# Distribute 4 coils across the stereo range
set midi-pan-cfg for coil all to linear
set midi-pan-reach for coil all to 0.333
set midi-pan-pos for coil 1 to 0.0
set midi-pan-pos for coil 2 to 0.333
set midi-pan-pos for coil 3 to 0.667
set midi-pan-pos for coil 4 to 0.999
# Assign channels to outputs
set coil-channels for coil 1 to 0b00011000000
set coil-channels for coil 2 to 0b00010000001
set coil-channels for coil 3 to 0b00010000010
set coil-channels for coil 4 to 0b10010000000
After connecting it to Tiva however the screen remained dark.This sounds like you got the serial connections between the Tiva microcontroller and the Nextion display somehow wrong. The good news is that apparently you flashed everything correctly.
Checking the Tiva without the screen using the debug mode in the Nexion Editor, but only for v4.1.3 (editor 1.61.1). This worked!
QuoteMaybe a settings button underneath each coil activate button instead?The double outlined buttons are used in more places. For that reason it‘s explained on the Help and Info page. I thought about showing that one the first time Syntherrupter‘s started but never got to the implementation.
I could for sure add separate buttons in every case but it would make the UI quite a bit more complicated and probably much less clean (this is especially true for the Coil Settings page which is pretty well filled).QuoteI would also wish for a "midi signal" status blinker on the live midi mode page, just for trouble shooting between pc, syntherrupter and output modules. It would also give some more life to the very static page, when playing MIDI, you got no idea if its playing or not :)I know the UI is very static. This is because the Nextion commands for controlling the UI from the Tiva sideare quite expensive (string based). With the buffered outputs and an optimized serial library I might get it to work. However, I‘d much prefer tossing out the Nextion protocol entirely and replacing it by something custom. Both cases require quite some work to do so it‘s not for anytime soon. Actually, getting live readouts was a feature I planned for Syntherrupter 2 only. We shall see…
Til then I‘d suggest to just hook an LED (with resistor) between 3.3V and the serial line.
At this point I realize a little troubleshooting guide could be nice. Here‘s the thing with hairless MIDI Serial: there‘s only one case I‘ve ever seen where it doesn‘t work and that‘s when the serial port disappears for some amount of time or becomes unavailable (f.ex. disconnect and reconnect the cable) in that case it still shows it‘d send stuff but if you disable and reenable the serial bridge you‘ll see that it actually doesn‘t send anything to the port. You need to restart it.
Other than that you can be about 99.x% sure that if hairless midi serial shows it sent data to Syntherrupter, it did - and Syntherrupter actually received it.
Btw in hairless midi serial you can activate the logging window and see what midi commands are sent to the port. Can be handy.
QuoteI guess I can just contribute to the documentation on github? I think the PC MIDI setup chapter that you put out in the "front" readme, needs some more integration into the main documentation.Any contribution is more than welcome! :)
QuoteAll channels activated for all coils as default, also had me confused, because that sounds very weird and wrong the first time you just try to play a midi. Maybe add new defaults that is just channel 1 to coil 1, 2 to 2 etc.?I had my 4 mini teslas play the same channels now a couple time; didn‘t sound weird and wrong to me…? Or did you just forward all channels to Syntherrupter? In a complex MIDI file this is likely way too much (and would explain your description). However, that‘s not a good idea to begin with. You should only pass the channels to Syntherrupter you want it to play. There‘s no point in loading it with additional channels that are „muted“. Even if they‘re not audible Syntherrupter needs to keep track of all the volume, pitchbend, envelopes, etc in case you activate the channel again.
That aside I wanted to have a configuration that‘s guaranteed to work - for which I really can’t see an alternative. I‘d expect many more people to be confused if one channel works and another one doesn‘t (f.ex. chn 1 and 13).
QuoteDid I miss the "omni-mode" somewhere? I thought it could auto-assign midi channels according to active coils and also just randomly choose them? I might remember completely wrong.The stereo mapping features - which includes omni mode - is really the most hard to use feature of Syntherrupter*. First of all, omni mode only makes sense if you have stereo enabled. Quick recap: in stereo mode, every note has a position on the stereo scale. Every coil has a position, too, and it only plays the notes within its reach. Syntherrupter got a couple festures for making melodies move around across the stereo range (and thus across different coils) but you don’t always want that. Since every note has a precise position, you can’t really play it on multiple coils equally anymore. That’s where omni mode enters the game: if a MIDI channel is put into omni mode it doesn’t have a stereo position anymore but is „everywhere“ - thus can be played by all coils „normally“ again (as if no stereo stuff was enabled).
This probably sounded way more complicated than it is so let me try to do a tldr: omni mode disables stereo mapping for a given channel. That‘s it.
*that‘s because there‘s no easy to use UI or tool for it. You have to embed the raw commands into your MIDI file or send them to the MIDI port. With Synthfont it‘s actually not too hard to embed the commands but I understand that‘s a too steep lesrning curve for most people.
QuoteI will admit that the learning curve seems steep, especially with SysEx, envelopes and such, but I hope it will soon make more sense and the prepared midi files on PC for a certain coil setup can just be played and all settings for the coils, channel assignment and such is in the files.Syex might be a lot to begin with but when you‘re using Syfoh (and it‘s really the only practicable way to use sysex), it‘s basically just a command line interface for Syntherrupter - no more no less.
As for the envelopes I have to admit I really can‘t figure out what‘s so hard about using it. I‘m not talking about making your own envelopes or understanding how the envelopes themself work. I‘m just talking about the „high level“ concept of „you can change the instrument“ from „pizzicato strings“ to „piano“ or „electric guitarre“ or „slow strings“. The only confusing thing here is that syntherrupters instruments don’t match the instrument names in pretty much any MIDI player (syntherrupters piano sound f.ex. is MIDI program 10, called Music Box). Maybe someone can help me understand the issues better; I‘d really like to.
Don‘t mind about embedding the sysex commands into your midi file. I mean, yes, it could be done but the advantage over a simple text file that Syfoh sends to Syntherrupter is close to none - and much easier to use and modify at the same time.
Edit: as an example I attached such a sysex batch file which did the entire setup of Syntherrupter for playing my Final Countdown MIDI file (I just power on Syntherrupter; no interaction with the touchscreen is required). All it takes is one call of Syfoh.py and I'm ready to go. Ontimes, channel assignments, stereo positions - everything.
Windows command line for running Syfoh (sending all the data to MIDI port nr. 1 which happens to be loopmidi)Code: [Select]python Syfoh.py -m mid -p 1 -i "D:\Syntherrupter Setup for Final Countdown.txt"
Content of the text file:Code: [Select]### Syntherrupter Sysex commands for mini orchestra
### Final Countdown.
# Setup stuff
set ui-update to manual
set mode-enable for mode all to 0
set coil-buffer-time to 10000
# Coil settings and limits
set coil-max-duty for coil all to 0.2
set coil-min-offtime for coil all to 0
set coil-min-ontime for coil 1 to 40
set coil-min-ontime for coil 2 to 15
set coil-min-ontime for coil 3 to 35
set coil-min-ontime for coil 4 to 10
set coil-midi-voices for coil all to 16
set duty for mode midi-live and coil all to 0.03
set ontime for mode midi-live and coil 1 to 200
set ontime for mode midi-live and coil 2 to 300
set ontime for mode midi-live and coil 3 to 200
set ontime for mode midi-live and coil 4 to 200
set mode-enable for mode midi-live to 1
# Distribute 4 coils across the stereo range
set midi-pan-cfg for coil all to linear
set midi-pan-reach for coil all to 0.333
set midi-pan-pos for coil 1 to 0.0
set midi-pan-pos for coil 2 to 0.333
set midi-pan-pos for coil 3 to 0.667
set midi-pan-pos for coil 4 to 0.999
# Assign channels to outputs
set coil-channels for coil 1 to 0b00011000000
set coil-channels for coil 2 to 0b00010000001
set coil-channels for coil 3 to 0b00010000010
set coil-channels for coil 4 to 0b10010000000
Kind regards,
Max
Sorry to hear that. What happened to your coil?
Bummer about your show and coils exploding, any graphic pictures to show in your DRSSTC thread?The short answer: I don‘t know. The long answer - well… is long enough for its own thread. I do have video material of the crash but haven‘t had the time to put it into a half decent video. Btw I don‘t have a thead for my tesla coil in this forum yet? I plan to make one because there have been some really confusing things where I‘d like to get some input. But again, no time for such a post in the next weeks.
Its a complex software you have put up and even with the good wiki, we are not inside your head :)This is so true. I try to find a balance between the length of my posts and the amount of details I share. There are dozens of such thoughts behind pretty much every feature and compromise and while I‘d like to share every single one with y‘all I think this would be simply too much. The wiki f.ex. is already much more text than most users will ever read… I‘m not even sure people are reading the release notes. Therefore I try to stick to the „what“-surface and leave out the „why“-rabbit holes.
I tried my first github contribution, which also explains why you were after me for not writing a comment. I was not quite aware if it was submitted without pull request? This is my first time using github, so bare with me. I wanted to try something simple before editing large parts of the wiki.You did most things right. The fork, the pull request - both fine afaik. My only issue was that your commit was titled with the default description „Update Readme.md“ which doesn’t give any hint about what actually happened.
I do not have a video of this: deselect all channels for coil 1, select channel 1, press next, deselect all channels for coil 2, select channel 2, press next. Do this for all 6 coils. At the 6th coil, pressing next showed me coil 1, but with channel 16 selected as the only. Pressing next now showed coils 2 with 15, 3 with 14 and so on. Getting to the 6th coil and pressing next showed me channel 1 for coil 1. IS there really 12 pages or 6 pages? I can not see any difference, but the number of configured channels... :-[Hah - I had the same issue recently. Then, before the latest release I tried to reproduce it and failed to do so (not sure why). So I did not follow it any further. What I can tell you is that there are only 6 coils, not 12. It is a bug that‘s only in the Nextion firmware, in the save/loading code of the button states (every time the page (re)loads or exits the button states are loaded from/saved to a variable. And apparently I‘m not loading/storing the bits in the same order). This means that the first time you configure the channels everything works as expected. However, when you come back to the same page (and leave it again) the now wrongly displayed channels will be sent to the tiva microcontroller. Of course you can fix this by hand every time you open the page if you like to.
Your syfoh sysex examples are great! From looking at the sysex documention, you should really add these examples, again it looks rather complex from all the formatting and explanation of the sysex package. Which confused me a bit before finding the tiny link to syfoh, that should be the first link in bold right after sysex headline :)Noted. Will change that for the next release. (Unless you‘re faster ;) )
to my greatest annoyance the latest release (v4.2.0-beta.5) has at least one crucial (and new) bug. [...] I have sort of a suspicion where the bug in the latest release comes from. If that suspicion is true, it‘ll be an easy fix. Otherwise it‘s going to be another long day.As so often the truth was somewhere inbetween. It's been a rather long day finding the bug and verifying everything but in the end it was almost what I thought and nothing really complicated.
Hi everyone,
We have been using the Synterrupter for the past months in our student club with our 3 Tesla Coils and I first want to thank you deeply for your amazing work !
I wanted to share a tool that I have been working on last month in order to help us during our Tesla Coil shows: a web Midi Player specificaly designed for operating the Synterrupter.
Indeed, we wanted to have a centralized platform to host our MIDI/configs and were not confident in embedding binary SYSEX commands directly in the files. Futhermore, most of the available MIDI players/editors were overly complicated for our usages (we just want to play MIDI/playlist smoothly and to perform automatic configuration of the Synterrupter for each song.) Finally, in order to have this setup work on any person device, we wanted to have as less setup required as possible.
So I came up with the idea of developping a web app tailor made for our specific MIDI/syntherrupter needs (we host an instance for our club behind an auth provider).
I detailed the features and embedded some screenshots in this public github repository: https://github.com/antoinercbs/tesla-synth-web-player
A release is obviously available on this github if you want to test it ;)
If some of you are interested in this tool, my goal is to make it as available as possible for the community ;) (I think it's the bare minimum given all the open-source ressources developped by the community we used...)
Tanks again for your amazing work !
We also do not use envelopes yet.It would make quite a difference IMO. Especially in the Cantina Band video I think it would have helped.