I wonder how much Markov-chain modeling would be appropriate for this. I mean, if music is a language, then why not analyse it using Natural Language Processing (NLP) techniques like Markov's... :-)
I'm not familiar with Markov-chain modeling, but it might be an interesting endeavor to try to describe genres of music using first order logic ;). I suppose any of these methods could work, it's just a matter of which is easiest, and describing musical genres using logical assertions sounds even more difficult than trying to do it in natural language, which has already proven almost impossible, esp. with 20th century music.
A lot of people say that music is a mathemetical language so a more mathematical approach may tend to be more efficient. Then you can leave the details up to the algorithm, once you've given it the tools to analyze the music and a thousand pre-defined songs as guidelines. But I guess that's exaclty what looking at it as natural language, and analyzing it with Markov chain modeling would be. Once you've defined your language of notes, measures, tempos etc (a much smaller vocabulary than traditional natural language) you could let the modeling search go at it. Or something. I only have a cursory understanding of AI, and all my practical knowledge is limited to search techniques and propositional logic. I'm just musing at this point. Now, we just need to do this all on the fly with my new extern [genrefi~] :) It takes a signal input and outputs the song's genre and aesthetic quality on a scale of 1-10. You can watch your quality rating go up and down as the song progresses. I'll never write a bad song again.
Actually, when I have some time I was thinking of sitting down and writing an algorithm that chops up sound files and reasembles them. It would base its 'choices' on some desired attributes (bpm, climactic placement, choppiness/smoothness (1-10) etc.) and on some vague definitions of what is 'good' and 'bad' music. The idea is that I could feed in any sound file, eg. birds chirping, or some abstract ambient improv and it would cut it in such a way that it becomes a structered, rhythmic song of some sort. Really more of an excercise in genetic algorithms than anything practical.
-i
There has been a number of things done with Markov models, but from my experience, the music generated with them always end up sounding like strange synthetic imitations. A lot of algorithmic composition is based on Markov models. Music made with Markov models seems much more interesting when Markov models were used as the medium of expression rather than imitation.
musicbrainz might be interesting to you. Its basically a method of fingerprinting audio so that it can be identified even in different bitrates, recordings, etc. http://www.musicbrainz.org/MM/ There was some other similar software too, but I can't remember the name now.
If you want to build your own system, you can start with [bonk~] and [fiddle~] for percussive and pitched note detection.
.hc
On Thursday, Apr 15, 2004, at 09:13 America/New_York, Ian Smith-Heisters wrote:
I wonder how much Markov-chain modeling would be appropriate for this. I mean, if music is a language, then why not analyse it using Natural Language Processing (NLP) techniques like Markov's... :-)
I'm not familiar with Markov-chain modeling, but it might be an interesting endeavor to try to describe genres of music using first order logic ;). I suppose any of these methods could work, it's just a matter of which is easiest, and describing musical genres using logical assertions sounds even more difficult than trying to do it in natural language, which has already proven almost impossible, esp. with 20th century music.
A lot of people say that music is a mathemetical language so a more mathematical approach may tend to be more efficient. Then you can leave the details up to the algorithm, once you've given it the tools to analyze the music and a thousand pre-defined songs as guidelines. But I guess that's exaclty what looking at it as natural language, and analyzing it with Markov chain modeling would be. Once you've defined your language of notes, measures, tempos etc (a much smaller vocabulary than traditional natural language) you could let the modeling search go at it. Or something. I only have a cursory understanding of AI, and all my practical knowledge is limited to search techniques and propositional logic. I'm just musing at this point. Now, we just need to do this all on the fly with my new extern [genrefi~] :) It takes a signal input and outputs the song's genre and aesthetic quality on a scale of 1-10. You can watch your quality rating go up and down as the song progresses. I'll never write a bad song again.
Actually, when I have some time I was thinking of sitting down and writing an algorithm that chops up sound files and reasembles them. It would base its 'choices' on some desired attributes (bpm, climactic placement, choppiness/smoothness (1-10) etc.) and on some vague definitions of what is 'good' and 'bad' music. The idea is that I could feed in any sound file, eg. birds chirping, or some abstract ambient improv and it would cut it in such a way that it becomes a structered, rhythmic song of some sort. Really more of an excercise in genetic algorithms than anything practical.
-i
PD-list mailing list PD-list@iem.at http://iem.at/cgi-bin/mailman/listinfo/pd-list
http://at.or.at/hans/
Actually that looks more like a audio/video track database description/querying method. The question was more about how to get analysis information from an audio stream. Something I am always interested in as well.
Besides the analytical tools with orthonormal function-spaces (fourier etc.) I am also looking into classification based on the geometric/topological properties of the wave. Things like the fractal dimension of the waveform over either a short window, like fft's, or on longer segments. They use this kind of stuff to analyse heart-rythms f.i.
It is not working yet, but it seems nice for my purposes because the results are consistent but counter intuitive. Remain the problems of identifying phrases and segments. And the biggest problem for me, is that computer-analysis is almost always after the fact, the note(beginning) or the phrase. The human ear is much better at hitting a running target.
Gerard
On Thursday 15 April 2004 15:32, Hans-Christoph Steiner wrote:
musicbrainz might be interesting to you. Its basically a method of fingerprinting audio so that it can be identified even in different bitrates, recordings, etc. http://www.musicbrainz.org/MM/ There was some other similar software too, but I can't remember the name now.
On Fri, 16 Apr 2004, vanDongen/Gilcher wrote:
Besides the analytical tools with orthonormal function-spaces (fourier etc.) I am also looking into classification based on the geometric/topological properties of the wave. Things like the fractal dimension of the waveform over either a short window, like fft's, or on longer segments. They use this kind of stuff to analyse heart-rythms f.i.
Sorry, but I thought the fractal dimension (assuming Hausdorff's) doesn't make sense with mixed dimensions (such as time/space or time/amplitude) and _especially_ doesn't make sense on a noncontinuous domain, as there has to be ever-smaller details for the Hausdorff's to be noninteger.
However I can figure out how given an arbitrarily obfuscated continuous-domain function I'd find out a fractal dimension. I'd do a Fourier transform, and then convert it to logarithmic frequency (Hz->semitones), and then possibly make another Fourier on that to find periodic patterns. Theoretically, a fractal sound would show, in that latter spectrum, a periodic or near-periodic pattern that starts but does not end (converging to zero but not vanishing), but that's not really possible using discrete data: you can't do anything that makes sense past the Nykvist frequency.
I think this type of analysis (fft->log->fft) is interesting way beyond anything fractal.
And the biggest problem for me, is that computer-analysis is almost always after the fact, the note(beginning) or the phrase. The human ear is much better at hitting a running target.
We try to be predictive when following a beat. An algorithm may find where the pattern is at a given moment, and maybe at the same time as a human, but the human would stay silent until the next beat so that s/he can be on time, whereas the algorithm may not care (i.e. not designed to care) about emitting imitative beats that are on time.
Mathieu Bouchard http://artengine.ca/matju
Sorry, but I thought the fractal dimension (assuming Hausdorff's) doesn't make sense with mixed dimensions (such as time/space or time/amplitude) and _especially_ doesn't make sense on a noncontinuous domain, as there has to be ever-smaller details for the Hausdorff's to be noninteger.
Well, there are some definitions that allow you to calculate it on any curve that is sampled. It is used for detection onsets of heart-rhithm irregularities and other event-onsets in noisy environments. What you can do is to (linearly) map the time-amplitude graph to a unit square and look at the shape. There don not need to be fractal patterns for the dimension to be non integer. All it is, is a proportion between different coverings of the shape with ever smaller squares or circles. If the domain is sampled you can take the single samples as the smallest covering and compare that with the unit square. (which is why you map it to the unit square in the first place. At least that is one method.
Basically it is looking at the shape of the graph and trying to find usefull information.
Gerard
Matheiu Bouchard wrote:
We try to be predictive when following a beat. An algorithm may find where the pattern is at a given moment, and maybe at the same time as a human, but the human would stay silent until the next beat so that s/he can be on time, whereas the algorithm may not care (i.e. not designed to care) about emitting imitative beats that are on time.
I am not interested in playing imitative beats that are on time when I play piano. Or at least not always. Anyway I meant that it is a problem in a mathematical/programmers sense. Obviously you want the program to predict/anticipate somehow, but also to be able to juggle different strategies while persuing them. I am not that interested in a program that plays like a human, but I am still discovering what a computer plays like.
Gerard
On Sat, 17 Apr 2004 gml@xs4all.nl wrote:
I am not interested in playing imitative beats that are on time when I play piano. Or at least not always. Anyway I meant that it is a problem in a mathematical/programmers sense. Obviously you want the program to predict/anticipate somehow, but also to be able to juggle different strategies while persuing them. I am not that interested in a program that plays like a human, but I am still discovering what a computer plays like.
Well, to me, the ability to predict/anticipate in an improvisational setting, and the ability to imitate in realtime, are the same thing. When doing improvisation, you're just hiding the imitation and using it as input for the improvisation generator...
On Sat, 17 Apr 2004 gml@xs4all.nl wrote:
Mathiue wrote I'm not sure how discussing of a high-level musical description for a database differs from a high-level musical description for a stream.
If you look at the site, you will see that the db they describe is for things like track-name/record-label/artist.
Excuse me, which site are you talking about?
Mathieu Bouchard http://artengine.ca/matju
On Sunday 18 April 2004 12:04, Mathieu Bouchard wrote:
Well, to me, the ability to predict/anticipate in an improvisational setting, and the ability to imitate in realtime, are the same thing. When doing improvisation, you're just hiding the imitation and using it as input for the improvisation generator...
I really like this, because it looks at listening as imitation inside your head. Thanks, that is a nice metaphor/model.
snip
Excuse me, which site are you talking about?
I was talking about the site in the post I responded to:
http://www.musicbrainz.org/MM/
Mathieu Bouchard http://artengine.ca/matju
On Sunday, Apr 18, 2004, at 19:34 America/New_York, vanDongen/Gilcher
wrote:
On Sunday 18 April 2004 12:04, Mathieu Bouchard wrote:
Well, to me, the ability to predict/anticipate in an improvisational setting, and the ability to imitate in realtime, are the same thing.
When doing improvisation, you're just hiding the imitation and using it as input for the improvisation generator...I really like this, because it looks at listening as imitation inside
your head. Thanks, that is a nice metaphor/model.snip
Excuse me, which site are you talking about?
I was talking about the site in the post I responded to:
IIRC, there was a music tagging aspect to this project, but from the
site, it seems like its only the database. I remembered that there was
someone working on an algorithm to fingerprint audio in a way that
would work across different sound files formats, etc. All I could
remember was musicbrainz.
.hc
There is no way to peace, peace is the way.
-A.J. Muste
On Thu, 15 Apr 2004, Ian Smith-Heisters wrote:
I'm not familiar with Markov-chain modeling, but it might be an interesting endeavor to try to describe genres of music using first order logic ;).
First-order logic is nice, but I wouldn't try to make hard classifications, so I wouldn't use truth values as distinctions between styles, but rather create continuous metrics, possibly involving vectorspaces. Of course this can be fitted inside a first-order predicate logic context, as almost everything can... but pure logic of black/white binary oppositions seem limitative to me, so in my system truth-values wouldn't play a very central role.
A lot of people say that music is a mathemetical language so a more mathematical approach may tend to be more efficient.
More mathematical than what? Markov chains/tables are mathematical, but you seem to realise that too, so I'm not sure what you mean by more mathematical...
Once you've defined your language of notes, measures, tempos etc (a much smaller vocabulary than traditional natural language)
That is debatable. In NLP and programming-language parsing, it can be considered that there is a language in which the vocabulary is just letters and characters, and that this language is used to construct a higher-level language in which the vocabulary is made of words, and so on.
This modularisation/factorisation of a language is very much useful, and it can be seen in how compilers are usually constructed. Using Chomsky's taxonomy, a programming language is usually a contextful (type 0 or 1) language, but it is factored in a contextfree part, handled by lex/yacc parser-generators or similar, and a contextful part, parsed more explicitly. The context-free part (type 2) is in turn factored into a regular part (type 3) handled by Lex and a irregular part handled by Yacc.
How this is relevant here is that, in a factored language definition, at the level 3 the vocabulary is letters, at the level 2 the vocabulary is tokens (usually words), and at the level 1 the vocabulary is phrases/sentences/statements/... And that a musical language can be factored in the same way, or in any way felt to be appropriate. Notes may be at the base level, and scales may be higher-level, and themes may be higher-level even, and so on.
you could let the modeling search go at it. Or something. I only have a cursory understanding of AI,
so do I...
I'm just musing at this point.
so do I again =)
It takes a signal input and outputs the song's genre and aesthetic quality on a scale of 1-10.
Actually, even though I think many æsthetical judgements can be formalized, not all can, and even, who gets to decide the æsthetical rules? They tend to be very contextual and ever-changing; well, unless the Academy or the Church emits strict rules, but we're not in that era anymore =) There is a multitude of possible æsthetical models and in the end it all depends on which crowd you are trying to please -- even within _one_ so-called genre...!
Mathieu Bouchard http://artengine.ca/matju