porres / pd-else

ELSE - EL Locus Solus' Externals for Pure Data
Do What The F*ck You Want To Public License
289 stars 36 forks source link

aubio? #1371

Closed porres closed 1 year ago

porres commented 1 year ago

@timothyschoen :)

for reference --> https://puredata.info/downloads/aubio/?searchterm=aubio and https://github.com/aubio/aubio

have alternatives for ELSE, maybe...

so, pitch detection, onset detection, beat detection is all nice... slicing audio files in beats is also great

I wonder if this can extract loop region information from audio data, I've been wanting to do that for a while now (actually I was hoping we could do it in Vanilla)... and can this also help loading mp3 and other sound files? that would also be good to have in vanilla (readsf~ and soundfiler)

timothyschoen commented 1 year ago

I'd love to see this, you probably have to do some work for loop extraction, but this does give you the tools you'd need for it I suppose.

porres commented 1 year ago

some files have loop regions metadata, I would like just that

porres commented 1 year ago

there's also a github repo for this https://github.com/aubio/pd-aubio

timothyschoen commented 1 year ago

Code looks pretty clean as well, so we could copy-paste this in I guess. Then we only need to check the interface, create helpfiles in the ELSE style, and done.

porres commented 1 year ago

yup, should be easy, kinda like using fluidsynth, we just call the functions... the problem is having it as a dependency but you can deal with that :)

porres commented 1 year ago

I will definetly rewrite the wrapper and change objects' names and stuff too... make some different design choices later one

timothyschoen commented 1 year ago

I've included aubio in projects before, it's very simple

porres commented 1 year ago

let's start with

onset~ detect onsets pitch~ detect pitch beat~ detect tempo (beat tracking)

then I'll see other things in aubio we can use

porres commented 1 year ago

objects above would be renamed from

aubioonset~ detect onsets aubiopitch~ detect pitch aubiotempo~ detect tempo (beat tracking)

porres commented 1 year ago

I guess aubio is part of pd-l2ork or pd-ceammc too maybe?

porres commented 1 year ago

yup... ok, we gotta do this now :) ceammc is ELSE's main nemesys, I have to beat them :) hahahhahaha

Screen Shot 2022-11-04 at 13 46 49

porres commented 1 year ago

this is interesting too... getting onset points from arrays

Screen Shot 2022-11-04 at 13 51 35

timothyschoen commented 1 year ago

yup... ok, we gotta do this now :) ceammc is ELSE's main nemesys, I have to beat them :) hahahhahaha

Screen Shot 2022-11-04 at 13 46 49

Heh, so if ELSE competes with ceamlib, PlugData is like the ELSE version of pd-ceammc. They don't stand a chance!

porres commented 1 year ago

PlugData is like the ELSE version of pd-ceammc

exactly :) I'm aware of that :) I'm actually writting about it in a paper I should have written last year

porres commented 1 year ago

anyway, can I just expect a PR including aubioonset~ / aubiopitch~ / aubiotempo~ and I take it from there?

timothyschoen commented 1 year ago

exactly :) I'm aware of that :) I'm actually writting about it in a paper I should have written last year

Very nice, look forward to reading it!

anyway, can I just expect a PR including aubioonset~ / aubiopitch~ / aubiotempo~ and I take it from there?

Yeah sure, I'll have some time later this week.

Btw, I've also found the first bug caused by the naming issues in ELSE/cyclone: [seq] crashes in PlugData when it gets the "read" message, because it uses ELSE's panel_open function instead of cyclone's. I'll probably work on fixing that problem first.

porres commented 1 year ago

I'll have some time later this week.

👀

timothyschoen commented 1 year ago

Hi, sorry, I've been very busy with getting the C++/Daisy exports from PlugData to work, so it's gonna take me a bit longer :(

porres commented 1 year ago

wow, tell me about that

timothyschoen commented 1 year ago

It's actually kind of epic. I use the hvcc/Heavy compiler to convert Pd patches to C++ patches for various targets (2 for now, but more are to come). So as long as you use a limited selection of vanilla objects, you can export your patches to code that behaves pretty much identically, it's kinda similar to Max/RNBO. There's a compatibility mode you can enable, that will warn you when you have an unsupported object anywhere in your patch.

I've created a way for installing all the necessary compiler crap with one click, totally noob friendly. Setting this up across 3 operating systems was taking me a long time, but it works! And then it can use that to compile Pd to daisy, and someday also audio plugins and more.

Screenshot 2022-11-15 at 00 43 03 Screenshot 2022-11-15 at 00 44 35 Screenshot 2022-11-15 at 00 45 02
porres commented 1 year ago

wow, I wish I had any idea :)

I thought it could be much simpler to export pd as in libpq (written in C) to a C++ project...

porres commented 1 year ago

and them we could use all of vanilla and externals like else/cyclone

timothyschoen commented 1 year ago

Yeah, the problem is that that won't work on embedded platforms, which I think is actually a very cool target for Pd. It will also be a bit faster than libpd.

I'm also hoping to add plugin and executable exports to PlugData that will just ship a version of PlugData that automatically loads your patch at startup and has no other controls. That will have full vanilla/ELSE/cyclone support of course :)

porres commented 1 year ago

dude, this feels like stalking and pressuring :)

it will happen when it happens ;)

porres commented 1 year ago

i'd rather this channel would be restricted to technical discussions

alfonso73 commented 1 year ago

dude, this feels like stalking and pressuring :)

it will happen when it happens ;)

Oh sorry...no pressure at all...just curious.

porres commented 1 year ago

it will happen when it happens ;)

and not happen as well, life is a mystery!

porres commented 1 year ago

ok, aubiotempo~ is included as 'beat~' now

porres commented 1 year ago

ok, added beat~, now I'm gonna close this and reboot