EP-MK1 possible new plugin


#1

I came across this in Linux Format https://patchstorage.com/ep-mk1/ A “real-time physical model of an Electric Piano”. It sounds computationally expensive, but it might be worth a punt on Zynthian.


#2

Hi @Baggypants

many thanks for sharing! It sound absolute wonderful!!!

Unfortunately it is only a VST plugin. For Zynthian we need a LV2 plugin or a version with jack support besides the source code or a binary for ARM.

I take a closer look at the project, maybe there is a way to port it to ARM/RPi…

Regards, Holger


#3

Ahhh, it’s a PD application… I think I can get it running as LV2 plugin on a Raspi… give me a day :wink:


#4

Ok, it might even be possible to build an LV2 plugin for the RPi from the EP-MK1. Here’s what I found out:

1 The base of the EP-MK1 is a Pure-Data “script”.
2. This is good, because there is a way to convert PD to LV2.
3. It’s a bit tricky to get a reasonable result, but I tried it once and the following ZIP could be installed to $ZYNTHIAN_PLUGINS_DIR/lv2 and (hopefully) started on MOD-UI or via jalv.

ep-mk1.lv2.zip (510.7 KB)

All of this is currently totally unclean and not properly tested… maybe I can do it even better.


#5

But Zynthian can execute PD patches, so we could use the PD file and define the controller map. It doesn’t seem too complex …

Regards,


#6

Right, I totally missed this… But I am also searching for a way to get native C++/C code from PD to get it also run on a Teensy :wink:


#7

Hello @Baggypants, @C0d3man and @jofemodo,

I like the creative outcome very much when a little idea like the ep-mk1 is feeded into two masterminds’ brains for the benefit of all.
Thanks @Baggypants for pointing @jofemodo and @C0d3man to this.

Greetings and God bless, Marius


#8

Hmmm, it’s really not as easy as I thought.

Normally yes, but you would have to give the EP-MK1.pd the “appropriate” connections first. I’ve never used PD before and have no plan how to do it. If you just import the file, nothing happens.

You have a similar problem with LV2: I get it translated, there are inputs and outputs, but the other suitable connections (especially MIDI-IN) are only available if you install them manually in PD.

Does anyone here know more about PD than I do (probably almost everyone :slight_smile: )? What pdlv2 needs can be found here: https://github.com/x37v/pdlv2

Regards, Holger

P.S.: The build process is scripted in zynthian-recipe at recipe/pdlv2.sh (must be started before) and recipe/ep-mk1.sh


#9

I’ve been tested and can’t make to work the EO-MK1.pd file in zynthian. In my laptop it works pretty fine but it doesn’t work in zynthian, although everything looks fine:

  • Jack Audio working and PD output connected to system output port
  • MIDI configured and connected.

And the patch runs without error messages in PD. I can see the blinking MIDI “virtual LED” in the EP-MK1 GUI and i can modify the parameter values from zynthian.

Anyway, i’ve created an incomplete “zynconfig.yml” file for the instrument and modify the PD file for adding more “ctlin” objects with some scale calculaion (logarithmic, range, etc.).

Both files are attached here:

EP-MK1.pd (412.2 KB)
zynconfig.yml (568 Bytes)

It should work by simply creating a new folder:

zynthian/zynthian-my-data/presets/puredata/synths/EP-MK1

and copying both files there … but it doesn’t work, i don’t know why! Perhaps it’s the PD version…

BTW: Before experimenting with all this, update your zynthian software! There is an important fix related with PureData <=> MIDI connection …

Kind Regards!


#10

Hi @jofemodo

I have deinstalled the pd-packages of Raspian and installed pd-0.49 from source:

./configure --prefix /usr --enable-jack 
make install

After that I can start EP-MK1 but the new cpu usage indicator shows that very much cpu time is consumed. Playing some keys generates (buffer-underrun-)noise :disappointed_relieved:

Other (preinstalled) PD-patches are working…

Regards, Holger


#11

Ohhhh! Perhaps we could use hvcc for generating optimized C/C++ code?

Regards,


#12

I have tried this also some days ago but was not succesfull. But I havn’t checked deeply, if I made something wrong.

My last idea: pdlv2, but for this you have to prepare the pd-patch as mentioned in the README.md

Regards, Holger


#13

This will not improve the performance, as it uses pdlib, an embedded version of pd.
If we really want to use EP-MK1, we have these options:

  • Compile to C/C++ code with hvcc
  • Ask Miguel (the author) if can improve the performance of the pd patch, or make it compatible with hvcc
  • Wait until we have more processing power :wink:

BTW, @C0d3man, do you think it’s possible to compile a “faster” binary of pd? Perhaps some optimization option? We could consider this way too …

Regards,


#14

Maybe… but I think we need a speedup up to 50% and perhaps we can get 5% from PD-optimization… So the only way may be to try hvcc.

Miguel has send a monophonic version with some other tweaks. I will try to test at evening. Perhaps this may help…

Regards, Holger