Skip to content

[WIP] Part 1-3 + Part Drum + Layer 1 performance loading#950

Closed
soyersoyer wants to merge 6 commits intoprobonopd:mainfrom
soyersoyer:part2demo
Closed

[WIP] Part 1-3 + Part Drum + Layer 1 performance loading#950
soyersoyer wants to merge 6 commits intoprobonopd:mainfrom
soyersoyer:part2demo

Conversation

@soyersoyer
Copy link
Contributor

@soyersoyer soyersoyer commented Jul 8, 2025

Demo:
Very basic part performance load implementation.
Performance > Part 1 loads the performance into to TG 1-8.
Performance > Part 2 loads the performance into to TG 9-16 and adds 3 to each TG channel.
Performance > Part 3 loads the performance into to TG 17-24 and adds 7 to each TG channel.
Performance > Part Drum loads the performance into to TG 25-32 and adds 8 to each TG channel.
Performance > Layer 1 loads the performance into to TG 33-40.

This is just a test of how it sounds this way.
Every part has a reverb.

ToneGenerators=40 should be added to the minidexed.ini so you need rpi4 or rpi5.
It starts the Pi with fast mode, so it is possible that you will need a heatsink.

@github-actions
Copy link

github-actions bot commented Jul 8, 2025

Build for testing:
MiniDexed_1204_2025-07-08-d77a0e2_32bit
MiniDexed_1204_2025-07-08-d77a0e2_64bit
Use at your own risk.

@soyersoyer
Copy link
Contributor Author

soyersoyer commented Jul 8, 2025

Should we have a separate TG reverb (or per TG group reverb)?

@soyersoyer soyersoyer changed the title Part 2 performance loading [WIP] Part 2 performance loading Jul 11, 2025
@github-actions
Copy link

Build for testing:
MiniDexed_1217_2025-07-11-e9c811a_32bit
MiniDexed_1217_2025-07-11-e9c811a_64bit
Use at your own risk.

@probonopd
Copy link
Owner

Thanks @soyersoyer. So if I understand this correctly, this one is about loading 2 performances with 8 voices each.
Why not use 1 performance with 16 voices? Isn't the whole point of the concept of performances to have everything configured in one place?

@soyersoyer
Copy link
Contributor Author

This could be good if you don't know in advance how you want to combine the 8TG performances and you don't have multiple Minidexeds. For example, you could load a piano into Part1, drums into Part2, (bass into Part3, if there will be one)
But the separate reverbs still need to be resolved.

@soyersoyer soyersoyer changed the title [WIP] Part 2 performance loading [WIP] Part 2 + Part 3 performance loading Jul 28, 2025
@soyersoyer
Copy link
Contributor Author

soyersoyer commented Jul 28, 2025

I also added part 3. With fast=true it works without crackling on rpi4. It's fun with a 4 channel sequencer and with a drum machine :)

I tried part4 also (32TGs), but some weighty performance caused crackling.

There is sometimes crackling with 24TGs as well.

@github-actions
Copy link

Build for testing:
MiniDexed_1265_2025-07-28-6231dac_32bit
MiniDexed_1265_2025-07-28-6231dac_64bit
Use at your own risk.

@github-actions
Copy link

Build for testing:
MiniDexed_1266_2025-07-28-b5ac3b2_32bit
MiniDexed_1266_2025-07-28-b5ac3b2_64bit
Use at your own risk.

@github-actions
Copy link

Build for testing:
MiniDexed_1267_2025-07-28-82e4204_32bit
MiniDexed_1267_2025-07-28-82e4204_64bit
Use at your own risk.

@github-actions
Copy link

Build for testing:
MiniDexed_1268_2025-07-29-62751a4_32bit
MiniDexed_1268_2025-07-29-62751a4_64bit
Use at your own risk.

@soyersoyer soyersoyer changed the title [WIP] Part 2 + Part 3 performance loading [WIP] Part 2 + Part 3 + Part 4 performance loading Jul 29, 2025
@github-actions
Copy link

Build for testing:
MiniDexed_1272_2025-07-29-53730db_32bit
MiniDexed_1272_2025-07-29-53730db_64bit
Use at your own risk.

@soyersoyer
Copy link
Contributor Author

soyersoyer commented Jul 29, 2025

After I added fast=true to the top of the cmdline.txt (not after the comments), the frequency changed to 1500 MHz.
So Part 4 works, even with CPU intensive performances. CPU load is 50-60%, temperature is 57-58 C on RPi4 with an alu enclousre.

