Replies: 3 comments 1 reply
-
Welcome back!
|
Beta Was this translation helpful? Give feedback.
-
Thanks! Glad to be back!
Hopefully that makes more sense. |
Beta Was this translation helpful? Give feedback.
-
I've pushed a change to the dev branch to support an arbitrary output count for the splitter node. I already had some infrastructure in place the support this - I didn't need to make any change to the processing callback at all. I think I might have had this idea earlier and then just forgot about it. Just keep in mind that it's limited to Regarding examples, I don't know. I agree with your general sentiment that there needs to be more examples (especially for the high level API - I don't think I've even got an example for basic spatialization!), but I'm just not sure how I want to approach it yet because it's a fairly significant time sink to write and maintain. I've been wanting to do a functional music player for some time, and I think that would make a really good example because it'd be practical and would cover a lot of topics. It would cover the UI thing you mentioned because it could do visualisations, and it could also do effects like an equalizer which could be used to show off the node graph system. You could even have a plugin system to support additional encoding formats to make use of miniaudio's custom decoder system. Heaps of things you could show off. |
Beta Was this translation helpful? Give feedback.
-
Hey @mackron!!
First, so sorry for disappearing on you a few years ago. My life took a turn for crazy and I'm just getting back on my feet. Very sorry to leave you hanging. I finally had time to thoroughly review all the work on node graphs and everything else from #196. Generally, it looks great! I'm very impressed with how everything works. After looking through everything I've just got a few bits of feedback for more complex scenarios that I thought was worth passing along:
How can I do a complex node graph with an indeterminate amount of "wires" connecting from a single out to many node ins? Right now it seems like you'll need to do a
ma_splitter_node
every time you want to split out a new node. I'm wondering if this can be simplified by simply callingma_node_attach_output_bus()
and letting MA deal with the splitting behind the scenes. In any case, it would be good to show how the node graph can be rebuilt dynamically on the fly as things are connected and disconnected.How does a display thread connect to the processing thread to get input to do things like show a waveform in process? This is common place when building DSP to give visual feedback. Sharing data between threads is always tricky. This might be a good thing for an example to show how to trigger other things off of audio input.
How do we synchronize two looped sources to stay sample accurate? Game soundtracks often stack loops and let them morph to create a soundscape but the music needs to stay in sync. Looper guitar pedal records a stream of audio and either stores a file for each loop or does a sum in place and replaces the PCM in a ring buffer in memory. It seems like there should be a complex looping example that shows how multiple loops can stay in sync when they are multiples of one another.
How does a DJ do scratching with MA? Since MA is so small it really presents itself well for building embedded systems doing DJ type stuff. (In fact I've seen some threads where people are doing just that...) Seems like an example on moving the play head could be quite helpful as scratching is not trivial.
How would control voltage work? In analog synthesis CV is used to modulate parameters constantly. (That's how you build cool synthesizers...) I think this should probably be treated just like another audio source but I'm not sure how it could/should work. At any rate, it would be good to show how to modulate a filter from an LFO since this is a common use-case in synthesizer design.
I can't think of any other wacky ways to break the system or what I might do with MA that it doesn't do already baked in. I'm enjoying getting back into audio programming and looking forward to doing some crazy stuff with MA now that it is mature for most of my use cases. Like I said above, I'm very impressed by how far it's come in the last two years! Many many kudos and thanks!!!
Beta Was this translation helpful? Give feedback.
All reactions