GameOfLife / Unit-Lib

The Unit Library is a system that provides high level abstractions on top of the SuperCollider language.
25 stars 6 forks source link

generic MasterEQ-like tracks #14

Open miguel-negrao opened 11 years ago

miguel-negrao commented 11 years ago

With WFS and VBAP, were large number of tracks are used it's not practical to apply the same effect to many tracks by using sends like in stereo mixing, because in WFS for instance this would mean processing 192 channels of audio. In the original WFS software, for master EQ this was solved by placing the eq ugens before the panners and sending the eq controls to all synths at the same time.

It would be interesting to generalize these capabilities to any unit, to be able to do post processing of a bunch of tracks, but still using the same trick of placing the post-processing units before the panners, but then having just one gui for all the post-processing units. Perhaps the processing units could be assigned to different "send groups" which are defined by a symbol like the UGroups, and then for each "send group" there would be only one gui to control all of the units at the same time. Off course this shouldn't apply just to GUIs, any change to one of those units should propagate to the other units, so that you could assign UMaps, etc.

woutersnoei commented 11 years ago

strangely the UMap system could come in handy here. We could use it to create dependancies on a global object. For example an EQ group (an often asked for feature). We would insert eq units in the chain, and put an UMap on each of them creating a dependancy to a global EQ group. Or in fact any value could be treated like this. The mechanism is different from the EQ trick; instead of bluntly setting all synths with a certain control name we selectively set the ones that are listening. I just committed UGlobalControl yesterday, which actually does this for values. It is a global dict with named values, which can be tapped into by a UMapDef. I didn't yet push the UMapDef itself, will do soon.

miguel-negrao commented 11 years ago

Ok, checked the UGlobalControl thing, that's quite nice already. Still, it is a lot of work to put the Udef of all controls of each unit, give proper names to each control etc. Also, it would be nice to have a gui for this. Also, it would be nice if UMassEdit had a mode where it presented a single slider and would set all units to the same value, that would kind of already achieve something similar too.

woutersnoei commented 11 years ago

Perhaps a system similar to the GlobalBuffer thing you made earlier? I.e. an UEQ object that would refer to a named global eq setting, and auto-create it when if not there. We could make it create a dependant on prepare and release it at dispose, so that every unit is updated correctly during playback. We would also need to invent some clever way of putting it into compile string, so that the setting is posted only once per score file.