I wonder if I'm correctly understanding the below terms.
Control object : object that has control inlets and outlets only. (e.g. spigot, swap, pack)
Audio object: object that has one or more signal inlets and outlets. (e.g. phasor~, vcf~, dac~)
Am I correct or would you call them in a different way? (e.g. Signal object)
@whale-av Thanks, but your patch doesn't seem to output 'bang' before actually quitting.
It seems to output 'bang' as soon as the popup message appears.
I tried it by doing [quit bang] -> [write file.txt( -> [text]
I use Pd-0.48-1 on macOS 10.13.6 by the way,
@AxiomCrux Hi, Thanks for your interest.
Yes, I also use ofxLua so if you tried ofxLua already, it will work identically.
And I added some pd related functions on top of it so users can for example, get/set value of [value] object, send messages to pd's [receive] object or read/write pd's array data using the Lua script. I'm currently trying to find a good way to add inlets/outlets.
At the same time, I'm also working on creating the audio version of this so users can create audio objects(e.g. filters, effects) using Lua but there are still many problems to solve.
Do you have some experience in binding C++ functions for Lua?
I'm using SWIG to bind pd related functions and it works well in general but there are some problems I'm struggling to solve. (e.g. passing lua-table as an argument, binding a C++ function that should return a table)
@Jona Great work! I tried it and it work very well.
I think you need to explain how to load and play samples using the keys.
Or maybe you can add a button to load sample and a toggle to play/stop the sample.
I personally think it would be nice if there's an audio export feature as well.
@Jona I think you will get better answers sooner if you create a separate thread per your question if the question is about vanilla pd & sampling and not directly related to ofelia. (if the question can also be answered by non-ofelia users)
And maybe you can create and upload a simple patch which only shows the problem you want to solve so even vanilla pd users can quickly try and understand your patch.
And if you later have trouble implementing the solution in ofelia, I'd be glad to help you with that.
@Jona I don't understand what you mean by "I need to click into the pd window to update the waveform drawing if I load a new .wav file".
When I load a sample by pressing the space bar and then selecting a file, the waveform updates immediately.
The waveform updates well when I load new samples.
I tested this on both macOS and Windows using pd-0.48-1.
Do you mean you needed to click on the patch window to make the window have focus?
@Jona Hi I just tried your patch on macOS and I got some "ofEditPolyline2dPoint: 'v1130_JonasPath3' is empty" errors on startup.
I think it happens because [ofEditPolyline2dPoint] is called before loading paths of [ofLoadPolyline2d].
I could fix it by placing [change] before [ofMap] as the screenshot below. I'm not sure if it's a safe fix though.
I agree that sampling is a wide topic and somewhat difficult to fully understand.
I'm not sure if controlling in/out points with the mouse inside the waveform would make more sense.
It sounds like a good idea to me though.
You can probably take a look at other sampler instruments(such as N.I Kontakt) to see how they did it.
@Jona Hi, I'm not sure if this is what you want but I created a simple example that might be helpful to you.
You can jump to a certain position of the sample, and pause the playback. It is based on the tutorial patch from your link. I hope this helps.
@Jona Hi, Great work!
I just tried your patch on macOS and Windows standalone application and I could successfully load samples and play the sound.
I think it's because you're using the previous version before I fixed the path symbol of [ofSystemLoadDialog].
Could you try downloading the master branch which is the lastest version?
Go to https://github.com/cuinjune/ofxOfelia and click "Clone or download" -> "Download ZIP".
And then unzip it, copy "Win32Example" and replace it with the previous one.
P.S: I really like your videos. I would appreciate if you add "ofelia", "ofxOfelia" and "Pd" tags when you upload ofelia videos to Youtube. I think it will be very helpful.
@Jona Thanks for your understanding.
I just want to make the project more extensible and maintainable as much as possible.
And you will not need to learn Lua when you create modules later on.
I'm considering to use Lua partially where I think is easier to express than using Pd. (mostly for handling complex logic with many conditions)
But even if you consider learning Lua, I think it won't be that hard since people say it's one of the simplest/easiest languages to learn.
You can think of it as having a more advanced [expr] with additional ability to use openFrameworks classes and methods.
I created a simple prototype yesterday and it seems to work well so far. I need to think more about the design.
@Jona Hi, I've been working on the connections but couldn't finish the implementation yet.
Although it should be possible to implement the connections and everything using the existing pd and ofelia objects, I personally think pd is not the easiest tool for handling such a complicated task where you need lots of conditions and state changes.
For this reason, I've been writing the code in openFrameworks and C++ first and then translated the code into pd objects which is not so efficient way of working.
Because of this, I'm considering to embed the scripting language Lua to ofelia (using Dan Wilcox's ofxLua) so users can mix text based scripting with visual programming in realtime. And users will be able to directly access all openFrameworks features using it. I think it can be very flexible if I succeed in adding the feature. And I believe it will help me to work more efficiently for creating the modular environment.
I expect it will take about a week or two to add the Lua scripting feature to ofelia. (if everything goes well)
Then I will need a few more days to study basics of the Lua programming language but it looks pretty easy to learn.
So if you're not in a hurry to create the modular environment, I suggest we hold off this project for a while until I finish creating the base of the environment after adding the Lua scripting feature.
My goal is to make it possible for you and users to easily design modules using ofelia's gui abstractions(e.g. pdgui) and inlet/outlet abstractions without having to deal with other things.
As I've said, this is a complicated project requiring a huge amount of work so I hope you understand my decision and I will keep you updated on my progress.
P.S : The below image is the screenshot of what I've done so far using openFrameworks/C++ which I didn't translate to pd and ofelia. I think the code can be easily translated to Lua later on.
Hi, ofelia v1.0.8 is now available.
You can use GEM with ofelia thanks to Arnaud Courcelle who created [ofGemwin] and [ofGemhead] abstractions.
Please try out "ofelia/examples/gem/main.pd" to learn how to use GEM with ofelia. I've only tested this on macOS by the way.
Also, I added some utility objects for creating message and file opening/saving dialogs.
You can find these objects inside [pd system] subpatch in UTILS section of "ofelia/help-intro.pd".
- added [ofGetFboTexID] and [ofGetImageTexID]
- added GEM abstractions and example to the "examples/gem" directory
- added ofRectangle related objects and help files
- renamed [ofGetDollarArgs] to [ofGetCanvasArgs]
- added [ofSetCanvasArgs], [ofRemoveCanvas], [ofGetCanvasIndex]
- added [ofKeyCodeListener]
- added ofSystemUtils objects and help files
- Video player and grabber
- SVG loader
- GUI abstractions
- Raspberry Pi support
More info about ofelia: https://github.com/cuinjune/ofxOfelia
@Jona Hi I just added the 4 objects to ofelia v1.0.8.
Reinstall ofelia and open "ofelia/help-intro.pd" and then find the [pd system] subpatch in UTILS section.
I also added [ofGetCanvasIndex] since I think it will be useful for implementing the module connection.