probonopd / MiniDexed

Dexed FM synthesizer similar to 8x DX7 (TX816/TX802) running on a bare metal Raspberry Pi (without a Linux kernel or operating system)
https://github.com/probonopd/MiniDexed/wiki
1.07k stars 78 forks source link

Very early initial support for RPi 5 based on dev branch of circle. #638

Closed diyelectromusic closed 5 months ago

diyelectromusic commented 5 months ago

Initial support for RPI 5 based on develop branch of circle.

This is very experimental. Not to be merged at this time!

Known not to work:

I've seen it working with PCM5102 I2S sound, HD44780 (non I2C) display, HDMI console output, rotary encoder, USB keyboard. It probably works with PWM sound output if you have the additional PWM filter hardware on GPIO pins 12/13...

Update: Looks like I2C SSD1306 is fine, so I'd guess I2C HD44780 ought to work too. Update: Serial MIDI now working fine.

Everything else: I've no idea :)

Note: to get this running needs the latest boot files from Raspberry Pi (see the circle documentation), an updated config.txt (part of this commit) and the new kernel_2712.img file built when RPI=5.

I've not done anything with the automated build process, but if someone wants to fight with the build.yml file, feel free!

Otherwise to build you'll need to ensure you are building the develop branches of circle-stdlib and circle itself (see the submod.sh file).

Apart from that, well, it seems to work :)

By the way, I don't think we say this enough... Rene is amazing for his circle environment that is doing all the heavy lifting here :)

Also, on that point, now we've upgraded to a more recent circle, we need to be testing the builds for RPi 1,2,3,4 too before accepting this change!

Kevin

IMG_7785

rsta2 commented 5 months ago

Thank you, Kevin! The serial device defaults to the UART JST socket on the RPi 5. You have to append an additional parameter 0 here to direct it to GPIO14/15. This will work with all RPi models.

diyelectromusic commented 5 months ago

Thank you, Kevin! The serial device defaults to the UART JST socket on the RPi 5. You have to append an additional parameter 0 here to direct it to GPIO14/15. This will work with all RPi models.

Ah great - I'll take a look later this evening :) I've not really dug into it at all yet - I only built the thing!!

Kevin

diyelectromusic commented 5 months ago

If anyone is able to test this for side-effects of the circle upgrade on a RPi 1,2,3,4 then the build is here: MiniDexed_2024-04-16-96294ed

Note: This does NOT include the RPi 5 version yet. That requires an update to the automated build setup on Github.

Kevin

diyelectromusic commented 5 months ago

Ok, so this build works on the following for me:

Showing mixture of HD77480 and I2C SSD1306 screens, rotary encoder, buttons, PCM5102 I2S DAC, and serial and USB MIDI.

So I'd say the basic build seems pretty ok to me at the moment.

Kevin

probonopd commented 5 months ago

Note: This does NOT include the RPi 5 version yet. That requires an update to the automated build setup on Github.

Let's see if we can change that :)

Build for testing: MiniDexed_2024-04-16-a031f41

@rsta2: https://github.com/rsta2/circle?tab=readme-ov-file#building should probably be updated.

rsta2 commented 5 months ago

@rsta2: https://github.com/rsta2/circle?tab=readme-ov-file#building should probably be updated.

@probonopd You have to look into the AArch64 section. Historically the Building section is for AArch32 builds only, and the RPi 5 does not support AArch32. I think, this is expressed in the comments at the beginning of the Building section.

Banana71 commented 5 months ago

With my Raspberry Pi 4 (SSD1306, GY-PCM5102, classic MIDI Input) everything seems to be fine. πŸ‘

Banana71 commented 5 months ago

Raspberry Pi 2 (without Display, GY-PCM5102, classic MIDI Input, PerformanceSelect over MIDI, ChunkSize=128) looks good too.

diyelectromusic commented 5 months ago

Latest build now tested on:

With various combinations of HD77480 or ssd1306 display, rotary encoder, PCM5102 I2S DAC and GPIO buttons.

I think we can probably merge this in with a note on the main page that RPi 5 support is present but experimental and doesn't support HDMI sound or USB Gadget mode. What does everyone think?

Then I might revisit the polyphony/TG situation - I see no reason it shouldn't be 32 note/16 TG by default on a Pi 5... anyone?

Kevin

Banana71 commented 5 months ago

I see no reasons against a merge 😎