Success Cases

I really like the builds that incorporate a Zynthian into keyboards :grinning:

Did you need to cut some extra holes in the back for extra ventilation?

Yes, of course becouse “he” is usually heat himself to 55-60 degree of celsius…

Great build, looks awesome!

Are the files available anywhere?

Thanks! I really put a lot of time and design iterations into it :slight_smile:

I’ll post the .stl and a BOM after I solve a couple of bugs in the design.

Amazing design, and thanks for the mentioning, glad my design could act as inspiration. Now I want to rebuild mine with your case :slight_smile:

1 Like

Hello everyone!
Here’s my attempt at making a portable synthesizer:


Specs:

  • SBC: Orange Pi PC+
  • Keyboard: M-Audio KeyRig 49(Scored for a few bucks :smiley: )
  • Power: Asus 10050mAh(Lasts quite a bit, did not measure it but in the range of 4-6 hours)
  • Screen: ili9341+XPT2046(No touch unfortunately, the allwinner H3 on the orange pi supports a single slave/spi bus)
  • Encoders: generic breakout boards from china interfaced through a stm32 sending commands over UART
  • Soundcard: Aliexpress speciality $1
  • Single 3.5mm jack output
  • Built-in wifi with external SMA antenna

Paint job is not great, I know, I’m not a painter myself :smiley:

Upcoming: Embedded stereo speakers with cabinets

8 Likes

Hi @xanderz congrats:

  • For the integration, it’s pretty nice even if you’re not a professional painter
  • For building Zynthian on an another chip.

But this bring me a lot of questions :

  • How is the experience with the H3 chip, isn’t it to weak for some synth engine ?
  • Did you interface to Zynthian the keyboard’s mod and pitch wheels ?
  • Since a couple of month they are no mcp23017 available in the JLCPCB assembly stock. While STM32 are available (in a bunch of variations)

It could be nice if you share hw design and software code.

Edit: don’t forget the :face_with_monocle:

This has been done a few times before. Did you use that previous work?

  • Yeah, the H3 can be a bit overwhelmed with some synths, for sure, but I am mainly using it as a sampler + effects, and it does a pretty nice job. That is, unless something updates on the screen in which case it starts getting into xruns. Pretty low latency, and is for sure enjoyable to play.
  • The mod and pitch wheels are connected internally to the m-audio so you would get a midi event for that. It worked out of the box, actually.
  • Beware of the stm32 that you can get from AliExpress nowadays because most of them are actually fakes, with peripherals that are full of bugs.
    I used a stm32 because that was what I had on hand at the moment. But you can use anything else. I wrote the code in CPP in Arduino so it should be pretty portable.

As for the hardware, I don’t really have a schematic for it, I just connected the pins on the go, but the code should be pretty explanatory.
I’ll yet have to check if the repo visibility is set to public.
Edit: Past silly me thought that I added the Arduino code to a github repo when I cleaned up the PC. Apparently not.
These are the branches that I’ve worked on:

1 Like

I actually modified the encoder library in order to be able to use the uart port. I serialized the data in 2 bytes + 2 bytes used for framing. I have my work done on a fork, somewhere :slight_smile:

Hey Zynthheads, here is my custom Zynthian in a Hammond 1590DD case.

Rear panel:

Gut shot:

Custom I/O boards (before installing encoders):

  • Raspberry Pi 4 4GB
  • Geekworm aluminum armor case (for heatsink)
  • Osoyoo 5" DSI 800x400 touchscreen
  • Audio Injector zero, mounted on I/O board
  • 2 x MCP23017 for encoders and buttons

I started this project about two years ago, primarily as an inexpensive, easy to use replacement for the setup of the keyboardist/singer in my band (his current Windows computer setup is very unreliable). Our guitarist helped fund it, and also wanted one of his own, so I’m building three. This is actually the second prototype. The first one was on PCBs I etched myself, and there were a few issues that caused me to redesign the PCBs and send them off for manufacturing this time, so I didn’t have to drill hundreds of holes again.

Anyway, thanks to everyone who has contributed to this project. I’m having a lot of fun playing with this, and it was a big hit with our keyboardist at our last rehearsal when I brought it for him to try out. He’s super excited to get his own!

8 Likes

Yep, that’s something that seems to take for ever.

What do you use the switches for?

I was planning on using most of them to switch between instruments/presets, but from what I’ve read recently, it sounds like switching may not be fast enough for live performances. I haven’t played around with snapshots enough yet to know if that will work, though.

I think it can run most of the instruments we’ll need at one time in separate layers with different midi channels, however, as long as there aren’t too many effects running, so I think our keyboardist will just be able to switch midi channels to change instruments.

  • ZS3 switches are quite fast: ~1s
  • Snapshot loading is slower, depending on the number and complexity of the “chains” (layers).

The current “zynthian paradigm” for live performance is “more or less” like that:

You should prepare a snapshot for the full show, or for every part of the show, if the show is complex/long enough. ZS3 (SubSnapShots) should be used for switching sounds in a song, or from song to song.

Both, snapshot loading and ZS3 switching can be controlled by Program Change MIDI messages:

  • Snapshot loading MUST be controlled from Master MIDI channel (16 by default), and program numbers are configured from the snapshots submenu.

  • ZS3 switching uses a MIDI learn mechanism. Easy easy.

