Some questions about using Zynthian kit v.4.2 without Zynthian OS

Hello,

I would like to use my Zynthian to take over functionality of more elements in my current setup.

I’m currently using Zynthian only for running a Pure Data MIDI chord detection patch, and as a two-track audio recorder. Next to this I am using one Atari ST running “M”, a generative MIDI music composition program, and another ST on an FPGA running MIDI Cubase to edit performances and synth patches of my hardware synths. I’m also using a windows laptop running Max MSP to translate MIDI and simulate a lightshow, and to edit recorded audio, and lastly a Bomebox for more MIDI translations that Pure Data could easily take over.

I can do all of these things on the Raspberry Pi making the hardware side much more simple, using Hatari, the Atari emulator, and Reaper for MIDI and audio recording/editing. Also I can replace the Max MSP tasks and Bomebox with the RBPI running more complex Pure Data patches, which I would ideally edit and see directly on the computer itself, using a keyboard and mouse and either using the Zynscreen or a small 7" HDMI monitor I have.

So my main question is: being someone with zero experience using Raspberry Pi’s , is there anything specific I would need to know to get all the hardware of the Zynthian kit 4.2 working on regular Raspbian? And if so, are there some resources that could help me in this process of getting everything working? I already found some for the Hifiberry, so that shouldn’t be a problem, but curious about the rest of the components.

Any advice would be greatly appreciated!

Thanks!

Hi @Jacco

My first question would be, what parts of Zynthian kit would you want to be using and why? The reason to ask the question is because you may find that there are other, more suitable hardware for your workflow or that even if you use parts from the kit, their use may be one that is already supported by Raspbian. For example, your described workflow does not seem to require the rotary encoders.

1 Like

Hi @riban

I think the zynscreen and the encoders would not be essential to this workflow, while the rest (MIDI in and out, hifiberry, hdmi ports) would be. Though if it is not difficult to set up, I could definitely find a use case for them. For example I might use an external hdmi monitor while working in the studio at home, but it might not be needed for live performances, and I could still show some essential information on the zynscreen. The encoders could in this case also come in handy, just to cycle through Pure Data subpatches that are displayed on the screen for example, or to have them permanently connected to input volume control for audio recording, with the zynscreen only functioning as VU meter, or to show CPU useage during live performances. The touch functionality of the screen could also be useful to operate some additional parameters, though actual basic editing in a stripped down version of Reaper might require a higher resolution display, I would still be curious to see if it’s possible using the zynscreen and a touch screen pen if setting this up would be a straightforward process.

Thanks!

The rotary encoders are interfaced using some bespoke software in Zynthian. It would require some low-level computing skills to reuse this for other purposes and frankly it would be better to start from scratch, maybe using some of the code. (Zyncoder is acknowledged by us all to be a bit of a mess and requires significant refactoring.)

The screen is supported by a DTB which may be available in the standard Raspberry Pi OS distribution or could be borrowed from Zynthian OS. This effectively configures the driver for the screen. You would need to figure out what you want displayed on it and how you integrated it as part of the Raspberry Pi OS desktop, e.g. as a second / third screen. Zynthian OS configures the small screen as a framebuffer then starts an instance of X Windowing System targeted at it.

HDMI output works out of the box for Raspberry Pi OS.

HifiBerry is of course supported by Raspberry Pi OS. (The clue is in the name.) Support is available from the supplier.

MIDI input / output can be implemented with alternative breakout boards or via USB. You might want to consider using a combined USB audio and MIDI interface. Just ensure it Class Compliant.

I doubt you will be able to cherry pick software functionality from Zynthian. It is a rather monolithic implementation.

If you already have a Zynthian kit that you wish to re-purpose then you can make use of some of the parts with a little Linux knowledge (or web search skills :wink:) but if you don’t then you will probably benefit from using alternative supplies, especially as the individual parts are currently in short supply and may prove challenging to obtain from the Zynthian Shop.

1 Like

Thanks for all this info! Great to hear that most of the process should be pretty straightforward. Very helpful indeed to know that using the encoders might proof to be more challenging than the other parts. I already have the kit, which is why it made sense for me to repurpose these parts. I also will connect a Faderfox EC4 via usb, so I think I can do without the encoders for now. This offers two additional MIDI ins and outs as well.

I also really like the robust case and the way it offers passive cooling. I find the integrated MIDI aspect of the RBPI quite interesting as well, as this isn’t possible on any other computer except the old Atari ST’s or FPGA versions of these. I love how with the current design and elements even with an added screen, the zynthian is a super compact and robust (and totally silent) portable music computer, ideal for use on stage.

One question regarding the on board MIDI i/o of the kit: is this detected by the raspberry pi as a separate audio interface, or is it actualy a breakout board? And in the case of it being a breakout board, will it just show up in Reaper’s midi devices, or do I need to install some drivers to get it working?

Hi @Jacco !

Perhaps you could use ZynthianOS and try to disable the zynthian services and any other specific service that you don’t need/want:

systemctl disable zynthian
systemctl stop zynthian
systemctl disable zynthian-webconf
systemctl stop zynthian-webconf
systemctl disable splash-screen

ZynthianOS is Raspbian, and the old problems for updating packages/kernel have been recently solved (testing and the current staging-2109), so you can use apt-get install/update as you want.

