Hello Everyone, MSE Here!
Working with so many modules and an enormous Matrix proved to be too difficult and slow with the previous grid that I devised. Therefore I had to come up with a new mechanism. In a future post I will explain both the other failed attempts to create this functionality and also the actual size of the Matrix.
I realised that using a jit.table object appeared to function best as it allowed for the best and quickest communication between the different sections of the project. Therefore I created a grid that is exactly the same size as the Grid on the Akai APC Key 25 MIDI controller grid and repurposed it. The main problem was not knowing what you click, so I created a system where the user could select the outlet module (the one the signal goes from) and an inlet module (the module that receives the information) and creates a connection between them or breaks it, and a system that writes in the table all the available inlets, outlets and clickable buttons. This system worked great when using the MIDI controller as it was just a visual interface for the controller, but it didn’t allow the user to use the software just with a mouse and keyboard. The idea that functioned best was to create another table on top of the other one that would be invisible and only send information about the exact cell that has been pressed. The information is then passed through a series of if statements that filter down the information and only select the correct inlet/outlet or clickable button.
Writing in a table proved not to be a difficult task as the only thing that had to be done was to create a system that cycles to the cells of a row and writes the information contained in a coll in them. This exact method had to be configured for each individual row and module (or in some cases module collections because the too few inlets/outlets have been used). Unfortunately, due to the way that coll objects are configured, I was unable to include any spaces in the messages that were going to be written in the tables and had to create a workaround by using “_” and this created a not so pleasant to look at grid.
There was another issue that proved to be unsolvable yet, and that is when using both sets of inlets and outlets. For some reason, although each row is individualised by an if statement, the connect and disconnect buttons are not always sending the information differently. When only using the top set, there is no issue with the functionality, but when using both channels, complications arise. If using only the table in the project, clicking the second connect or disconnect object will create a connection between the second outlet of the Microphone module to the second inlet of the Mixer module, but when using the MIDI controller grid, the second connect button actually makes the connection for both sets of inlets and outlets. I even tried creating completely different send and return buttons and checked all the connections but the issue would not disappear.
In order to make the connection between an outlet and inlet module, all the data after being filtered goes into a system that packages the information and routes it to the matrix in a 3 integer messages that either presses the connection button on the Matrix or cancels it.
And that is how connections are made in the project.
Have a good one and I’ll see you in my next post!