MIDI or something else?

As mentioned in the previous blog post #11, it was initially planned to start using the IMU sensor. However, my supervisor and I decided that my current MIDI sending setup was not cutting it anymore. The problem is that I currently use control change to send MIDI data which is limited to the range 0-127 steps. Consequently, if I want to make a pitch shift for example, one would definitely hear the pitch jumping from step to step instead of having a smooth transition. My supervisor hence recommended sending MIDI using pitchbend values. Instead of 127 steps, a pitchbend message can be in the range 0- 16,383 which means way more steps and smoother transitions. Unfortunately, the current Arduino MIDI (USB) library I was using could not send pitchbend messages. My supervisor and I did some research and the only library that we found that could send pitchbend messages was not USB compatible.

Additionally, the general way in which both setups were transmitting sensor data via the Arduino to the laptop for further use was not ideal. The latency was high with new MIDI data sometimes coming in as slowly as every five to eight seconds according to the MIDI analyzer “MIDI View”. This of course, makes the data practically useable to fluently controlling effect parameters in almost real-time. In an effort to mitigate the issue, it was decided to abandon the idea of using the USB serial port and a MIDI USB library for transmitting the MIDI data. Instead, the idea was to use an actual MIDI cable and a “pure” MIDI library. As a result, I was tasked to go get a MIDI (DIN) jack and wire it to my Arduino so it could send the MIDI messages directly using a MIDI cable and not via the USB cable that connects the Arduino to the laptop.

Consequently, the necessary parts including a MIDI jack were bought. The MIDI jack was soldered and connected via a breadboard to the Arduino and a MIDI cable was used to connect the Arduino/breadboard to the MIDI In jack of a Steinberg audio interface. Additionally, the Arduino sketch was altered to accommodate the new MIDI library and new means of transmitting the MIDI data. Unfortunately, all these efforts were apparently in vain for the MIDI data transmission did not increase in speed. At that point in time, the reason for that was unknown and no explanation was found. With no reliable (and especially fast) way to transmit the senor data for further use in Pure Data, the whole project began to stall since a stable transmission was THE prerequisite for further testing of the attachment device, the sensor position, the Arduino code and the quest to find suitable effects and usage for the setups.

With the final presentation approaching fast, it was decided in June to try a radically different method. During an Internet research session, a YouTube video was discovered that uses serial bus communication to transmit data from an Arduino to Pure Data using the “comport” object in Pure Data. After specifying the baud rate, one can open and close the data stream coming from the Arduino and, using additional objects, one can convert the data stream to the original values sent from the Arduino. Using this method, faster data transmission could be achieved.

Leave a Reply

Your email address will not be published. Required fields are marked *