In such a way, everything would be working, including Jackd and the hardware MIDI ports.

Regarding the encoders, @riban is right when he sets the library code is a mess, but it works fine and it’s not so hard to use. Depending what you want to do, perhaps it could fit your needs. If not, you can implement your own library. Reading encoders is not rocket science :wink:

Take a look to the little test/example included in the zyncoder’s repo:

Enjoy!

1 Like

Sorry, I keep forgetting this is only rock ‘n’ roll (but I like it)!

Hi @jofemodo

Thanks for the info! I gave this a try right now and it seems that it worked, the Zynthian display turned black and my external display shows a terminal mentioning all connections and services starting OK, though I was wondering, how do I boot into the regular desktop mode of raspbian from here? Total beginner question I know! :grimacing:

Hi, @Jacco

As is, your kit is:

  • just a regular RBPI4, so it should boot on a RasberryPi OS SD card and Hdmi-0 video output, USB keyboard and mouse, internal sound output should work by default.
  • with some kind of specific hardware extensions/hat wich won’t work out of the box. Compare file /etc/config.txt (this is place where some special hardware features are controlled/activated at boot time) of your actual zynthian running system from the one you get on a basic RaspberryPi Os install (for MIDI, I2S protocol + Hifiberry for sound + I2C for rotary encoders)
  • wich runs a dedicated software architecture based on RaspberyPi OS

It’s a bit unclear for me: do you want to have Zynthian software stack running and also be able to control your PureData patches with their own UI displayed on an external screen ?

1 Like

Hi @le51 ,

Ah good to know! Thanks!

I initially wanted to start with a clean install of Raspbian, and just make the most out of the hardware of the Zynthian kit, after installing Pure Data, Reaper and Hatari (Atari ST emulator). As Reaper and Hatari can’t work within the Zynthian OS ( I assume) it seemed to make more sense to go this route. @jofemodo recommended me to stick with the current Zynthian image, as all hardware is configured already, so it would save a lot of trial and error from my side as a total beginner working with RBPI. I would like to be able to use the zynscreen and zyncoders, but they are not essential as I’ll mainly use an external hdmi display for everything.

I found the config.txt! So copying these specifications for MIDI and audio, to the config.txt that comes with a clean install of Raspberry Pi OS should be enough to make it work in a program like Reaper for example? That is easier than I expected!

It looks like Reaper can run on a RBPI 4: Cockos Incorporated Forums - View Single Post - Raspberry Pi 4, 8gb

It should totaly be doable to make it run on Zynthian then :wink:

… make its graphical output go to HDMI …

Yes, more ore or less.

  • Zynthian and stock RaspberryPi OS aren’t on the same kernel version, so this can create some regressions that needs to be fixed. Feel free to ask question here for any help
  • Zyncoder library is Zynthian specific I guess. You will have to find your way to make it speak to reaper.
  • You will have to install jack sound server (that’s easy :laughing:)

OK I have a clean install of Raspbian OS running, and so far I have the hifiberry working in Reaper and Pure Data, and USB MIDI interfaces are being detected. I changed the config.txt file using the terminal. When checking in Alsamixer everything shows up except the internal MIDI. Under which name should this be showing up in the available devices?

MIDI is implemented by abusing the serial port. A software module called ttyMIDI is used which implants something fairly close to MIDI. You need to run ttyMIDI to present the physical MIDI ports to the OS

Ahh I see, thanks! I found ttymidi and first compiled librasound2, then compiled ttymidi. I found the instructions here: https://github.com/cjbarnes18/ttymidi and I can’t seem to get past “ttymidi -s /dev/ttyS0 -b 2400”. Upon entering this into the terminal nothing happens, it just jumps down to an empty line below, after which adding the additional instructions also nothing happens. When listing the MIDI inputs via “aconnect -1” I do see “client 14 : 'Midi Through [type=kernel]” but not sure if this is what I am looking for. When testing the MIDI input with a keyboard connected in PD, it actually closes the program when I enter a note from the midi keyboard.

Before trying ttymidi I also tried this: MIDI In Over UART on Raspberry Pi - YouTube
I may have wrongly assumed this would work, while it’s actually messing with ttymidi?

I noticed that the lacking of visual feedback in the terminal was not a bad sign, as ttymidi now shows up when I check the ins and outs via the terminal. I’m still not seeing any midi signal coming in though when connecting a keyboard. There also seem to be some problems with compiling the ttymidi program. After writing “ttymidi -s /dev/ttyUSB0 -v” it tells me there is no such directory. I’ve made sure the terminal opened from the root, and I’ve checked via the browser if the file is actually present in the “dev” folder. “ttyS0” is present but “ttyUSB0” is not. Does this mean something went wrong when compiling ttyMIDI?

No. This means your /boot/config.txt is not configured in the right way. You should have something like this:

# Enable UART for MIDI
enable_uart=1
# Swap back the ttyAMA0 to GPIO
dtoverlay=miniuart-bt
# Adjust UART clock for MIDI Baudrate (31250)
dtoverlay=midi-uart0

Enjoy!

Thanks! I’ve checked the /boot/config.txt file and all these configurations were as you mentioned them so it might be something else causing the issue.

If you want the serial MIDI port working, this is not right:

ttymidi -s /dev/ttyUSB0 -v

You should be using:

ttymidi -s /dev/ttyAMA0 -v

Regards,