
So to find when pad was hit with higher accuracy (1ms) would require using multiple frames and interpolating the motion between them.

However even at 120 FPS, which some modern cameras/smartphones can do, there is 8.33 ms per frame. My first idea was to use a high-speed camera, using the video image to determine when pad is hit and the audio to detect when sound comes from the computer. And to have concrete, objective data to go by, we need to measure it. So this is what we must be able to observe in order to evaluate current performance and the impact of attempted improvements. For a MIDI controller that means the end-to-end latency, from hitting the pad until the sound triggered is heard. Testing latencyįor an interactive system like this, what matters is the performance experienced by the user. A synthesizer on the computer turns the notes into sound.
SOUND NORMALIZER ARDUINO PC
An Arduino board processes the sensor data and sends MIDI notes over USB to a PC or mobile device. To split this into two boards and try for yourself split the above file at the the 1 sample switch and use 2 digital outputs and inputs for the data stream and the clock.Dhang: A MIDI controller using capacitive touch sensors for triggering. Keep in mind that I used the R2015B version of MATLAB and the same version is required to open and further edit these files i apologize for this inconvenience. In addition to that I hoped to improve the sampling rate by using a method that altered instead of each bit maybe 4 or 5 bits at a time.īelow are the receiver and transmitter simulink files. Thus from here on out, I began to study clock recovery and various signal transmission methods to resolve this issue. Data was only able to be read and decomposed correctly upon multiple hard resets on the receiver board and only remained in sync for several minutes as a time. It was physically impossible to get the clock/data lines to be read properly due to the desynced internal clocks of two separate boards. When it came to the actual real world implementation of this, there were problems.to say the least. Thus concludes the first “working” model of a dual channel transmitter and receiver which needs a clock line and digital data line. Although it reads uint16 numbers only 10 of the 16 bits are used meaning that the max value is 4095. Although this doesn’t increase the resolution of the output by any means, it allows one to fully use the output range of the Due’s DAC which reads uint16 numbers. The only thing done her is to scale the input, 0-15, to values of, 0-4050.

Luckily we do not have to do the block diagram for the DAC.

This is done so that the data comprised of A0B0A1B1A2B2 can be converted into two seperate data lines of.įollowing this a delay is applied to the second channel in order to “sync” the two channels again. The following switch is used to help select between the data line and ground. Again the 1 sample reset switches are reset/triggered on opposite edges to help separate each channel. Since the image above is a bit convoluted the following images will discuss eat component of the system.Īs shown above there are 2 input lines, data split between two 1 sample reset switches and the clock between two regular switches.
