sampov2 / foo-yc20

This is a Faust implementation of a 1969 designed Yamaha combo organ, the YC-20. Available on the web, as a VST and LV2 plugins and a standalone version.
http://foo-yc20.codeforcode.com
Other
88 stars 17 forks source link

Compile/Install Documentation #16

Open jofemodo opened 6 years ago

jofemodo commented 6 years ago

There is no documentation about compiling/installing the project. Please, could you give some guidance about how to build the project?

I've compiled and installed the last version of Faust and tried to compile the project, but i get:

include/foo-yc20.h:36:29: fatal error: faust/audio/dsp.h: No such file or directory
 #include <faust/audio/dsp.h>

It seems that the installed Faust version doesn't fit the required file/directory struct. The file "dsp.h" is not in the "audio" directory but in the "dsp" directory (faust/dsp/dsp.h).

What Faust version should be used? Etc.

Thanks!

jofemodo commented 6 years ago

I modified the include line in "include/foo-yc20.h" like that:

#include <faust/dsp/dsp.h>

Then it started compiling and progressed a little bit, giving this error:

src/main-gui.cpp: In function ‘int main(int, char**)’:
src/main-gui.cpp:85:11: error: cannot declare variable ‘processor’ to be of abstract type ‘YC20Jack’
  YC20Jack processor;

??? I'm lost here ... ;-)

sampov2 commented 6 years ago

The documentation indeed is lacking. You might find some clues in the Semaphore CI build configuration: https://semaphoreci.com/sampov2/foo-yc20

Also, did you try compiling the master version or an earlier release?

jofemodo commented 6 years ago

OK! It's difficult to get useful information from there, as it uses a docker image. Anyway, i will read it carefully ;-)

And yes, I tried to compile the master version, of course ;-)

jofemodo commented 6 years ago

Hi @sampov2 & @jpcima !

I'm trying to compile in debian jessie/stretch and it's really difficult to figure how to solve the building problems.

Please, could some of you give some tips for compiling the source code? What is needed? What faust version? etc.

Thanks a lot!

jpcima commented 6 years ago

Hello @jofemodo.

This build needs headers from faust 0.9.73. (located in the archive as faust-0.9.73/architecture/faust)

To explain more, I have made faust2 compatibility in a personal fork and found it slower, hence why I never submitted the work and preferred staying on the old one.

Now a problem is that the faust 1 branch is decreasingly available in OS packages, so compatibility problems are sure to happen. I don't really have an idea for a solution to make all users happy about this.

You can unpack the said archive in sources and edit Makefile to point the include path at the directory indicated (eg -Ifaust-0.9.73/architecture)

jofemodo commented 6 years ago

OK guys! Thanks a lot!

It compiled successfully, with no error or warnings. I did it for AMD64 platform and it worked perfectly. Sound is nice and everything works OK.

Then, i tried to compile for Raspberry Pi v3 (ARM Cortex A-9 with FP Neon v8). It compiled perfectly, without errors or warnings, but the sound is wrong. It seems that the audio processing is broken in many ways, as the notes holds-on forever and the sound is really ugly. I'm trying with different compiling/optimization options, but with no luck until now ...

Some ideas?

Thanks!

jpcima commented 6 years ago

I have absolutely no idea about this, sorry.

jofemodo commented 6 years ago

OK! Thanks! It works when compiled without any optimization or platform-specific option. It's a good starting point, although some optimization is needed because CPU load is too high and got too many XRUNs with jackd.

jofemodo commented 6 years ago

Hi @sampov2 & @jpcima!

I've tuned the compilation and got a working binary with an acceptable CPU load: around 55-60% in a RBPi 3 B+, using only one core, of course. This is enough by now.

jofemodo commented 6 years ago

I've written a little script for building the foo-yc20 for the ZynthianOS (RBPi):

https://github.com/zynthian/zynthian-sys/blob/master/scripts/recipes/install_foo-yc20.sh

Baggypants commented 4 years ago

foo-yc20 seems to work perfectly fine on the pi4 by the way. Here is a recording, (let's say I was drunk ok?) https://discourse.zynthian.org/t/new-features-sub-snapshots-setbfree-keyboard-splits-combo-organ-model-and-more/2438/49?u=baggypants