Building custom interface instrument with Dictionary function

https://youtu.be/hQXa6TkSeH0

image
orca

Hi, I am searching for a way to build some user interface for live performance.

I didn’t dive much into it, But I am in searching for a way to build some system for live performance situations.

Basic idea is some samples trigger with dictionary value, and generate the sequence with alogorithms and trigger as a string
for example $k → \kick, $h → hat, and generate sequence like [ k.h.k.h.k.h.k.h ] trigger the synth.

And It runs automatically, and I would like to edit and control it with live

for now, to do,

  1. Does anyone has some resource of the Gui / UI for text input to trigger the Synth?
  2. It would be great if someone had some examples of this kind of thing! (live control the dictionary with text inputs! )
  3. for the future, I would like to add some functions like 8/16 hardware step sequencers (blinking led?) on the active stage!

and Does anyone who experiments and tips for developing beautiful(UI) in supercollider? should I consider using another languages?

ps. Now I need to add some functions in supercollider, so I couldn’t go with orca right away, and finding some way to implement this kind of idea!

Let me know!

ixilang is probably the best known example.

I’d suggest, if you’re going to build your own: get the logic working first, then build the UI. The logic design may be influenced by the eventual UI but you’ll probably have debugging nightmares if you’re trying to build a UI over logic that’s full of bugs.

One of my strongly held opinions about GUI coding is that all of the program’s features should be accessible in code (no crucial pieces of logic hidden in GUI action functions – if you ever have to write aButton.valueAction(...) in order to get something done, this is a bad sign). Then the GUI is only a shell on top of the code calls.

So… design your dictionary and playback mechanism first, for instance, a function that takes in a string and outputs a sequencing pattern that can be played. Then the GUI obtains the string (from a TextField or TextView) and calls this function.

It’s a big job. Take it one step at a time. Build up the base logic first.

hjh

1 Like

Ok I’ll take a shot at this. And I suspect it’ll take more than one dictionary function.

I haven’t done much supercollider gui, but one of the main obstacles will be to get a grid like system for display. You could use gridlayout. The other part would be to have a way of doing a display over the bottom layer of the grid. I don’t think sc can do that, so you’ll have to code a virtual screen, maybe an array, and blit that to the sc window from time to time. With orca, they went with html and surprisingly ncurses ( curses foiled again ! )

Which means there needs to be a clock that is used to regularly do the window updates. There also needs to be a tempo clock from which all the widget movements are based on. What I’d probably have is an object that has an internal countdown timer. So in orca when there’s a timer that counts down, it’s the object’s internal timer.

Which brings up the problem of how to communicate this to all the objects/widgets on screen. One way is to do a simple publish subscribe pattern. The tempo clock has a queue of callbacks to the objects that are interested in the clock, and every tick, the queue executes the callbacks. So one problem which might crop up would be what happens when a widget is supposed to increment an fx variable and another object arrives into the area and is meant to interact with the widget. Should there be an ordering of object to object interaction and update object fx with a priority on update fx first? If this is a concern then there needs to be another bunch of queues to deal with types of interaction in the grid.

It’s probably easier to do all the gui stuff in html/javascript, ( and everything else ) and use the supercollider javascript for creating synths and the bus routing.

1 Like

I think at first I will go with grid layout in sc. for the first time I will define 7~8 Synthdef, and trigger with specific or random order.

I also look into orca’s design, to make it, I should learn Uxn assembly haha.
I think It will take too long than I expect, so I will go with simple for testing.

I think I will use some Osc communication with other devices, so at first, every process should be in the SC is the best option for now. the reason why I post, I was thinking about some externals(like Gen in max or using a Javascript in sc just for design or making functions) that can make design in the SC but, there are not many options for now.

I built some random sequencers when I learn a new program, I always tried to build some of my own UI for studying and fun and also It can be a visual presentation.
Designing UI in sc is much harder than I expect because not many resources to make good visuals.