Note that ZS3 behaviour depends of “mode”:

  • On “Omni” (Stage) mode, you “only” have 128 global subsnapshots available. When recalling a ZS3, the active channel (the one receiving all MIDI input) is changed accordingly.

  • On “Multi-timbral” mode, every chain (channel) has 128 subsnapshots available. When recalling a ZS3, every chain (layer) keeps receiving the MIDI messages on its channel.

Of course, this doesn’t cover all use-cases, so people has developed different approaches for their specific use-cases.

Regards,

2 Likes

I’ve been trying to implement this, and the ZS3’s keep turning off. Here’s my process

  1. Admin Screen- Enable ZS3
    [x] Program Change ZS3
  2. Load Snapshot
  3. From Control Screen of loaded SnapShot short press Snapshot to see ?? appear on MIDI-Learn
  4. Short press Snapshot button again to assign Program Change.
    Zynthian Extra Switch 3 Action in Wiring is set to Program Change 3 (MIDI Channel 16)
    Zynthian Extra Switch 4 Action in Wiring is set to Program Change 4 (MIDI Channel 16)
  5. Was able to set Program Change 3 to a Snapshot once, then every time after that when I get to step 4, nothing happens and under Admin menu I see that ZSR is unchecked (even though I’ve just selected it)
    [ ] Program Change ZS3

So now I have one Snapshot (and of course I didn’t pick one that I actually want) that I can’t update the Program Change for, and a second that I can’t seem to assign.

I know I’m doing something wrong, but I’m pretty sure I followed the Wiki exactly as written. I’ve tried setting the Subsnapshots with the Zynthian interface, through the Web interface, I’ve re-booted, not re-booted, checked for software updates. Nothing seems to make a difference.

Please let me know what I’m missing.

ZS2 status is saved/restored with snapshots. You should check the snapshot option after loading the snapshot.

Regards,

Thank you for that info. The Wiki makes it sound like I didn’t need to go in that order as step 0 was to enable the ZS3.

Once snapshots are loaded something is happening, but not what I want.

Is there a direct correlation between the order of the saved snapshot and the program change assignment of sub snapshots?

Here is my workflow:

  1. Remove all Layers
  2. Navigate to the Snapshot screen
  3. Load the snapshot I want (Saved Snapshot 64, which is an Audio Layer)
  4. Navigate to the Admin Screen
  5. [X] Program Change ZS3
  6. Return to the Control Screen of the loaded Snapshot
  7. Press Snapshot button once to enable MIDI-Learn
  8. Press Snapshot button again and see the following
    Waiting for Program Change…
    (on the bottom right corner I see the following Program 1 /0
  9. Press the corresponding button for MIDI Program Change 64 on MIDI Channel 16
  10. I see the screen return to the same snapshot and it is still in MIDI-Learn mode with ?? below controls
  11. Leave MIDI-Learn mode
  12. Depress button for Program Change 64
  13. Wait approximately 30 seconds for Snapshot 025 ThreeOnThree to load. Which is one of the ones that came preloaded with the Zynthian… and one I’ve never used. I moved it from Snapshot 003 to 025 so I could navigate through my own quicker.

The Wiki says I can bold press to see all stored ZS3’s, but I can’t figure out where. The PROG MIDI-Learn on shows the “Waiting for Program Change …” and I’ve done a bold press on all encoders to look for this list, but cannot locate it. I feel like it’s right at my fingertips, but I just can’t get to the correct screen to see what’s wrong.

Thank you again.

Channel 16 is, by default, the Master Channel. You shouldn’t be using it for ZS3 unless you have disabled the Master Channel from webconf.

What are you trying to do exactly? :wink:

1.) If you want to load a snapshot using program change, than you have to use Master Channel (chan 16 by default) and assign the program manually from snapshot menu. That’s all.
Please, note that zynthian’s program numbers start from 0. Some MIDI controllers start from 1, and this could cause some confusion.

2.) If you want to configure some subsnapshots (ZS3) inside your snapshot then you have to use the MIDI learn procedure, as described in the wiki.

Regards,

What I’m trying to do is the following:

Currently I’m using the Zynthian most frequently for audio effects on the electric bass.

I have 10 or 12 Audio-FX Snapshots saved.

I would like to be able to quickly switch between saved Snapshots. For example, most of the time I would use the Alembic Preamp, but would like to use a Program Change button to switch to a different effect like an Envelope Filter with compression.

The effects themselves work great.

I have followed the Wiki, but cannot get any of the ZS3’s to save or load regularly. I can get to the MID-Learn page, but whenever I select a Program Change button it just flashes and doesn’t seem to save my selection.

I tried the first time with everything pretty much set to defaults. Then I tried changing MIDI channels (which is how I ended up on 16 instead of “All Active”). Then I deleted all presets I’m haven’t been using to clean up the list. Nothing really seems to make a difference.

For the Program Change buttons, I’m using buttons 2, 3, and 4 from the extra buttons available from the All-n-One v2 module.

I’m sure it’s something I’m just missing… but I can’t figure out what I’m doing wrong. I guess I could video my workflow to see what I’m missing.

Thank you for your detailed explanation! I was hoping something like this might work, I just hadn’t gotten around to searching for the details of the proper way to set it up. (Too much fun playing with the instruments.) It sounds like I should be able to use the switches on my Zynthian to control the snapshots by assigning them to program change messages on channel 16, then.