Sorry for this weird and newbie question. Is there a way to load or import a Pure Data patch? Or to make them work together with hise?
Last time I checked you couldn't instantiate more than one PD instance, which is a knock out criteria for anything that wants to run as plugin, but I heard there were some efforts to remove this restriction.
When it's there, I'll think about a PD wrapper for HISE. It might be pretty great desigining your DSP in PD and wrap them in a HISE instrument.
@christoph-hart absolutely! Pd opens a huge amount of possibilities!
MacroMachines last edited by
heavy compiler can create C/C++ source code from PD patches, and compile cross platform binaries in loads of formats that you can download from the site.
Also I am a big fan of FAUST for DSP. You can write the code and run it on their website and then compile and download a ton of different native binaries : http://faust.grame.fr/
Maybe a wrapper that could load the C/C++ source code generated from these would be relatively straightforward?
alexmitchellmus last edited by
@MacroMachines yes I was also thinking of Faust. Theoretically it would be a fantastic fit, as Faust has no GUI design built in intentionally (apart from QT Auto Generated & host GUI's).
Maybe an official faust2hise CLI? (to go along with the many other faust2everything scripts?
Obviously this would already be possible, one would need to export the Faust DSP as CPP and work out how to incorporate it into HISE. An official wrapper/exporter would be super neat!
Actually writing an architecture file that creates HISE modules from Faust code is pretty straightforward, so this is a rather good idea.
I was a little bit frightened from the Faust syntax (looks like Regex scramble to me lol), but maybe it may be worth it.
MacroMachines last edited by
@christoph-hart It is a bit like regex in the fact that it is very powerful what you are able to do with very few characters of code. Its actually quite brilliant, it just takes a bit of getting used to because it is a shorthand textual representation of dataflow networks like pure data or max/msp.. you can split signals with < (think of the less than being like to wires splitting out visually) and then you would have the processes separated by commas.. and to sum together a group of parallel you would use the >.. and the "~" represents feedback for recursive z-1 filters etc.... @10 would get the memory at 10 samples ago.. delay lines etc.. it makes alot of sense if you can happen to find a good tutorial.. I have a bajilion things bookmarked for faust and there are a couple getting started guides in there but you can probably find most of what I looked at from their website and github repo readme
MacroMachines last edited by MacroMachines
FYI they have a FAUST JUCE JIT compiler I think, pretty sure Oli Larken has a video about it from the JUCE conference maybe 2016?
Funny, I watched this yesterday.
The problem is building LLVM and faustlib, but then it it should be pretty straightforward. It will probably only be available on macOS / Linux though as building LLVM on Windows is the Bowser of software development.
The idea is to have the JIT compiler available in HISE for rapid development and it when you export your plugin, the faust compiler will create C++ files that are embedded in the plugin so that the exported plugins have no dependency on Faust (Faust is GPL but the generated code inherites the license of the used libraries, so it plays nicely with commercial projects.
Do you know how polyphonic synthesisers work in Faust? Since HISE is a framework for virtual instruments, it would be pretty stupid if it couldn‘t use Faust for making sound generators.
@christoph-hart a bit off topic but I've been playing around with csound also, and it's polyphonic by default. Opcodes included in csound are in fact modules that would be great for hise. I mean you can load for example the 'pluck' opcode and it's a fully functional Karplus strong module http://www.csounds.com/manual/html/pluck.html
There are 1500 opcodes LGPL out there
alexmitchellmus last edited by alexmitchellmus
Very exciting to have the power of Faust DSP connected to a sample engine/ plugin generator/GUI powerhouse! Keep us posted, this is very interesting!
In regard to polyphony, with my experience its very easily implemented inside Faust code using
nvoices, however I don't know the exact way it works inside the compiler. Currently it's similar (in my eyes) to how csound does polyphony. (It "just works").
In regard to including Csound (and this is a cool idea) I feel that especially for physical modelling having access to the DSP code is much more flexible than using an opcode. Mind you currently Faust isn't the best for FFT resynthesis, (hopefully it will get that soon).
I'm not a Windows user, so can't comment on LLVM for that platform, mainly Linux, MacOS. (Addicted to POSIX).