Comments (5)
There are some well-known chorale generators: DeepBach, COCONET, BachBot and maybe a dozen more, so there is definitely a lot of knowledge out there if you are interested.
Would you be able to just plug in chord progressions from other music? I think so. I guess it depends what "other" music. I generally think that the roman numeral analysis techniques work well for music between years 1700--1850, so progressions you find within music of that period will blend well.
Regarding my own research, I am more on the analysis side than on the generation side. Essentially, I want to build models that can annotate the keys and roman numerals from the score (e.g., looking at the score of your B-
example and figure out that it should be notated as I I6 IV V43/ii ii V V7 I
in B-
). This would be almost deterministic for chord block music excerpts, but it gets really messy for polyphonic textures (e.g., romantic piano music or string quartets). I think that this artificial voice leading generations will help with data augmentation. In music, we'd say that this code can produce a harmonic reduction of, say, a string quartet/piano sonata, if you have the chord annotations. An analysis model could be fed with a lot of harmonic reductions in different positions and transposed to different keys, along with the original music examples. I hope that makes sense.
I'm lagging behind the deep learning more than on the music theory, so there could definitely be some mutual feedback if you are ever interested in this. I can share some more thoughts over email.
Thanks for the license, by the way!
from harmony.
Gotcha, I can see why romantic piano music is quite difficult to analyze. But in some sense, even ambiguous annotations should be able to be handled reasonably by a language model. Shoot me an email if you'd like to talk more about NLP.
from harmony.
Hey @napulen, great to see you found this interesting. I actually had in mind updating this (and fixing some bugs) for a while now, but never got around to it, so thank you for reminding me. Will do this in the next couple days.
Feel free to do whatever you want with the code. I'll put it under the BSD3 license for compatibility with music21. I would appreciate a mention or link-back if you use it in a project, though.
from harmony.
Hey @ekzhang, thanks, that's great news!
I have been playing around with your code and it is really great!
I see that you are interested in deep learning too. I essentially want to use this to generate tons of artificial chorales for data augmentation. I understand this repo may not be your top priority, however, I'd be very happy to collaborate if you are interested. I am planning to use annotations I did myself as well as some by other researchers.
If you are not interested in collaboration or accepting PRs into this repo (just sent one), I'll definitely mention/link your work in whatever paper comes out of this.
Thanks again, and great work. It'd have taken me way more than ~200 lines to come up with something that delivers results this good.
Cheers.
(The BSD3 would be nice indeed).
from harmony.
Interesting, I'd be curious about generating artificial chorales. That sounds like a very salient problem, and I guess it was always on the back of my mind as a "next step." Would you be able to just plug in chord progressions from other music? Also, how are artificial chorales relevant for what you're working on?
Also, very cool stuff with the Haydn annotations. I'm not nearly as familiar with music theory as I am with computer science, but it looks like a lot of great work.
I just pushed some changes, including the license.
from harmony.
Related Issues (3)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from harmony.