A.I. Duet: A piano that responds to you
aiexperiments.withgoogle.com
aiexperiments.withgoogle.com
It seems it almost gets the concept of tone, but barely
And for some reason it worked on Firefox, but not Chrome (it doesn't even load for me)
I really don't like this new trend of throwing Deep Learning at anything without really checking whether a simple model (e.g. markov chains in this case) would give equal results. Because using a simple model wouldn't be "cool" or newsworthy...
From my research, a Markov model could potentially be viable for this demo in particular. However, it wouldn't be viable for longer generation of music where you're trying to produce an actual song. The biggest problem being that it doesn't have the concept of melody in it.
--- research after here ---
A Markov model utilized by Herfort and Rehberger [17] uses the immediate previous note in order to determine the next note against a set of probabilities. This is a fairly simple algorithm as the set of rules is not large, but it is extremely short-sighted by nature. This “first order” Markov chain is not capable of determining a probability based on a large sequence of pitches. To counteract this, “N-order” Markov chain models can be determined to look more deeply into the past, but the complexity of the rule set increases exponentially with added depth. Further, every aspect of music that is to be modeled would require its own Markov model. For instance, there would need to be a model for pitch, duration, etc. This leads to a potentially huge Markov model rule set where all chains are independent of each other. Thus, Markov chains are good at composing musical melodies on the micro level (such as a measure) but fail to produce quality music at the macro level.
[17] Rehberger, Leopold. “Composing music using AI algorithms.” GRIN Publishing GmbH. 2004. <http://www.grin.com/en/e-book/108991/composing-music-using-a....
CCGG AAG- FFEE DDC-
So the tranistion matrix contails rules like: P(C -> C) = 50% P(A -> A) = 50% P(F -> F) = 50% P(E -> E) = 50%
Which makes huge loops of the same note quite common. This makes for some really uncanny music.
on a side note I'd like to have an option to put ai on mute and have the duet run after a session, since it's extremely disorienting for a noob to play with random noise on the feedback loop
AI: long pause; holds down one random key for several seconds; boops another random key "Nailed it."
After spending a few minutes playing, I did see evidence of it occasionally tracking my chords (as long as they were very common - e.g. c major, a minor) and tempo (but only matching tempo, as in vaguely matching how fast I was playing, not actually playing in time with me). I played an extended chord sequence and it made one or two nice contributions, but mostly it was just random noise.
I wonder if this is due to lack of training data? Maybe it needs an actual data set of people specifically trading musical phrases with each other, rather than just a set of general music.
It's an amazing idea, and I can actually see it being quite interesting for things like musical phrase creation - supply the first half of a phrase and see what the machine comes up with for the second half, and tweak as appropriate. But currently it's a bit of a case of over promising and under delivering.
It may "respond" but it's a lot more like throwing electricity through a dead body than working with a competent duet partner.
Try playing the "Dukes of Hazard" horn: on your keyboard, press (without overlapping the keypresses) "LJGGGHJKLLLJ" and let the AI respond. More often than not, it'll come back with a vaguely pleasing riff on that sequence using mostly the same notes and in the same tempo.
Next, I tried putzing around on the white keys but made sure to never hit a F or F#. I wanted to see if it would try and guess which key I was playing in, C or G major. It seemed to guess C most of the time, though one time I tried hinting at G by starting out on G, it got confused and starting playing both F and F#.
I was just clicking with a mouse, so rhythm was hard to judge but overall this thing did a really bad job "complimenting" my playing!
I keep getting confused because I'm so used to the old-style tracker keys (I keep hitting J for Bb and getting B, which isn't helping my C minor improv). Also one octave isn't great, lag is killing the rhythm, and it keeps not waiting for me to finish.
Neat idea though.
(I'm curious to know whether the training set for the version shown in the demo is the same as for the live web version, as the demo sounded way better than anything I'm getting out of it - though obviously they would have cherrypicked the results for the video.)
Sample (software is piano trained with Bill Evans corpus): http://www.dailymotion.com/video/x2j39hf_somax-with-remi-fox...
I'd be interested in a version that has learned accompanying portions to many popular melodies. If I could play the right hand part of a piece and it played the left hand I'd be very impressed -- also this would actually be useful software for aspiring pianists.
I would be interested if "AI" can help me with different timbres based on the physical environment that music is playing using various sensor like air pressure, humidity, room resonance, maybe even heartbeat, perspiration ect. Make that a new dimension of information coded into the song along with pitch, timing, amp and timbre.
---
@hellofunk: If you want the ML algorithm to actually learn how to write music, at the very least, the programmer must be able to express the goal of producing musical sequences of notes.
Well, one where you don't look over at your partner and wonder if the have any clue how music works before pushing them off the piano bench.
---
@jgalloway___: I'm not sure if I'd call it an “expectation”. I just dislike it when people throw random shit at the wall and see what sticks. When you write music, you should first think how it's going to sound, convince yourself that it's plausibly good-sounding, and only then actually play it just to make sure it sounds good. If you do it the other way around (first play random stuff, then filter out what doesn't sounds good), you're a wanker.
---
@ohitsdom: I'm totally fine with improvisation driven by ideas, not random computation. Coming up with ideas on the fly is good. Passing noise as genuine ideas is not good.
This experiment does neither particularly well.
Is not the idea to see if the ML algorithm to learn how music is written?
I agree with catnaroek - this is a bad example of human learning, never mind a good example of ML.
Maybe if you could set it to "Blues" or something like that, switching training sets, it would do better, but as is it's a nonsense generator.
Im finding extracting audio features from loops the hardest part. The selection of notes is actually not as difficult as choosing a good timbre for the notes.
I could just build a random sequence generator and tell the world "I made this with tensorflow" and people would believe. I mean, none of the response sounded like music. Which is fine, but then again, what is the machine learning for, if it just sounds like random keystrokes?
How does that relate to this experiment? It's clearly not just playing random notes in the example video...
Thanks for this!