Now it always starts in fast mode (otherwise it wouldn't work)

@github-actions
Copy link

Build for testing:
MiniDexed_1274_2025-07-29-48e64bc_32bit
MiniDexed_1274_2025-07-29-48e64bc_64bit
Use at your own risk.

the addreverb function scales and adds the reverb to the out array, thus skipping the intermediate buffer
Demo:
Very basic part performance load implementation.
Performance > Part 1 loads the performance into to TG 1-8 and adds 0 to each TG channel.
Performance > Part 2 loads the performance into to TG 9-16 and adds 3 to each TG channel.
Performance > Part 3 loads the performance into to TG 17-24 and adds 7 to each TG channel.
Performance > Part Drum loads the performance into to TG 25-32 and adds 8 to each TG channel.
Performance > Layer 1 loads the performance into to TG 33-40 and adds 0 to each TG channel.

This is just a test of how it sounds this way.
Every part has a reverb.

ToneGenerators=40 should be added to the minidexed.ini so you need rpi4 or rpi5.
It starts the Pi with fasts mode, so it is possible that you will need a heatsink.
@soyersoyer soyersoyer changed the title [WIP] Part 2 + Part 3 + Part 4 performance loading [WIP] Part 1-3 + Pard Drum + Layer 1 performance loading Aug 8, 2025
@soyersoyer
Copy link
Contributor Author

soyersoyer commented Aug 8, 2025

I changed Part4 to drum channel (9) and added another layer to Part1 (and 8 new TGs).
Layering pianos is magical!

@github-actions
Copy link

github-actions bot commented Aug 8, 2025

Build for testing:
MiniDexed_1297_2025-08-08-db1584e_32bit
MiniDexed_1297_2025-08-08-db1584e_64bit
Use at your own risk.

@soyersoyer soyersoyer changed the title [WIP] Part 1-3 + Pard Drum + Layer 1 performance loading [WIP] Part 1-3 + Part Drum + Layer 1 performance loading Aug 8, 2025
@Banana71
Copy link

Banana71 commented Aug 8, 2025

MiniDexed_1297_2025-08-08-db1584e_64bit

My Raspberry Pi 4 won't boot. Config.txt doesn't have any modifications. Do I need to adjust anything?

Peter

@soyersoyer
Copy link
Contributor Author

You need to set ToneGenerators=40 in the minidexed.ini

@probonopd
Copy link
Owner

probonopd commented Aug 8, 2025

FYI: I am currently working on a graphical performance editor, a port of MiniDexed to Linux (including an embedded OS for Raspberry Pi), Windows, macOS, FreeBSD, and VSTs. These are all meant to have interchangeable performances. Hence I am unlikely to change the performance format anytime soon.

@soyersoyer
Copy link
Contributor Author

This does not change the performance file, it just loads the parts into the TGs.

The performance file, however, will definitely change due to the fx chain later.

@Banana71
Copy link

Banana71 commented Aug 9, 2025

FYI: I am currently working on a graphical performance editor, a port of MiniDexed to Linux (including an embedded OS for Raspberry Pi), Windows, macOS, FreeBSD, and VSTs. These are all meant to have interchangeable performances. Hence I am unlikely to change the performance format anytime soon.

@probonopd
On the one hand, I'm happy to hear that, but on the other hand, you're blocking the further development of your own project, "MiniDexed." Especially now that @soyersoyer is giving this project new momentum. So, you don't want to take over developments like "Kompressor pro TG" or "Parts 1-xx"? You should clearly state your goals and limitations for this project yourself. Edit: The same applies, of course, to all developers ( @soyersoyer ) who should communicate their goals.

There's surely a solution (fork).

Don't get me wrong, but the editor shouldn't be the defining (limiting) element of such a project.

Peter

@soyersoyer
Copy link
Contributor Author

I would like to jam with MiniDexed in the easiest way possible.
I want to use the capabilities of my Keystep Pro, which is a 4 track sequencer (attempt with this PR).
It would be nice if this could be done without another synth, drum-machine and mixer. (compressor PR).
I also want to easily modify the sound parameters with Minilab 3 (attempt with Arturia mod, noiseless PR).
It would be nice to somehow link the TGs together so that they remain relative to each other after changing the detune/pan parameter for a MIDI channel, for example. (Unison mode related)
I would like some FX of course.
I want to play the piano on my KeyLab. (Arturia mod + this layering feature)
I want to improve the precision of the encoder. I don't usually use the encoder, but when I do, it's annoying.
I want to convert the overlay menu of the Arturia mod Minilab 3 to work with any MIDI controller with knobs/faders. (and thus it could be part of MiniDexed)

I think these features would fit in this repo, but I'm fine with them elsewhere too.

@Banana71
Copy link

@soyersoyer I'd love to use a lot of it right away and would be happy if it were implemented. :-)


I want to improve the precision of the encoder. I don't usually use the encoder, but when I do, it's annoying.

The KY-040 encoder works perfectly in my setup; every step on the encoder does what it's supposed to. I added the 10nF capacitors directly to the encoder ( CLK to ground and DT to ground ), and that's it.


Performance > Layer 1 loads the performance into to TG 33-40 and adds 0 to each TG channel.

I don't understand this funktion. "adds 0 to each TG channel" ???


I've given some thought to the audio path (mixer including effects). If you're interested, I'd be happy to talk to you about it.

Peter

@soyersoyer
Copy link
Contributor Author

I'd love to use a lot of it right away and would be happy if it were implemented. :-)

Me too! And if the existing ones were integrated as well.

The KY-040 encoder works perfectly in my setup; every step on the encoder does what it's supposed to. I added the 10nF capacitors directly to the encoder ( CLK to ground and DT to ground ), and that's it.

I think it could work fine without the capacitors also. The mt32-pi has a solution how to handle the gray-code.
So I'll try it.

I don't understand this funktion. "adds 0 to each TG channel" ???

It will load the performance onto the channel defined by the performance. (usually channel 1) I have rewritten it.

I've given some thought to the audio path (mixer including effects). If you're interested, I'd be happy to talk to you about it.

I also have some ideas.
Could you elaborate in a new discussion?

@Banana71
Copy link

Could you elaborate in a new discussion?

#981

@soyersoyer soyersoyer closed this Aug 12, 2025
@soyersoyer soyersoyer deleted the part2demo branch December 3, 2025 22:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants