After we worked on sonifying EEG data in class, I wanted to try something on my own. I liked the “spectral” and ghostly qualities of the EEG sounds, but wondered what would happen if I tried to map the sounds of two competing sets of data — specifically stock prices. What would the Microsoft vs. Google race sound like?
I found stock quotes for the two companies at http://quotes.nasdaq.com and then massaged the downloaded data into a format I could easily read into a modified version of the Processing patch we were using in class. I made the mistake of trying to graph the data sets (containing over 2000 datapoints) using a spreadsheet program. It took forever.
What follows here are some of my notes as I worked through the process.
- Multiplied all values by 100 and rounded to get rid of decimal places
- sorted in ascending date order
- I want Google and Microsoft to duel, so I will insert blanks for dates that are missing from Google’s history.
- in ultraedit, I replace all CR/LFs with spaces so the existing program can easily read the data.
- I don’t really want to use different octave ranges for the two stocks; that might seem to give primacy to one over the other; perhaps I can change the type of base sound wave… one is a square, the other is a triangle
- what is going to happen when I scale the ranges? I can either take the total range or allow each dataset to use its own range
Initial Experiments
v1: [ listen ] google remains constant at a single pitch throughout the piece. Each dataset is using its own scale. I’m not sure I like the frequency range, either. I think I would like lower frequencies. First, I’ll try to get google out of the mud by choosing a different range…
v2: [ listen ] I changed the starting time so google doesn’t stay on 8.02 (D above middle C) the entire time. I needed to move later in the dataset since I only have 38 months of Google.
v3: [ listen ] Tried removing the drone from the times before Google starts rising, but I didn’t hear much difference
v4: [ listen ] made the scaling aware of both datasets. Now microsoft drones as google rises
v5: [ listen ] going for a longer dataset — nicer; I had the idea to do short snippets of this — making the composition out of corporate battles…. msft vs google; gm vs ford
v6: [ listen ] lower frequencies — and spread apart by a fifth (.07 in octave pitch class)
v7: [ listen ] changes the frequency relationship (spread out by .04) — I don’t like it
v8: [ listen ] lower frequency + a wider frequency spread (.11). I like the low, but the interval is weird. what would an octave and the original .07 feel like? I’d like to try different harmonics
v9: [ listen ] Interesting — but too short. I can only get 10 years of data right now. It might also be interesting to use daily market data — which could contain much more raw data for a 10 year period. The other alternative is to render fewer data points per second
Using More Data from the Dataset — Including Daily Stock Trading Volumes
I thought it might be interesting to control the intensity of the sound with the daily trading volume
My dataset looks like:
[round(closing price * 100)],[volume]
656,36140900
638,27227700
641,34314300
644,18598400
633,45610400
619,38191300
628,36933400
636,18076800
659,38905600
…
I’ll remove the CR/LF’s again and replace them with spaces so I’ll have:
656,36140900 638,27227700 641,34314300 644,18598400 633,45610400 619,38191300 628,36933400 636,18076800 659,38905600
After struggling for a bit to deal with the multiple sets of arrays, I decided to convert the program so it uses classes. This makes the data easier to access and the code more readable.
v10: [ listen ] don’t remember what I did here…
google vs msft v11: pushed the google and microsoft data through my revised code (now using volume information). I realized that frequencies were backwards, though. I want microsoft to be the low frequency.
v12: [ listen ]
Other Potential Experiments
- microsoft – left channel; google – right channel
- use the S&P500 or another index as the base level and then render the two competing stocks somewhere else in the frequency space