So, i'm in the design stages for a project that I hope will ease my future perform.patch coding. I got a bcr 2000 not too long ago and quickly found that the endless encoders with visual feedback make it possible to multiply the number of controllable parameters several times. there are 16 buttons in the center of the BCR, and 24 knobs on the bottom. I created a max patch that makes each of the buttons a 'page select' button; the patch stores 16 sets of 24 knob positions (each set being a 'page'). If the functionality isn't clear at this point, then plz let me know. The point is that all the sound making happens in max, but maximal command flow is diverted to java.
For a variety of reasons, I've decided that I want to make a java package to handle most of the tasks, such as preset storage, recall, sequencing, and persistence (file IO). So, i'll have the following classes:
controller: value and description (derived classes include button, knob, and on-screen control)
page: has controllers and instruments. methods include store/recall preset, save/read to file.
instruments: an oscillator has FM and PWM, LFO's have just FM, etc. basically, the members are just a set of knob descriptions. However, these are the objects that condition controller data for sending out to max.
some kind of 'book', top level class, which has pages, directs midi input to appropriate pages, sends output to max as instructed by the instruments.
So, my question is: I want a page to be the main 'owner' of all the controller objects. But, I want to have the instruments as separate classes that somehow refer to the controllers of the pages. Sorry for the long preamble for this rather simple question, but i'm new to java and i'm not sure how to do this.
What needs to happen is:
1) i turn a knob on the bcr, the book knows what page we're on and directs the midi data to the right page. The page looks at the controller number and directs the data to the right instrument. The instrument generates the appropriate string to send to max and returns it all the way up to the book which passes it to max, where the synthesis happens.
2) hit a page button on the bcr. Book directs the right page to dump all controller data back to the bcr.
3) preset saving and recall to/from ram and file. These operations should all be controlled by the pages.
anyway, it was helpful for me to write all this. hopefully y'all are also entertained
For a variety of reasons, I've decided that I want to make a java package to handle most of the tasks, such as preset storage, recall, sequencing, and persistence (file IO). So, i'll have the following classes:
controller: value and description (derived classes include button, knob, and on-screen control)
page: has controllers and instruments. methods include store/recall preset, save/read to file.
instruments: an oscillator has FM and PWM, LFO's have just FM, etc. basically, the members are just a set of knob descriptions. However, these are the objects that condition controller data for sending out to max.
some kind of 'book', top level class, which has pages, directs midi input to appropriate pages, sends output to max as instructed by the instruments.
So, my question is: I want a page to be the main 'owner' of all the controller objects. But, I want to have the instruments as separate classes that somehow refer to the controllers of the pages. Sorry for the long preamble for this rather simple question, but i'm new to java and i'm not sure how to do this.
What needs to happen is:
1) i turn a knob on the bcr, the book knows what page we're on and directs the midi data to the right page. The page looks at the controller number and directs the data to the right instrument. The instrument generates the appropriate string to send to max and returns it all the way up to the book which passes it to max, where the synthesis happens.
2) hit a page button on the bcr. Book directs the right page to dump all controller data back to the bcr.
3) preset saving and recall to/from ram and file. These operations should all be controlled by the pages.
anyway, it was helpful for me to write all this. hopefully y'all are also entertained
Recent Blog: ring mod idea