There were I few things I noticed during my trip that I would like to take note of.
Technical things to note:
1. Max would consistently not open when I first turn on my computer and it is connected to my personal router. If I turn off my laptop's wifi first, then Max would open and everything worked fine. After that initial opening, I can leave my laptop connected to the router and Max can be opened/quit as needed without issue. I only started noticing this after I crossed the border into the US and I have yet to test if it is still happening in Canada.
-March 16 update: I tested this and it is consistent when I am at home in version 8.2.1. I then installed version 8.2.2, restarted my computer, made sure that my network was connected first, and this was fixed!
2. Occasionally my computer refuses to recognize my Scarlett audio interface. It seems that if I quit Max then it will be recognized. This has not happened often enough for me to be able to tell if it is consistent or not.
-March 16 update: so far I have not been able to reproduce this. If Max is already open, it doesn't seem to prevent the Scarlett from being recognized by my computer. The green light for it at the front comes on after a couple seconds. Version 8.2.1 of Max. I then updated to version 8.2.2 and I still could not reproduce this issue.
3. If Max is left open for too long it will stop accepting incoming OSC data. I asked someone else who also uses OSC with Arduino/ESP on a regular basis and it happened once to them as well.
-March 16 update: I noticed that if my instrument is sending data already to Max, and then I go to Options | Audio Status, there is a moment where the OSC data freezes while the audio status window tries to open. It makes me think it is possible that if it gets stuck trying to open, this can simulate what looks like a wireless issue or a short. Version 8.2.1 of Max
-After updating to 8.2.2 I left Max open for an hour (without my patch open just Max running in the background). I then came back and started up the patch and got the GLOBE going. Everything worked perfectly fine! So either updating to 8.2.2 made it so Max is more reliable even if it's left open for a really long time before being used, or my computer has very bad stage fright when it comes to actual live performance.
4. Having to unplug the router in order to use the serial port is very very bad and easy to forget to do in the heat of the moment. This should be changed in the Arduino Sketch, even if it means introducing a little bit more latency to have it the way it originally was during my thesis.
5. There is an update for Max available, but I had not yet installed it because I have a rule to never install updates just before a presentation/concert. It's possible that updating may help some of these issues. => March 16: updating to 8.2.2 fixed the issue of Max not responding when I'm first connected to my personal network (I think)
Things about the GLOBE:
1. Previously I thought the IR sensor would get jittery when at rest if the battery was starting to get low. But it was doing it while on stage in the Ferst center. It may have something to do with the bright pot lights shining down on it. I have yet to test if I can re-create these conditions for the IR sensor at home. For the concert and presentation I had to slightly raise the threshold for the IR sensor that cuts out this jitter, but that's fine.
2. Many people came up to talk to me about the GLOBE and many people wanted to try it during the presentation day. Even when it wasn't my turn to demonstrate, a couple times I turned around and there was someone picking it up, or taking a closeup pick of it. While they were playing with it, people seemed to really like the colour sensor. They had a tendency to turn the GLOBE upside down so that the colour sensor is pointing upwards while they try to put a colour against it. Also, they seemed to light the colour away slowly. These two things made the colour sensor less accurate because they were pointing it up at an orange tinged pot light and as they were pulling the colour away slowly, it would still be just close enough of a distance for the Max patch to sample it as a new colour. It really wanted to stay on orange from that orange stage light. It made me realize that I also have a tendency to reach my hand under the GLOBE to trigger the colour sensor, so I would not necessarily have this problem before.
3. People also had a tendency to use the touch sensors, but not the IR sensor as much.
4. Mir, my performing partner for the concert, liked to keep the coloured glove constantly on the colour sensor so that way it would for sure not change the section when she didn't want it to. That is something I hadn't thought of doing before.
I'll update this post after I tested a few technical things to see if I can reproduce some of these issues.
I was doing some testing with both paint chips and with fabric that had fabric paint on them. I worked on getting the patch the most accurate when using either method and while using all colours available. It was really tricky for it to recognize the difference between orange and red, but I think I have it as close as it is going to get now. I noticed that the "clear" threshold is best set to 850 while using paint chips, and 1000 while using the fabric paint swatches. It felt like the gloves with the paint swatches were more accurate than the paint chips, and being able to use a higher threshold probably contributes to that.
So, now that I've done all that testing, I will add orange and purple paint to the backs of the gloves that I made. I feel like have three colours per hand on the palms would be a bit too much. Also, I don't plan to use orange or purple that often, so that makes it more convenient for when I am not using those colours at all.
Version 5: https://github.com/CLKo1/colourdetect-maxmsp
I DID IT!!!! Ever since I graduated I avoided doing anything to fix the one FSR that was not working properly, and I finally fixed it! I unplugged everything, took out the PCB, soldered the resistor and a few connections, cut the FSR off of its original connections, and re-hooked it up to the additional LIS3DH A2 pin. And I did it all without damaging anything else!
I plugged the original FSR data wire (that is going into the mux) into ground, and for that I thought it was too risky to solder that close to the plastic GLOBE. So I had used a lot of electrical tape and a jumper. It is not elegant, but it works. Something interesting is that grounding that 16 pin also fixed the bleeding from the 13 pin going into the 15 pin.
It was also the first time that I got to use my new heat gun on the heat shrink. So much fun!
Now I need to o back to my patches and update them all to include this sensor!
For the upcoming competition a thought occurred to me: what if my partner has large hands? We have not been told who we will be paired with and when I made the gloves with the fabric paint, I made them to fit my hands. So I took what material I had left and made bigger ones that are adjustable with velcro. I have learnt that I never want to try sewing velcro again. It's impossible on my simple sewing machine and I broke three needles when I was trying to sew one strip by hand. I ended up taking them to my mother to sew on her special machine. I used Kevin's hands as a guide and made them slightly bigger. So I hope they are ok!
When my mom was helping she asked me a question. I can't remember what it was now, something about the stitches, and I told her "it didn't matter". She said "of course it matters, it's a competition". She was always very competitive when I was dancing. The next day it got to my head and I started perseverating over the one FSR that just never worked. I thought I had the resolve that I would not take apart the GLOBE to work on this FSR and I would wait until I make a new version entirely. There is a risk that I make something else much worse in the process of taking the GLOBE apart and putting it back together again to fix this one little inconvenience.
Well... I took it apart so there is no going back now.
For the life of me I still could not find a short in the circuitry that would cause those two FSRs to bleed into each other. So, I adapted the Arduino Sketch to include pin A2 on the LIS3DH, soldered a resistor to it and the other necessary connections, and tested this with one of my spare FSRs. This work around works so far. So now I just need to disconnect the actual FSR and re-connect it to this new circuitry. Then ground the loose connections from the old circuitry for this sensor. And of course pray that everything else works the way it should and nothing explodes. I guess I take more risks while under pressure with a deadline. It would be nice to have all 16 FSRs available though once it's done!
This is why learning to design and custom order a PCB is one of the first things I plan for the next GLOBE; to minimizing headaches from things shorting.
In the previous versions the colour data was sent directly from the TCS34725 colour sensor to the LEDs. This meant no matter what, as long as some sort of colour is pressed against the sensor, you will see it. However, in Max MSP, it is a bit more sensitive to the exact shade of colour and angle the colour is pressed against the sensor. Therefore, if lets say I am using a green sample, the LEDs will appear green right away, but it might not quite be the green that the Max Patch is programmed to trigger the "green" message. It would take slight adjustments for the performer to do to get it accurate. It is the equivalent of have a violin that no matter what played perfect pitch even if the fingers are technically out of tune, and everything else is following the out of tune fingers.
Long story short, we changed the Arduino sketch so that the RGB and brightness values are all sent from Max MSP to control the LEDs. This way everything is in sync and the LEDs truly reflect what the performer is both hearing and seeing. This makes it easier for the performer to use this feedback to adjust and correct their own movements in real time. This opens up more possibilities for the LEDs to be audio reactive as well. I included a screenshot example for how this is hooked up in Max MSP.
In previous versions the RGB values outputted from the TCS34725 colour sensor were also well over 500. In the past I never questioned it because it was copied from an example sketch and as long as I was receiving something I thought it was fine. As I have been working more deeply with colour lately, I realized that can't be right - typically RGB values are only between 0-255. Kevin and I went over the code and we found where the issue was. So now the values sent from the sensor to Max are correct. I had updated my colour detection Max patch to reflect this as well.
Playing with my latest piece patch I felt like there should be a larger difference in the sound quality of the different sections of the piece. So I added a chorus effect to the final mix, and use convolution to adjust how much of the chorus is present in each section.
I posted V3 of the Colour Detection bpatcher: https://github.com/CLKo1/colourdetect-maxmsp
I preparation for the competition's concert, my plan is to come up with a full patch for a piece well ahead of time. Then think of all the cool ways I can map each type of sensor to sound and make modules. This way if the musician whom I'm paired with has their own ideas for what it will sound like, I have more flexibility to program something fast. On the schedule we are supposed to collaborate in the morning and then the concert is the same day, which is a very tight deadline for a full piece with Max MSP that is also bomb proof! Or at least it is for me since my patches can get a bit complex. Usually I use two days at the very least to prepare a piece.
I basically finished preparing the "full piece" patch. I have the four main colours selecting the sections again. Sometimes I still don't quite trigger a section, but the LEDs show the proper colour. I think I will have to make it so the LEDs get their colour messages from Max as well instead of directly from the colour sensor. This way it is truly in sync with what Max is actually doing and provides more accurate visual feedback for the performer. I'll have to adjust the Arduino Sketch a little more, and possibly either the colour detection bpatcher, and/or the Arduino to Max bpatcher.
Then I just need to decide if I want to make a visuals patch to go along with this main piece patch. Also, it's still on my to-do list to go get more paint chips from Home Depot. I just have been avoiding it since COVID numbers are bad at the moment.
We updated both the Arduino Sketch and the Max MSP patch so that if the wireless connection fails, or if the battery dies, the brightness messages being sent from Max MSP can be received by the ESP via serial. This was the last thing that needed updating so that the GLOBE can be used entirely wirelessly, or plugged in, without having to re-upload a new Arduino sketch. It can also be easily modified if we want the RGB messages to be sent from Max as well.
I'm trying to figure out what I want to do for the sounds in my next piece. I have a rough idea of how I would like the piece to be played. For some reason I'm more stuck than usual on what I'd like it to sound like. I've been learning about the [ml.markov object], maybe I'll find some use for it. In the past I would work from an abstract idea. Maybe I should think of something like that and go from there. I don't know, so many maybes.
I did a full clean and re-organization of my work area. In the process I found an old arduino uno kit that was given to me. It had what looked like a much better breadboard than what I used previously, as well as little connectors that make the breadboard look cleaner when used instead of jumpers. So I re-hooked everything up with the new board, plugged the resistors into ground directly instead of connecting them with a jumper, and used the little connectors from the kit to connect the FSRs to power.
With this testing, pins 15/16 no longer bleed! I got a little bit of bleed on other pins, but I am pretty sure that it was more caused by knocking wires with my hand. Also, when this bleeding occurred, it was just like a little nudge on the pin; it was not like I was pressed on two FSRs identically, like how it was behaving before. If this happens in the final version of the new GLOBE, then it could easily be accounted for in programming.
This means there is something connecting the 15/16 pins on the current GLOBE. I am always so careful of checking all of the connections on the circuitboard though. I am suspicious of the wiring itself. Since knocking the jumper wires of my test was enough to make them bleed, it makes me think that perhaps the mess of wires inside of the GLOBE could be at fault. I still think that a problem this small is not worth taking apart the GLOBE to fix, because that risks making or worse or causing other problems. This will be improved for the next model. I hope to learn how to design my own custom PCB, and re-design the layout so that the wires that connect to it stay as neat as possible. I was just thinking about what configuration made it easiest to solder when I was first making the GLOBE, which is what resulted in the current birds nest of wires.
I'm basically improving as much as I can without having to actually build a new GLOBE. Then onwards to making my next piece! I taped an adhesive sheet to the bottom of the new spinning stand to give it some grip.
I soldered in the replacement FSR. I also extended a couple power wires that were being strained. There are several wires that are too long now, but that is better than too short and things getting unplugged or damaged.
I also took apart a bag that's fabric is made specifically for fabric paints, and sewed it into fingerless gloves. I got the measurements wrong at first, but I had just enough leftover fabric to get it right. I used one of the failed attempts as a first try at seeing where I wanted to place the colour blobs on them. Then I moved on to add the RGBY paint to the actual gloves that I will be using.
I got more paint chips for using with the stationary, 3D printed stand, because my old ones got ripped a bit. Also I wanted large rectangles with single shades and not little multiple shades on one piece. And lo and behold the RGB colours that I grabbed were not being picked up by the LEDs. This further proves my assumption that the GB paints that I initially tested were not working because the shade of the colour was too dark. The lighter samples of the old paint chips work well. So I need to make another visit to Home Depot to pickup lighter shades. The yellow, purple, and orange chips that I got worked well. Moral of the story, always plan your trips to home depot and bring your previous paint chips with you. Impulse visits to the paint section do not always work out.
There was a bug in the Arduino sketch that was introduced when we first made it so that Max MSP sent brightness values to the ESP (Oct 2021 version). The ESP was refusing to print any data through serial unless it firsts connects to the wireless network. Kevin fixed it. Now it behaves the way it did before where you can easily use either wifi or serial.
Kevin also worked on optimization. Now the loop prints much faster than previously, which is great for musical instruments. https://github.com/CLKo1/GLOBE_esp8266/tree/main/Dec19_2021_NoPass
I hooked up my new 16 FSRs to the breadboard, with the original multiplexer, and new HUZZAH feather. The results from that... well.. proved that I probably need more reliable breadboards. Still, I did notice that when I pressed on the FSRs for pins 15/16, they still bled into each other. But, pin 15 was not resting at 0, whereas pin 16 was resting at zero. I also tested each FSR individually and they all work well. I believe it's just the connections in either the wires or the breadboard itself that is causing it to go a little crazy. Now I'm wondering if I have another breadboard somewhere that I lost during one of my many moves. I don't remember having this problem the first time around with testing on a breadboard.
In the end, I'm still not sure if it is the multiplexer itself that is allowing pins 15/16 to bleed, or if it is my circuitboard and breadboard that both are messing it up. Maybe the only sure thing to do is finally learn how to design and order a custom PCB for my circuitboard.
If you are looking for a summary for my Masters thesis, it is here.