krasse
Level 1
|
|
« on: December 11, 2012, 02:30:01 AM » |
|
I have been working for quite some time with a procedural music module that is supposed to be used for games and other interactive applications. Test it here!Some output from the module: Here is a screenshot of the editor in its current form:
It uses canvas/webgl (Three.js), jQuery UI and web audio
|
|
« Last Edit: August 08, 2013, 11:37:50 AM by krasse »
|
Logged
|
|
|
|
Vitali Kirpu
Level 1
reach your potential
|
|
« Reply #1 on: December 11, 2012, 06:31:50 AM » |
|
Wow nice!
|
|
|
Logged
|
Working on the game and trying to help others on the way!
If you ever need tips let me know! I will gladly help
|
|
|
Paul Jeffries
|
|
« Reply #2 on: December 11, 2012, 01:37:25 PM » |
|
This is awesome on a conceptual level and also I can see this being absolutely ridiculously useful. Keep up the good work man!
|
|
|
Logged
|
|
|
|
Code_Assassin
|
|
« Reply #3 on: December 11, 2012, 03:34:12 PM » |
|
I can definitely see how useful a tool like this would be useful in a Game Jam Pretty nice UI you've got going there - looking forward to seeing this released.
|
|
|
Logged
|
|
|
|
krasse
Level 1
|
|
« Reply #4 on: December 11, 2012, 03:51:41 PM » |
|
Thanks for the positive feedback! I hope you will find this useful when it goes online
|
|
|
Logged
|
|
|
|
TobiasW
|
|
« Reply #5 on: December 11, 2012, 04:18:00 PM » |
|
That sounds so good! It's hard to believe it is generated You wouldn't possibly give us a link to the current version for the Ludum Dare 25, would you? I never did any music before and that thing looks like a lifesaver.
|
|
|
Logged
|
|
|
|
krasse
Level 1
|
|
« Reply #6 on: December 12, 2012, 02:23:44 AM » |
|
That sounds so good! It's hard to believe it is generated You wouldn't possibly give us a link to the current version for the Ludum Dare 25, would you? I never did any music before and that thing looks like a lifesaver. Thanks! I am just running a local version of the system. It is not online yet. I need to get a nice dedicated/virtual server first and set everything up before, which I won't have time for Also, the server is very fragile and can crash if you give it the "wrong" input It will be ready before LD 26 though.
|
|
|
Logged
|
|
|
|
krasse
Level 1
|
|
« Reply #7 on: December 12, 2012, 02:50:55 AM » |
|
Update 1I am preparing for LD 25 and want to quickly produce songs of different kinds. This day I have been experimenting with this and produced some MP3s: It is great to try to produce songs of different kinds. You immediately get new ideas for parameters to the module. One thing that is really powerful with procedural music is that you can set up an overall template for your music and create endless variations by just changing seeds. For example, I created 4 more variants of the intense song by just randomizing the main seed: One, Two, Three, FourYou can probably hear that I locked the song structure, meter, some instruments, tempo, the drum types and what instruments should be playing in the different song parts etc. In this way you can create both very narrow and very broad music by letting the random seeds determine more or less of the content. Bye for now!
|
|
« Last Edit: December 12, 2012, 03:13:35 AM by krasse »
|
Logged
|
|
|
|
Paul Jeffries
|
|
« Reply #8 on: December 12, 2012, 03:21:44 AM » |
|
Update 1I am preparing for LD 25 and want to quickly produce songs of different kinds. This day I have been experimenting with this and produced some MP3s: It is great to try to produce songs of different kinds. You immediately get new ideas for parameters to the module. One thing that is really powerful with procedural music is that you can set up an overall template for your music and create endless variations by just changing seeds. For example, I created 4 more variants of the intense song by just randomizing the main seed: One, Two, Three, FourYou can probably hear that I locked the song structure, meter, some instruments, tempo, the drum types and what instruments should be playing in the different song parts etc. In this way you can create both very narrow and very broad music by letting the random seeds determine more or less of the content. Bye for now! *drools* Could a system like this be made to run in real-time alongside a game, so that the game could generate its own music on-the-fly to respond to what is currently going on? Or is it a bit too resource intensive for that and/or needs manual validation?
|
|
|
Logged
|
|
|
|
krasse
Level 1
|
|
« Reply #9 on: December 12, 2012, 04:26:43 AM » |
|
Could a system like this be made to run in real-time alongside a game, so that the game could generate its own music on-the-fly to respond to what is currently going on? Or is it a bit too resource intensive for that and/or needs manual validation?
This is the next step in the development. The system is currently quite resource intensive but it shouldn't be a problem to make a time-sliced version. The above songs take approx 1-2 seconds to compose for me (depending on length, not counting render time) but you can compose a single phrase in 200-300 ms. I also plan to do a lot of optimization of course Also, the system is currently written in javascript so I boldly expect some further speedup by just switching to something that can be compiled to bytecode (for example C# or Java). I don't think there is going to be a problem with validation. You maybe have to constrain the songs a bit more though. It would be fun to see what can be done if the module is packed into a Unity or Java/libgdx plugin
|
|
|
Logged
|
|
|
|
gimymblert
|
|
« Reply #10 on: December 12, 2012, 08:37:32 AM » |
|
Wow impressive, what is the exact process you use? Template based and melody generator?
|
|
|
Logged
|
|
|
|
Paul Jeffries
|
|
« Reply #11 on: December 12, 2012, 11:48:33 AM » |
|
This is the next step in the development. The system is currently quite resource intensive but it shouldn't be a problem to make a time-sliced version. The above songs take approx 1-2 seconds to compose for me (depending on length, not counting render time) but you can compose a single phrase in 200-300 ms. I also plan to do a lot of optimization of course
|
|
|
Logged
|
|
|
|
krasse
Level 1
|
|
« Reply #12 on: December 12, 2012, 12:46:10 PM » |
|
Wow impressive, what is the exact process you use? Template based and melody generator?
Many techniques are used but the most vital part is the constraint optimization planner. You basically give guidelines to the planner and it tries to optimize a cost function where "rules" for music is encoded + song preferences. You must also provide the song preferences, which is a large problem in itself . You don't want to force the user to write constraint rules but you still want to have a lot of options. Basically it is "just" a constraint optimization system combined with an abstraction to hide all that difficult constraint stuff.
|
|
|
Logged
|
|
|
|
krasse
Level 1
|
|
« Reply #13 on: December 12, 2012, 01:53:44 PM » |
|
Maybe the opposite for composers Nah, the results are not that good yet to compete with real composers. It could possibly become the music variant of SFXR though.
|
|
|
Logged
|
|
|
|
gimymblert
|
|
« Reply #14 on: December 12, 2012, 02:12:21 PM » |
|
Remind me of that: http://www.psmag.com/culture-society/triumph-of-the-cyborg-composer-8507/I have to buy his book where he explain how he does... I had participated, on the design side, on a music game where the game interpreted a small composition of the player which translate into game action. I always had been looking at this genre of stuff, i just have no knowledge about music. I'm really looking for what you will do!
|
|
|
Logged
|
|
|
|
krasse
Level 1
|
|
« Reply #15 on: December 13, 2012, 03:22:00 PM » |
|
Update 2I have refined and improved my percussion generator somewhat and felt the need to write something about that. Some background: Basically, the percussion consists of grooves and fills. Each groove has a bass, snare, ride and crash part. In the vanilla settings of the generator, there is a higher probability to select "normal" instruments to fill the different part "roles". The bass part is usually filled with bass drums and so on but there is always a chance for some other drum to fill another role. The real fun begins when you start to create some cool rythm variations for the different parts, which is what I have done/improved today. With the vanilla settings, just randomizing the main seed, the following grooves + fills popped out: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33These are just four measures where the last measure is the fill. The last ones are in 3/4 but most of them are in 4/4. I am pretty happy with the diversity of the result, but it is not always appropriate for a certain song type so I am trying to find some good and intuitive parameters to control it. Thats all! Good luck to all participants of Ludum Dare this weekend
|
|
|
Logged
|
|
|
|
gimymblert
|
|
« Reply #16 on: December 13, 2012, 05:30:08 PM » |
|
I'm sorry but you are a
|
|
|
Logged
|
|
|
|
Graham-
|
|
« Reply #17 on: December 13, 2012, 06:53:39 PM » |
|
I'm doing proc-gen music too. Nice to see some competition.
|
|
|
Logged
|
|
|
|
krasse
Level 1
|
|
« Reply #18 on: December 13, 2012, 11:48:49 PM » |
|
I'm doing proc-gen music too. Nice to see some competition.
Cool! Do you have any links to a system or any output?
|
|
|
Logged
|
|
|
|
Graham-
|
|
« Reply #19 on: December 13, 2012, 11:53:44 PM » |
|
hahah. no.
my experience is in AI design. so right now I'm working on what you could call a core "ai engine" that will power a lot of proc-gen features. music is just one of them. it will be a while before I can share something like that.
but thanks for asking. I have sketched out many of the issues I'll have to face when it comes to music. there are still many hurdles to cross. relative to my AI (proc-gen) experience my composition experience is more limited. but if you have any critical barriers you're facing I can comment on them.
|
|
|
Logged
|
|
|
|
|