Does someone want to play with a hypergraph sequencer?

weuoimi 's icon

Hello! Recently I have been developing the idea of reimagining sequencing through hypergraphs. This one, written in a single HTML/JS/CSS file, can be conveniently used in Max's [web] object. It is possible to add a callback to place the messages generated by the hypergraph into a dict for some synthesizer to take them as argument messages.

Take a look at the videos, just imagine that each time a certain node pulsates, it generates a sound or modulation.

1.mp4
2.mp4

Here is how it works. The main idea behind the sequencing is using a special recursive Graph Flood Algorithm I came up with for this project. We have a hypergraph, represented by a regular bipartite graph, where square nodes represent hyperedges and regular circle nodes represent, well, nodes of the hypergraph. Moreover, the hypergraph is directed, which means that you can define the direction of the edge connecting a hyperedge to a node. You begin by defining a hypergraph via JSON, just specifying hyperedges and their nodes. Then you open the editor, which gives you the capability to define the direction of the edges between a hyperedge and a node, associate any messages you want with certain nodes of the hypergraph, and define a delay for each node. Then you choose a start node and launch the algorithm.

I don’t think that I will have much time to tinker with Max to come up with synthesizers that would suit this, but I believe it would form awesome textures with some granular synth with lots of crazy modulations assigned to the pulsating nodes.

TFL's icon

Thanks for sharing your idea here! Probably some of us would like to give it a try if you end up sharing the jweb resources.

If I understand correctly, each node represent a set of informations (a note, some parameter values, whatever we want as a dictionary) and always send this exact set of information (nothing changes them), right?

In the second video, it seems that nodes triggered by the same hyperedge are triggered one after the other (looks obvious when you observe E, Y and T connected to e5). Is it just a display thing, or a property of the hyperedge that can be changed? In other words, the nodes have a delay property, but does the edges too, on a per-node basis?

I'm not familiar with hypergraphs so sorry if these questions are trivial!

weuoimi 's icon

You'll find further explanations in readme. basically, all you need is index.html.

Yes, the hypergraph is static and the nodes contain just a text string of whatever you want to send to the synth, and yes, the nodes are also contain a delay property which is unique to each one of them, such as the message. I think that the ui explains everything about what you can do with the hypergraph and what you can tweak in the algorithm. So feel free to run it in your browser or jweb module and try it out!