~Proceedings ICMCISMCI2014 14-20 September 2014, Athens, Greece The bluetooth communication itself required optimizations. Next we describe the process by which we assessed the performance of the bluetooth connection and the approach to achieve satisfactory performance. We used a number of metrics. These are: Throughput: We measured throughput as the amount of data received in a given message on the MoveOSC iOS app divided by the time it takes between receiving two messages from the MoveOSC Pebble app on the MoveOSC iOS app. Throughput can be determined on both the iOS and Pebble components of MoveOSC. Note that the throughput as we perceive is actually lower than the throughput that the Pebble achieves due to the overhead of Pebble's API being a layer above the Bluetooth protocol. Throughput also takes into consideration intentionally dropped messages - sometimes we intentionally do not send messages from the watch because we know that a backlog of messages has occurred. These intentionally dropped messages will show up as decreased throughput. Throughput Consistency and Message Success Rate: Another metric for performance is the message success rate. If data is retrieved at a constant interval, any data that is not sent decreases the consistency of the data being received on the smartphone. This means that actions taken on the watch will not be as "live" as possible. We measure success rate by taking the number of successful messages sent from the watch divided by the total number of messages sent from the watch. This calculation must be performed on the Pebble watch since only the Pebble software knows whether a message was sent or dropped. Smoothness and Minimal Data Chunking: The final metric we will discuss is the "smoothness" of the data being received on the MoveOSC iOS application component. The smoothness of the data that is flowing from the MoveOSC Pebble application to the MoveOSC iOS application is directly correlated to the batch size of accelerometer measurements. Because of this correlation we determine smoothness by taking the inverse of the accelerometer data batch size multiplied by the measurement frequency. This determines the number of measurements attempted to be sent to the MoveOSC iOS application per second. This measurement is important because it ensures that data that is being sent to the iOS application is usable. For example, one can imagine a scenario where the watch sends data infrequently, but the throughput is still high because the amount of data sent from the watch to the phone is large (one may want to do this to minimize the overhead of sending many messages). However, the example clearly shows that the system is not optimal because users would not be able to hear the effects of their movements in real-time. 4.1.1 Finding the Optimal Parameters for Maximum Bluetooth Performance The simplest algorithm for the Pebble application was to just initially set the batch count, measurement frequency, and inbox / outbox size. This approach unfortunately resulted in inconsistent performance. We tried setting these parameters in different ways to maximize Bluetooth performance, but this mechanism did not perform well. We tried a number of more complex algorithms to try and achieve better Bluetooth performance. Our first algorithm attempted to "back off" sending messages once a certain amount of messages were sent unsuccessfully. When a batch of accelerometer data is sent, a status message is returned. The Pebble smart watch app then counts the number of success versus failure messages (+1 for success, -1 for failure). If the counter reaches zero, the app waits a few cycles to start sending data again. We perceived that this resulted in better transmission speeds compared to using the simple algorithm mentioned above. We found that the iOS companion app had little to do with the Bluetooth data transmission issues. However, we suspect that these issues arise because of the protocol that is used for transmitting data between the Pebble smart watch and the companion iOS app. Interestingly, we found that when using the Pebble accelerometer data for OSC at the same time as using either the iOS accelerometer or gyroscope data, the iOS motion data greatly suffered in smoothness in its measurements. A likely source for this issue may be the Pebble API library code on the iOS side. Because of this, we recommended that users not use the Pebble accelerometer data at the same time as the iOS motion data in the current version. We assume that future version of Pebble will overcome these restrictions. 4.1.2 Interoperability When the watch sends data to the smartphone, it specifies both how much accelerometer data it is sending as well as the accelerometer data itself. This allowed us to easily modify the aforementioned parameters on the watch without needing to modify the iOS component as well. 5. MOBILE DEVICE INTEROPERATION For our purposes, we used both the iOS and smart watch frameworks to integrate with urMus [17] to receive Pebble accelerometer data via Bluetooth 4.0. urMus is an opensource framework for mobile music performance and offers many of the capabilities necessary for this project. In particular Bonjour/ZeroConf and OSC networking capabilities are readily available [19]. The iOS application utilizes the Pebble iOS SDK to seamlessly receive data from the smart watch. The iOS application connects to any Pebble in close range. The Pebble accelerometer data is received in batches - as described in the previous section - and is parsed and passed along to the urMus processing unit. urMus offers two ways to integrate sensor data. The first is as part of its dataflow processing engine [20], the second is as part of its Lua event mechanism. We extended urMus to allow Pebble to show up as input in both modalities. The dataflow version as part of urMus' default interface can be seen in Figure 2. Lua event integration is achieved by adding a new event called OnPebbleAccelerate to urMus' event structure. When new accelerometer data arrives via bluetooth, the event is triggered and Lua functions registered to it will - 694 -
Top of page Top of page