@@Ehrmann_Gregsson And even more awesome if it takes the player's style into account; each player would in effect have their own personalized soundtrack!
@@Ehrmann_Gregsson RedDeadRedemption had something along those lines. At least to the degree that certain instruments were mixed in or not depending on the action on screen. That was pretty cool. Look up "Behind the Scenes of the Red Dead Redemption Soundtrack"
I'll copy-paste a bit from a response I gave to another comment here; "I think the key thing to remember is that, if past me were to see this program now, and being asked to "write this", I would have NO IDEA what to do. Always need to start small. Start by playing a single sound. When you got that down, play like a kick sample every quarter note following some standard BPM, 120 or so. When you got that, add snares on 2 and 4, and hihats! When you have THAT, just evolve it. Add a random chance that another kick will play on some eighth note. Randomize which crash cymbal it plays at the beginning of the beat. Randomize playing an open hihat every now and then. Then add bass. Just have it play 0's over and over. Randomize it going to different notes every 4:th note or so. Randomize which notes. Sample a guitar that plays the same notes as the bass. Etc. Once you've gotten to THAT stage, ideas on how to evolve it further will pop up in your head that you can't wait to try out! Next thing you know you have your own 10 hour video. ;) At least that's how I started this project! Start simple. Iterate, over and over again. (:" Point is, I believe anyone can do this. It only seems like a monstrosity, because I've iterated on it many times. But the foundation of the idea is really quite simple. Play samples. Randomize stuff that makes sense to randomize. If you want to start building something similiar, you can do it! I believe in you! : D
I'm not a very good coder or musician, but I know enough about both to know that what you've done with this project is incredible. Thanks for a very useful explainer on how you made this come to life!
Do you want more in-depth videos? \o/ Buy/download the music on Bandcamp: dennismartensson.bandcamp.com/album/the-infinity-construct-chapter-2 Listen to the music on Spotify; open.spotify.com/album/0d0mk08n5z8LEKn7GjZuc7?si=REsJiRRGTBuSPZL72jenLw
Yes please, that's great work that need to be continued, to seed this king of ideas in the music world and inspire other musician/coder! Have a blasting day/week/eternity^^!
As a fellow coder and fan of djent, I am extremely fascinated by this. I am very interested to hear more about the details of the code. Excellent work, cheers.
Thanks a lot! Definitely will! Also very interested if you could apply procedural generation to aid with "traditional" songwriting as well. Have toyed around with the idea of making a plugin that, given some inputs (like MIDI data), could procedurally generate drum beats or something. Would be sweet!
@@DennisMartenssonOfficial That would absolutely help non-drummers like me who are absolutely useless at programming midi drums lol, please bless us with this gift
Jesus Christ! I've been kind of on the fence about this anyway, but this has just convinced me, I really need to learn to code. This is brilliant, and I love the ideas you've had. Would love to try and build something even remotely close to what you've accomplished here. Well done. Earned you a subscriber for sure!
Learning to code is super fun! So yeah, definitely try it. : D I think the key thing to remember is that, if past me were to see this program now, and being asked to "write this", I would have NO IDEA what to do. Always need to start small. Start by playing a single sound. When you got that down, play like a kick sample every quarter note following some standard BPM, 120 or so. When you got that, add snares on 2 and 4, and hihats! When you have THAT, just evolve it. Add a random chance that another kick will play on some eighth note. Randomize which crash cymbal it plays at the beginning of the beat. Randomize playing an open hihat every now and then. Then add bass. Just have it play 0's over and over. Randomize it going to different notes every 4:th note or so. Randomize which notes. Sample a guitar that plays the same notes as the bass. Etc. Once you've gotten to THAT stage, ideas on how to evolve it further will pop up in your head that you can't wait to try out! Next thing you know you have your own 10 hour video. ;) At least that's how I started this project! Start simple. Iterate, over and over again. (:
@@DennisMartenssonOfficial Hahaha, shit man, "Start simple. Iterate, over and over again" is basically how I've lived my whole life to this point. Excellent advice, and I thank you for it :)
"C++ for beginners" by herb schildt, clear, concise language, prolly a free pdf from microsoft if you can find it takes a bit of patience and maybe luck to make it through the SDKs and API calls to create an audio out stream, but when you got that, you're free to do as you please.
@@DennisMartenssonOfficial This is gold. I’m starting today. Can I ask a general question though regarding method? I think I remember you saying you recorded each fret on your guitar to create the sounds. What are your thoughts on instead starting with midi, and then later using that to trigger something like the Odin VST and a drum plugin?
I can see that you've put a lot of time and effort into this project. Keep the videos coming, would love to see more details and the evolution of this engine.
Ok. Ya sold me. I'm 5 hours into the djent video and loving it. As someone mentioned below, proc gen tunes would be amazing in video games, particularly games that feature unique runs or at least unique situations.
i coded my (the?) first procedural lyrical song generator in 1994, released several generations since (blewm, breathcube as xoxos) and recorded many types of procedural sound. i've long encouraged others to give it a go, eg. blewm was made in 8 weeks for a kvr Developer Challenge; it's relatively primitive but all sounds are synthesized in realtime (made many physical modeling vst). in many years i see so few people who make procedural music that actually includes more than one or two voices, includes rhythm parts, sounds anywhere close to the forms of music people consume. fantastic!
Thank you so much for sharing this! I really like your process, and I think generating the sections like that is what makes this feel so much different than the usual machine learning / AI processes I've heard. Your music sounds WAY more intentional and composed, and I think that can be specifically attributed to the way you go about generating sections. I'm really excited to hear what comes from the next iteration!
Separating generation from playback allows for sound experiments that might produce the never-before heard. I imagine these songs played with cello, sax, and African percussion.
imagine these songs with a 3d rotating oscillator with feedback and a resonant filter on the feedback path ;) most people don't know what that sounds like... whereas most people know what cello sounds like...
This is insane! It's like the musical equivalent of the leap from traditional board games to video games. I seriously believe people will use these kinds of tools as the instruments of the future, thanks so much for sharing your particular process. :D
Omg, this is just amazing! And thank you a lot for the precious explanation! I'm both a musician and programmer too and I can clearly see all the amount of hard and creative work, also when I'm listening to the songs. All the different sections are so well connected with beautiful transictions, with drum fills too. And there are awesome melodies intersecting, ambients and guitar solos. Of all the different "djenerators" around the web, this is the best one :) Good job dude! P.S.: If this project will be open source one day, I'll be happy to contribute!
What's interesting to me (correct me if I'm wrong) is that because djent is a genre where the note dies very quickly, your samples don't actually sound robotic, they just sound djent. The choppiness sounds cool and actually natural to the genre. How convenient!
This is pretty incredible. The part that impresses me the most isn’t necessarily the ability to create beats, riffs, breakdowns, leads, etc. As these are all things that feel particularly easy for a computer to do, following musical principles to create something that sounds “good” should be possible. This seems like how you could end up with generated songs that sound “musical” but random. The part that I find more impressive is how things are layered and sections go together and “moments” are generated. There are times that it really feels like there was real intent to sections of songs. This bespoke method of generating music definitely has tons of hypothetical uses.
This is so insanely amazing. Incredible work T_T In your own engine too...I've heard making them from scratch is incredibly laborious lol. I would love to hear more about the section generators in detail, or what you plan on doing for the overhaul. As well as any game dev stuff you might want to talk about eventually too! Thanks for sharing your work with us ❤️
Thanks a lot! Yeah, making the engine has definitely been time-consuming, but a lot of fun! The game engine essentially just started with me wanting to learn more about how game engines work, so I tried making my own.. Then I just kept working on it because it was so much fun. : D Not for everyone though! Actually have been toying with making some game dev related videos, but that would probably be on a different channel then!
I am a huge fan of people like Anup Sastry and this music really reminds me of that. I freaking love this project. What a great idea. I am a programmer and musician but cannot really imagine how you have done all this, even with your explanation. I can completely understand why you would not necessarily want to go public with the code etc. But here's a couple of ideas for you: 1) setup a patreon and offer something like logic projects featuring the midi and some embedded samples 2) consider setting up the software on a server where some of the parameters can be tweaked and invite users to upload their own samples for the key parts, have a wall of sound to showcase user input and then generated tracks. Make sure copyright remains yours and then you can upload some of the best pieces here on your channel with credits to the users. Regardless of whether this is helpful, just want to say congrats for a brilliant project. I know what I am going to be working to this week! ;)
@@DennisMartenssonOfficial in the far future it would be cool to have a massive collection of stems/samples that can be submitted by producers/musicians for the generator to pull from.
jesus guys, (1) do your own generator, start fresh, keep your ideas in your own head, nice n clear. how do you do music? implement a clock that counts samples in your audio routine to count time. now make a signal. how do you generate rhythms, notes? any way you can. what could be simpler? see how easy it is when you start clean. (2) samples, blow them out your ass, computers were not made to play back prerecorded sounds. if you can't do anything else, play back table oscillators randomly generated from fourier transforms. if you don't start doing it yourself, what will you ever do?
We would absolutely love a follow-up that goes through examples of section-generators. And even though you said it would take too much time to go through ALL of the many small algorithms, a few examples would probably better help me understand how all of these variations can manage to be so musical. This is all so incredible and thank you so much for creating this! :)
if you catalogue algorithms instead of produce them you'll listen to more music than you generate ;) "only seven notes well a man can play" try writing an algorithm, anything, just to create a rhythmic sequence. start.
Thanks for this! I'd love to see a hands-on example of the process, even if it's a pretty short video. Popping in a riff idea, letting it generate, seeing what poops out the other end -- maybe throw in some extreme parameter tweaks or musical ideas to show the differences of what generates. I know you're about to give it an overhaul, but it'd be fun to see where it's currently at. I'm only up to track 56 (ooh good one), but I've been slowly chewing on it as BGM while reading on the couch :) Big fan of the procedural game music idea -- but also for content creators/Twitch streamers/etc, it could potentially be something that helps with DRM takedown issues. While you're lobotomizing it...are you considering throwing the new generation into MIDI format instead of sample? Would at least make velocity humanization ridiculously more functional with instrument VSTs that could handle it, and allow for some post-generation swing quantization to kick it to the next level on feel. I'm so geeked out on this (gonna stop babbling now), and loving the results so far. It's incredibly listenable. Bravo, man!
Hey, never feel bad for "babbling", I definitely don't mind it! : D Yeah, I'm planning on making more videos on this topic in the near future, showcasing some stuff it can dop! (: I actually have some half-implemented functionality for exporting everything to MIDI, might flesh that out and make it completely functional, and plug it into some more high-end VST's to see the difference! Might be a good video idea right there! (:
Holy. This is amazing, mate! I love the variations it has by randomizing sections of songs. As a fellow programmer, congratulations for creating such an awesome program, djentleman! Your program has been my go-to music during work!
This is SOOOO cool!!! I've been messing around with some generative music on a software called Usine, a visual data flow environment for music. I first got it to be able to use VSTs for live applications but then found myself going down this crazy rabbit hole of generative music. Cool stuff Dennis. Much respect!
I'm subscribed now, gonna be following. I've been listening on and off to the second volume the past few days and have compiled some of the better tracks into a smaller album for my phone. I think for marketing this project some, uploading individual songs somewhere instead of a 10 hour block would help bring in views. It's much easier to share around and say "this song was procedurally generated" than to send someone all 10 hours with timestamps or the expectation they will listen to all of it. Maybe a small, album-sized, curated collection of the best ones from each iteration of this project you put out would help it gain more traction from a metal fanbase standpoint.
obviously not including the 10 hours makes it seemingly less impressive from a technical aspect, I just know from already trying to show this to some friends of mine, people who are more interested in the music itself wanted something more tangible, and a few of them asked if I could send them a 'best of' (provided they also purchased it :) )
Definitely see what you mean. There are additional songs on Spotify as well if you want to be able to reference specific songs! (: open.spotify.com/album/0d0mk08n5z8LEKn7GjZuc7?si=e2ba4f202dae4b75
Absolutely fascinating. I've had a similar idea to help me generate phrases and sections for Psy-Trance, so that I can trigger sample banks to build live tracks on the spot at an event. This reminds me a lot of Mick Gordon's Doom soundtracks, now referred to as Argent Metal. I've since dubbed this Ar-Djent Metal and I play the 10-hour video you posted as background music while I game. Brilliant work, thank you for sharing the process!
This is a really cool project and reminds me that, if you know enough about how to build something (a song, a house, a poem), you can teach a computer how to do it. In the end, you can absolutely make music from building blocks. This is fascinating!
Wow! Dennis, this is the most interesting music-related project I've seen nowadays! Thanks for explaining it briefly. I'm super interested to see more in-detail breakdown videos! Thanks for sharing this! Cheers
Thanks for sharing - it's really interesting to see how this was put together! BTW, the product of his generator has become my go-to soundtrack for my workday. EDIT: +1 request for videos demoing specific section generators
Thank you for this great explanation! I would love to understand how the section generators work (perhaps a dive in to the code of 1 or 2 section generators would be great).
@@DennisMartenssonOfficial +1 ! It would be awesome to see a few different section generators since you mentioned they're somewhat free-form. I'd love to see some examples from different extremes that demonstrate the variance/versatility that is possible within your system, perhaps outlining common shapes or categorizations. This is seriously next-level work man! I've dabbled a bit with procedural music but what you've accomplished is beyond what I had imagined or encountered elsewhere. Very inspiring!!
As a musician, and avid djent listener, I'm absolutely blown away by this project. I'm a little sad that you didn't discuss at the end of the video what implications procedural-note-variation has on this genre (my nomenclature may need correction). Honestly, aside from Vildjarta and Meshuggah, I'm finding it increasingly difficult to find things that are interesting and innovative in Djent and Prog metal generally. This project you've created changes that Mr Martensson, this is absolute peak Djent, Thall and all. Well done sir, thank you.
Beyond excited for shared code, if you end up going that route. The concept seems like it'd help me overcome a monumental hurdle for me when it comes to song-writing. I'm pretty decent at coming up with riffs and motifs, put when it comes to keeping track of these ideas and putting them into songs, I fail miserably. If I could spend a year collecting riffs and ideas, then use something like this to spit out song ideas putting them together, it'd give me a fantastic place to work from there, while helping me learn in a structured way what works vs what doesn't work as far as song structure. Thank you for this, and for getting my gears going. Best of luck, happy New Year!
A fascinating approach, I love how you planned and organized all the section generators and how a song ends up being a lot coherent, even with all those randomized parameters. Good job!
This is absolutely fucking fantastic, and if plan on creating plugins based on the work you've done, I'm 100% buying them, you've shown how much effort and thinking you've put into this, and as a result how much creativity can result from this!
One last comment on this (sorry, I’m excited about it:) I was wondering if you could talk a bit more about how you think of parts of songs. You mentioned level of intensity and blast beats and things, but seeing a bit more about your methods and thought process would be really interesting to me anyways
No need to apologize! Essentially it's just stuff I come up with myself. So for each section, I just specify how it could fit into a song and how it can generate variations on it. (:
@@DennisMartenssonOfficial awesome thanks! I’ve started by focusing on the djent stuff, and making “chunks” of riffs like [triplets], [two short mutes and a longer open note], [an open note and two short mutes], etc… then doing something like setting a bar goal and filling that goal with randomized chunks. Does that sound like a reasonable starting point for creating riffs or did you do something smarter? After reading and looking at a ton of examples, I haven’t found a good way to create djenty sort of riffs in a completely random way
Man, this is huge. I immediately started thinking of what I would change. I think a great song has to have something which is a kinda easy listening, makes the listener remember to that theme. So I suggest to introduce 1 or 2 main themes per song which is returning in different variations, like a chorus from time to time. If we are thinking of composing a whole album of songs, that theme (or parts from that) could return in different songs also with variations.
Let me get this, and correct me if I'm wrong. 1) Pick "traits" of a song: things like BPM, Ambience Effects, length, etc. "existence of a intro/outro" treat as a trait 2) Use these traits as input for section decision section generator might produce noise each generator decides if it can do the job 3) Pick generators based on previous decisions competent generators are picked randomly weighted randomness is a type of randomness 4) Song is pieced together If I got it correctly this is in essence a Random Forest. 1) Inputs are given (traits) 2) Each input is passed to a decision tree (section generators) 3) Using all decision tree output, weight the result to get an output 4) Generate the final output Random Forest is a type of Machine Learning. However here you are not "learning" anything but creating each tree from scratch.
Amazing stuff brother! Keen to see if you have continued with this! I am a coder as well and have been developing similar riff generators and song part generators that then give influence into our band's music! Its real interesting to see it from another coders perspective and a little insight into your brain! Keen to hear more about it!
I love it man!! Your songs is very awesome! Recently, i´m creating a sound driver to my own operating system, some day i will run your procedural music on my OS.
I did something like this back in college that was much less polished and pleasing to listen to. Basically used FFT to create noise, then would code a melody/progression by hand to create something resembling music. Took me a long time and end result was pretty jank, so watching this was nostalgic and super refreshing. Cant wait to hear some more procedurally generated music my dude
This is so inspiring. I've only ever coded in Scratch and Unity, but I would love to learn Unreal, and I love your work on this project! You're an inspiration!
Very cool! I would love to hear more about individual generators. Also, I think it would be really cool if you could make a UA-cam live stream that just continuously streams procedurally generated songs.
This is fucking insane. I listened to the live stream for like half and hour last night and the computer wrote some of the hardest riffs and coolest sections I've heard lol.
this is fu*kin genius. Hats off for cracking this down. only heard Meshuggah songs can be solved using mathematics and can be programmed. Now I think I know what that means. Insane!
This is INSANE! I actually really like the music it's creating. Crazy stuff for sure! What's more insane is where we will be as humans in 10-20 years from now with all this AI and tech. Blows my mind.
Jokes aside what I truly find amazing how top-to-bottom is your thinking. Layers follow logically each other. The problem is decomposed to smaller, meaningful parts. The abstractions are spot-on, like "intensity". Sounds simple and _obvious_, but most developers would start from the solution and name it afterwards. It is indeed quite rare to have this clear abstractions in the software industry. (I am a fellow developer and metal producer.)
This is very impressive. I’d love to learn more as I have a similar approach to songwriting since I’m not a guitarist, albeit my methods are way more manual. This is a fantastic songwriting tool, as well as just a fun, pure, art machine.
Would love to see a video of how you make your different segment generators! A "top ten segment generator algorithms for generating different melody / rhythm patterns" video would be super. Are you familiar with live coding music?
Can't wait to see more in-depth and follow along as this evolves. As someone in the tech field and a metalhead this hits the spot on both sides. I hope you're able to monetize the engine, sometimes a labor of love can pay out. Imagine what you could do with a CI/CD pipeline hooked to some home automation project. New/random alarm clock song every morning. Alexa skill? "Hey Alexa, ask Djenterator to play me something new" Instead of Napalm Death playing when Bitcoin mining becomes unprofitable, drop some Djenterated stabs. Replace your doorbell with Djenterated tunes. Scrape Purpleair air quality sensor data (there's an API and json output) and map air quality to intensity so you can "hear" the air quality around you... So many ideas. Cheers.
Dennis thanks for the info. something lined up really well in songs 10863 and 10864. There was melody and major cords being riffed around. sort of happy djent tunes. like the clouds alligned. im sure it happens more than just those 2 tunes cause i only listen a bit at a time. but it was refreshing.
Hi! Thanks so much for sharing some insight into your process. This project is super exciting! Do you have any plans to implement more articulations in future versions? Just like with commercial sample libraries, I know each additional articulation increases the number of samples and overall size significantly, but it'd be a great way to introduce more realism and variety. Looking forward to future videos!
Have been on my to do list forever, haha. It was just such a time-consuming process last time I did it, I've been kinda putting it off. x) But yeah, some harmonics for example would be sweet!
@@DennisMartenssonOfficial Totally understandable. It's hard for me to wrap my head around the time it'd take to multisample an instrument like that. 😅
You have to respect the effort and the product. It's not even ai or machine learning, this is one man's programming efforts. IF YOU THINK this replaces human jobs, then you don't respect the effort.
I'm not familiar with coding and stuff like this, but it is very cool to see some insight into the creation! I would still love to see a VSTi of the sampled guitar that we can apply to midi tracks for demoing out songs, I think it sounds much better than Odin.
Glad you like it! Actually working on a VST for the guitar samples I recorded. Just needs a cople of more features and polish before it's ready to release! (:
nice this is what we have been waiting for thank u so very much for making a video explaining it. This might be one of the most innovative stuffs ive discovered and see in a while. Maybe this will be a new kind of writing music but ye it is great listening those to break the writer's block and get people to be inspired to write riffs. Really awesome stuffs man. Im subbed
This is utterly mindblowing. Amazing. I'm stunned (and THAT doesn't happen often). Well done! EDIT: A question: So right now it outputs the audio, right? Can it output the midi of the files too?
If I can ever get around to actually doing it, I've been wanting to make a song generator too. I got as far as writing a midi dynamic remapper daemon, which is handy for improvising and composing without having to worry about the song's key or scale since it'll automatically fit the song... but there's a lot more to do before it can actually generate songs on its own. I'll probably just make it drive hardware over midi though, instead of trying to implement a sound engine. Like, hook it up to a Digitakt and Blofeld, for example, and configure a few settings, and it'd spit out an entire song. But I'll need to do a ton of work before that, and most of the work is like what you described -- making a nice variety of section generators, and a sensible code structure to organize them. Not planning to do Djent though. Will probably be mostly video-gamey synth music similar to what I have on my channel, because ... well, that's what I know how to write. As for keys and scales, I was planning to generate internally using abstract in-scale notes like "1" through "8", and remap those on the fly to various keys and scales... so the user could, like, scroll through scales during playback to pick something suitable, or transpose it on the fly while using it as accompaniment, or ... whatever. The details are still pretty fuzzy since I haven't built it yet.
This is the craziest thing I've seen all year!
We are about to lose our jobs
Using something like this as a Videogame real time Soundtrack would be amazing. Sick stuff, congrats for achieving such a good result.
Definitely, would love to see more games play around with procedural music!
@@DennisMartenssonOfficial That's an interesting idea, especially if the music intensity depends on what is happening on the screen at the moment.
this would be the best direction
@@Ehrmann_Gregsson And even more awesome if it takes the player's style into account; each player would in effect have their own personalized soundtrack!
@@Ehrmann_Gregsson RedDeadRedemption had something along those lines. At least to the degree that certain instruments were mixed in or not depending on the action on screen. That was pretty cool. Look up "Behind the Scenes of the Red Dead Redemption Soundtrack"
As a student learning to code, and being the only metalhead around..this hits the spot. Cant wait for the day i am able to create such monstrosities.
I'll copy-paste a bit from a response I gave to another comment here;
"I think the key thing to remember is that, if past me were to see this program now, and being asked to "write this", I would have NO IDEA what to do.
Always need to start small. Start by playing a single sound. When you got that down, play like a kick sample every quarter note following some standard BPM, 120 or so. When you got that, add snares on 2 and 4, and hihats! When you have THAT, just evolve it. Add a random chance that another kick will play on some eighth note. Randomize which crash cymbal it plays at the beginning of the beat. Randomize playing an open hihat every now and then. Then add bass. Just have it play 0's over and over. Randomize it going to different notes every 4:th note or so. Randomize which notes. Sample a guitar that plays the same notes as the bass. Etc.
Once you've gotten to THAT stage, ideas on how to evolve it further will pop up in your head that you can't wait to try out!
Next thing you know you have your own 10 hour video. ;)
At least that's how I started this project! Start simple. Iterate, over and over again. (:"
Point is, I believe anyone can do this. It only seems like a monstrosity, because I've iterated on it many times. But the foundation of the idea is really quite simple. Play samples. Randomize stuff that makes sense to randomize. If you want to start building something similiar, you can do it! I believe in you! : D
I'm not a very good coder or musician, but I know enough about both to know that what you've done with this project is incredible. Thanks for a very useful explainer on how you made this come to life!
Thanks a lot!
Do you want more in-depth videos? \o/
Buy/download the music on Bandcamp: dennismartensson.bandcamp.com/album/the-infinity-construct-chapter-2
Listen to the music on Spotify; open.spotify.com/album/0d0mk08n5z8LEKn7GjZuc7?si=REsJiRRGTBuSPZL72jenLw
Yes please, that's great work that need to be continued, to seed this king of ideas in the music world and inspire other musician/coder! Have a blasting day/week/eternity^^!
As a fellow coder and fan of djent, I am extremely fascinated by this. I am very interested to hear more about the details of the code. Excellent work, cheers.
Awesome to hear! I'm planning on more videos like this in the future! (:
agree, im also a coder and djent lover
same. Can I license it? I want to do it for acoustic metal.
Dude people like you are pushing music into territory we could only dream about before. Please keep working on this program 🙏🏻🙏🏻❤️
Thanks a lot! Definitely will! Also very interested if you could apply procedural generation to aid with "traditional" songwriting as well. Have toyed around with the idea of making a plugin that, given some inputs (like MIDI data), could procedurally generate drum beats or something. Would be sweet!
@@DennisMartenssonOfficial That would absolutely help non-drummers like me who are absolutely useless at programming midi drums lol, please bless us with this gift
@@DennisMartenssonOfficial Hope you'll make that plugin someday, because programming drums gives me mental breakdowns every time I have to do it hah
So basically all this juicy goodness began because you didn't feel like studying one day. XD ❤️❤️❤️❤️
Don't stay in school kid : D
Hardworking people work hard, lazy people work smart :P
It's amazing what you can achieve when you have something more important to do
school sucks hard. its for sheeps
Jesus Christ!
I've been kind of on the fence about this anyway, but this has just convinced me, I really need to learn to code. This is brilliant, and I love the ideas you've had. Would love to try and build something even remotely close to what you've accomplished here.
Well done. Earned you a subscriber for sure!
Learning to code is super fun! So yeah, definitely try it. : D
I think the key thing to remember is that, if past me were to see this program now, and being asked to "write this", I would have NO IDEA what to do.
Always need to start small. Start by playing a single sound. When you got that down, play like a kick sample every quarter note following some standard BPM, 120 or so. When you got that, add snares on 2 and 4, and hihats! When you have THAT, just evolve it. Add a random chance that another kick will play on some eighth note. Randomize which crash cymbal it plays at the beginning of the beat. Randomize playing an open hihat every now and then. Then add bass. Just have it play 0's over and over. Randomize it going to different notes every 4:th note or so. Randomize which notes. Sample a guitar that plays the same notes as the bass. Etc.
Once you've gotten to THAT stage, ideas on how to evolve it further will pop up in your head that you can't wait to try out!
Next thing you know you have your own 10 hour video. ;)
At least that's how I started this project! Start simple. Iterate, over and over again. (:
@@DennisMartenssonOfficial Hahaha, shit man, "Start simple. Iterate, over and over again" is basically how I've lived my whole life to this point.
Excellent advice, and I thank you for it :)
Haha it's a good phrase to live by, indeed : D
"C++ for beginners" by herb schildt, clear, concise language, prolly a free pdf from microsoft if you can find it
takes a bit of patience and maybe luck to make it through the SDKs and API calls to create an audio out stream, but when you got that, you're free to do as you please.
@@DennisMartenssonOfficial This is gold. I’m starting today. Can I ask a general question though regarding method? I think I remember you saying you recorded each fret on your guitar to create the sounds. What are your thoughts on instead starting with midi, and then later using that to trigger something like the Odin VST and a drum plugin?
I can see that you've put a lot of time and effort into this project. Keep the videos coming, would love to see more details and the evolution of this engine.
Thanks a lot, glad you like it!
Ok. Ya sold me. I'm 5 hours into the djent video and loving it. As someone mentioned below, proc gen tunes would be amazing in video games, particularly games that feature unique runs or at least unique situations.
i coded my (the?) first procedural lyrical song generator in 1994, released several generations since (blewm, breathcube as xoxos) and recorded many types of procedural sound. i've long encouraged others to give it a go, eg. blewm was made in 8 weeks for a kvr Developer Challenge; it's relatively primitive but all sounds are synthesized in realtime (made many physical modeling vst). in many years i see so few people who make procedural music that actually includes more than one or two voices, includes rhythm parts, sounds anywhere close to the forms of music people consume. fantastic!
I think we are looking at the djenesis of something much bigger.
Haha, hopefully! : D
Thank you so much for sharing this! I really like your process, and I think generating the sections like that is what makes this feel so much different than the usual machine learning / AI processes I've heard. Your music sounds WAY more intentional and composed, and I think that can be specifically attributed to the way you go about generating sections. I'm really excited to hear what comes from the next iteration!
Thanks so much for the kind words! Really means a lot!
Separating generation from playback allows for sound experiments that might produce the never-before heard. I imagine these songs played with cello, sax, and African percussion.
Haha honestly, would be super funny to just load in a bunch of other samples for all the instruments just to see how that would sound.. x'D
imagine these songs with a 3d rotating oscillator with feedback and a resonant filter on the feedback path ;) most people don't know what that sounds like... whereas most people know what cello sounds like...
@@DennisMartenssonOfficial We NEED this. It could be awesome... or just hilarious... and quite possibly... BOTH!
@Mark Norman use Boomy and you will get all this stuff
This is insane! It's like the musical equivalent of the leap from traditional board games to video games. I seriously believe people will use these kinds of tools as the instruments of the future, thanks so much for sharing your particular process. :D
Omg, this is just amazing! And thank you a lot for the precious explanation!
I'm both a musician and programmer too and I can clearly see all the amount of hard and creative work, also when I'm listening to the songs.
All the different sections are so well connected with beautiful transictions, with drum fills too. And there are awesome melodies intersecting, ambients and guitar solos.
Of all the different "djenerators" around the web, this is the best one :)
Good job dude!
P.S.: If this project will be open source one day, I'll be happy to contribute!
Thanks a lot! Glad you liked it! And yeah, I'll definitely do an announcement of some sort if it goes open source someday!
What's interesting to me (correct me if I'm wrong) is that because djent is a genre where the note dies very quickly, your samples don't actually sound robotic, they just sound djent. The choppiness sounds cool and actually natural to the genre. How convenient!
Agree to some extent, Djent is supposed to sound a bit "robotic" in places, which definitely helps! : D
You are not only great musician, but an awesome software engineer as well 👏🏻
Thanks a lot!
This is bringing passion to another level, I hope we get to see more advanced or complex patterns if you keep going at it, this is legendary already.
Thanks a lot! Glad you like it!
This is pretty incredible.
The part that impresses me the most isn’t necessarily the ability to create beats, riffs, breakdowns, leads, etc. As these are all things that feel particularly easy for a computer to do, following musical principles to create something that sounds “good” should be possible. This seems like how you could end up with generated songs that sound “musical” but random.
The part that I find more impressive is how things are layered and sections go together and “moments” are generated. There are times that it really feels like there was real intent to sections of songs. This bespoke method of generating music definitely has tons of hypothetical uses.
Thanks a lot for the kind words!
This is so insanely amazing. Incredible work T_T In your own engine too...I've heard making them from scratch is incredibly laborious lol. I would love to hear more about the section generators in detail, or what you plan on doing for the overhaul. As well as any game dev stuff you might want to talk about eventually too! Thanks for sharing your work with us ❤️
Thanks a lot! Yeah, making the engine has definitely been time-consuming, but a lot of fun! The game engine essentially just started with me wanting to learn more about how game engines work, so I tried making my own.. Then I just kept working on it because it was so much fun. : D Not for everyone though! Actually have been toying with making some game dev related videos, but that would probably be on a different channel then!
Incredible, this makes me glad I'm studying csci
Awesome to hear!
I am a huge fan of people like Anup Sastry and this music really reminds me of that. I freaking love this project. What a great idea. I am a programmer and musician but cannot really imagine how you have done all this, even with your explanation. I can completely understand why you would not necessarily want to go public with the code etc. But here's a couple of ideas for you:
1) setup a patreon and offer something like logic projects featuring the midi and some embedded samples
2) consider setting up the software on a server where some of the parameters can be tweaked and invite users to upload their own samples for the key parts, have a wall of sound to showcase user input and then generated tracks. Make sure copyright remains yours and then you can upload some of the best pieces here on your channel with credits to the users.
Regardless of whether this is helpful, just want to say congrats for a brilliant project. I know what I am going to be working to this week! ;)
Glad you like the project! And thanks for the suggestions! : D
This is the future of music and songwriting. So, so, so sick. I haven’t been this excited about metal in a long time. Well done man
But what is there to be excited about about this? You're excited about AI making music instead of humans? That's already here.
This isn't songwriting, there is no soul.
This is amazing! Are you thinking on making any public repos for this? I sincerely applaud you for this project.
Thanks a lot! Perhaps in the future! Would need a major cleaning up and reorganizing if I made it public. (:
@@DennisMartenssonOfficial in the far future it would be cool to have a massive collection of stems/samples that can be submitted by producers/musicians for the generator to pull from.
jesus guys, (1) do your own generator, start fresh, keep your ideas in your own head, nice n clear. how do you do music? implement a clock that counts samples in your audio routine to count time. now make a signal. how do you generate rhythms, notes? any way you can. what could be simpler? see how easy it is when you start clean.
(2) samples, blow them out your ass, computers were not made to play back prerecorded sounds. if you can't do anything else, play back table oscillators randomly generated from fourier transforms. if you don't start doing it yourself, what will you ever do?
This is so interesting! Im blown away. With this method, the possibilitys are endless i think, you can feed the programm with everything.
Glad you found it interesting! : D
We would absolutely love a follow-up that goes through examples of section-generators. And even though you said it would take too much time to go through ALL of the many small algorithms, a few examples would probably better help me understand how all of these variations can manage to be so musical.
This is all so incredible and thank you so much for creating this! :)
Glad you liked it! Yeah, definitely planning a couple of videos with more deep dives into some of the concepts I mentioned in this video. (:
if you catalogue algorithms instead of produce them you'll listen to more music than you generate ;)
"only seven notes well a man can play" try writing an algorithm, anything, just to create a rhythmic sequence. start.
Thanks for this! I'd love to see a hands-on example of the process, even if it's a pretty short video. Popping in a riff idea, letting it generate, seeing what poops out the other end -- maybe throw in some extreme parameter tweaks or musical ideas to show the differences of what generates. I know you're about to give it an overhaul, but it'd be fun to see where it's currently at.
I'm only up to track 56 (ooh good one), but I've been slowly chewing on it as BGM while reading on the couch :) Big fan of the procedural game music idea -- but also for content creators/Twitch streamers/etc, it could potentially be something that helps with DRM takedown issues.
While you're lobotomizing it...are you considering throwing the new generation into MIDI format instead of sample? Would at least make velocity humanization ridiculously more functional with instrument VSTs that could handle it, and allow for some post-generation swing quantization to kick it to the next level on feel.
I'm so geeked out on this (gonna stop babbling now), and loving the results so far. It's incredibly listenable. Bravo, man!
Hey, never feel bad for "babbling", I definitely don't mind it! : D
Yeah, I'm planning on making more videos on this topic in the near future, showcasing some stuff it can dop! (:
I actually have some half-implemented functionality for exporting everything to MIDI, might flesh that out and make it completely functional, and plug it into some more high-end VST's to see the difference! Might be a good video idea right there! (:
+1 would love to see this as well. This music is incredible, so interested to learn more!
Holy. This is amazing, mate! I love the variations it has by randomizing sections of songs. As a fellow programmer, congratulations for creating such an awesome program, djentleman! Your program has been my go-to music during work!
That's awesome to hear! Thanks for the kind words!
This is SOOOO cool!!! I've been messing around with some generative music on a software called Usine, a visual data flow environment for music. I first got it to be able to use VSTs for live applications but then found myself going down this crazy rabbit hole of generative music. Cool stuff Dennis. Much respect!
This is absolutely profound. Thank you so much for the explanation!
Glad you liked it!
I'm subscribed now, gonna be following. I've been listening on and off to the second volume the past few days and have compiled some of the better tracks into a smaller album for my phone. I think for marketing this project some, uploading individual songs somewhere instead of a 10 hour block would help bring in views. It's much easier to share around and say "this song was procedurally generated" than to send someone all 10 hours with timestamps or the expectation they will listen to all of it. Maybe a small, album-sized, curated collection of the best ones from each iteration of this project you put out would help it gain more traction from a metal fanbase standpoint.
obviously not including the 10 hours makes it seemingly less impressive from a technical aspect, I just know from already trying to show this to some friends of mine, people who are more interested in the music itself wanted something more tangible, and a few of them asked if I could send them a 'best of' (provided they also purchased it :) )
Definitely see what you mean. There are additional songs on Spotify as well if you want to be able to reference specific songs! (:
open.spotify.com/album/0d0mk08n5z8LEKn7GjZuc7?si=e2ba4f202dae4b75
Bro this is insane, the potential....... Totally Game changing.... And loving the PS2 menu vibes of the background visuals
Thanks a lot! You should check out the video I just posted as well, it's kind of a followup to this video.. : D
Absolutely fascinating. I've had a similar idea to help me generate phrases and sections for Psy-Trance, so that I can trigger sample banks to build live tracks on the spot at an event. This reminds me a lot of Mick Gordon's Doom soundtracks, now referred to as Argent Metal. I've since dubbed this Ar-Djent Metal and I play the 10-hour video you posted as background music while I game. Brilliant work, thank you for sharing the process!
Thanks a lot for the kind words! Glad you like it!
This is a really cool project and reminds me that, if you know enough about how to build something (a song, a house, a poem), you can teach a computer how to do it. In the end, you can absolutely make music from building blocks. This is fascinating!
I had the exact same idea for a synthesizer, but with Unity and FMOD. This is brilliant. Thank you.
Wow! Dennis, this is the most interesting music-related project I've seen nowadays! Thanks for explaining it briefly. I'm super interested to see more in-detail breakdown videos! Thanks for sharing this! Cheers
Glad you liked it!
Thanks for sharing - it's really interesting to see how this was put together!
BTW, the product of his generator has become my go-to soundtrack for my workday.
EDIT: +1 request for videos demoing specific section generators
Glad you're liking it!
Thank you for this great explanation!
I would love to understand how the section generators work (perhaps a dive in to the code of 1 or 2 section generators would be great).
Glad you liked it! I'm definitely planning on making more videos like this, seeing all the great responses from all of you! : D
@@DennisMartenssonOfficial +1 ! It would be awesome to see a few different section generators since you mentioned they're somewhat free-form. I'd love to see some examples from different extremes that demonstrate the variance/versatility that is possible within your system, perhaps outlining common shapes or categorizations.
This is seriously next-level work man! I've dabbled a bit with procedural music but what you've accomplished is beyond what I had imagined or encountered elsewhere. Very inspiring!!
As a fellow game developer and musician, man you're a genius!
Haha, wouldn't call myself that, but thanks for the compliment! I think I'm just stubborn x'D
Yeah, j would love more videos about you explaining this. Honestly this has made me want to get into coding to implement the ideas this has given me.
Awesome to hear! Coding is super fun to learn, I'd strongly encourage it! : D
As a musician, and avid djent listener, I'm absolutely blown away by this project. I'm a little sad that you didn't discuss at the end of the video what implications procedural-note-variation has on this genre (my nomenclature may need correction). Honestly, aside from Vildjarta and Meshuggah, I'm finding it increasingly difficult to find things that are interesting and innovative in Djent and Prog metal generally.
This project you've created changes that Mr Martensson, this is absolute peak Djent, Thall and all. Well done sir, thank you.
Thanks for the kind words, glad you liked it!
Beyond excited for shared code, if you end up going that route. The concept seems like it'd help me overcome a monumental hurdle for me when it comes to song-writing. I'm pretty decent at coming up with riffs and motifs, put when it comes to keeping track of these ideas and putting them into songs, I fail miserably. If I could spend a year collecting riffs and ideas, then use something like this to spit out song ideas putting them together, it'd give me a fantastic place to work from there, while helping me learn in a structured way what works vs what doesn't work as far as song structure. Thank you for this, and for getting my gears going. Best of luck, happy New Year!
Glad you like it!
You should get some kind of Nobel prize for this. That's how great your development is.
A fascinating approach, I love how you planned and organized all the section generators and how a song ends up being a lot coherent, even with all those randomized parameters. Good job!
This is absolutely fucking fantastic, and if plan on creating plugins based on the work you've done, I'm 100% buying them, you've shown how much effort and thinking you've put into this, and as a result how much creativity can result from this!
One last comment on this (sorry, I’m excited about it:) I was wondering if you could talk a bit more about how you think of parts of songs. You mentioned level of intensity and blast beats and things, but seeing a bit more about your methods and thought process would be really interesting to me anyways
No need to apologize! Essentially it's just stuff I come up with myself. So for each section, I just specify how it could fit into a song and how it can generate variations on it. (:
@@DennisMartenssonOfficial awesome thanks! I’ve started by focusing on the djent stuff, and making “chunks” of riffs like [triplets], [two short mutes and a longer open note], [an open note and two short mutes], etc… then doing something like setting a bar goal and filling that goal with randomized chunks. Does that sound like a reasonable starting point for creating riffs or did you do something smarter? After reading and looking at a ton of examples, I haven’t found a good way to create djenty sort of riffs in a completely random way
Man, this is huge. I immediately started thinking of what I would change. I think a great song has to have something which is a kinda easy listening, makes the listener remember to that theme. So I suggest to introduce 1 or 2 main themes per song which is returning in different variations, like a chorus from time to time. If we are thinking of composing a whole album of songs, that theme (or parts from that) could return in different songs also with variations.
So cool man.
I'd love more indepth videos!
This takes insane dedication
Very smart. Keep the fire going. Congrats on your achievement.
Thanks! And will do! : D
Aww yeah thanks for a behind the scenes!! Keep kicking ass!!!
Glad you liked it! : D
This is amazing! Would love to watch more videos about this 🤟
Thanks! And that's awesome to hear. I'll see what I'll make in the future!
Let me get this, and correct me if I'm wrong.
1) Pick "traits" of a song:
things like BPM, Ambience Effects, length, etc.
"existence of a intro/outro" treat as a trait
2) Use these traits as input for section decision
section generator might produce noise
each generator decides if it can do the job
3) Pick generators based on previous decisions
competent generators are picked randomly
weighted randomness is a type of randomness
4) Song is pieced together
If I got it correctly this is in essence a Random Forest.
1) Inputs are given (traits)
2) Each input is passed to a decision tree (section generators)
3) Using all decision tree output, weight the result to get an output
4) Generate the final output
Random Forest is a type of Machine Learning. However here you are not "learning" anything but creating each tree from scratch.
Exactly!
Amazing stuff brother! Keen to see if you have continued with this! I am a coder as well and have been developing similar riff generators and song part generators that then give influence into our band's music! Its real interesting to see it from another coders perspective and a little insight into your brain! Keen to hear more about it!
Thank you for this video! This is so incredibly amazing!
Thanks a lot! Glad you liked it!
This is sick!! I'm very interested in knowing more about how you coded this! Keep the great work!
I love it man!! Your songs is very awesome! Recently, i´m creating a sound driver to my own operating system, some day i will run your procedural music on my OS.
Man I'm so impressed with this, your an unbelievable talent. The results you have produced are top level Djent.... 🤘👊
I did something like this back in college that was much less polished and pleasing to listen to. Basically used FFT to create noise, then would code a melody/progression by hand to create something resembling music. Took me a long time and end result was pretty jank, so watching this was nostalgic and super refreshing. Cant wait to hear some more procedurally generated music my dude
That's awesome! Glad you like it! (:
This is so inspiring. I've only ever coded in Scratch and Unity, but I would love to learn Unreal, and I love your work on this project! You're an inspiration!
This is brilliant
Thanks a lot!
Very cool! I would love to hear more about individual generators. Also, I think it would be really cool if you could make a UA-cam live stream that just continuously streams procedurally generated songs.
A bit of a late reply, but I have both uploaded more videos going into more detail AND have a 24/7 stream up now, check it out!
After seeing the procedurally generated Djent video, this has peaked my curiosity.
Well done! Your approach is really interesting! Thanks for sharing your work and ideas!
Thanks a lot!
This is fucking insane. I listened to the live stream for like half and hour last night and the computer wrote some of the hardest riffs and coolest sections I've heard lol.
Nik Nocturnal led me here, amazing work 😁👍
Holy f**k. Please make a longer video in which you show more pieces of code. This is fascinating as hell for a wannabe-developer.
Glad you liked it! Definitely has more videos like this planned. (:
Very cool dude. You're galaxy brain!
Thanks a lot!
Computer engineer + Musician = Mutation. Sorry I meant Musication.
What the hell dude, this is incredibly amazing. I love the Djent music.
Haha, glad you like it!
dude that's so nice
I can't wait for your new implementations!
Glad you liked it!
Absolutely loved what you did. More power to you friend!
Thanks a lot! Glad you liked it! : D
this is fu*kin genius. Hats off for cracking this down. only heard Meshuggah songs can be solved using mathematics and can be programmed. Now I think I know what that means. Insane!
Thanks a lot!
This is INSANE! I actually really like the music it's creating. Crazy stuff for sure! What's more insane is where we will be as humans in 10-20 years from now with all this AI and tech. Blows my mind.
Jokes aside what I truly find amazing how top-to-bottom is your thinking. Layers follow logically each other. The problem is decomposed to smaller, meaningful parts. The abstractions are spot-on, like "intensity". Sounds simple and _obvious_, but most developers would start from the solution and name it afterwards. It is indeed quite rare to have this clear abstractions in the software industry. (I am a fellow developer and metal producer.)
Thanks a lot for the kind words!
This is very impressive. I’d love to learn more as I have a similar approach to songwriting since I’m not a guitarist, albeit my methods are way more manual. This is a fantastic songwriting tool, as well as just a fun, pure, art machine.
Glad you like it! Planning on doing more videos on this topic! (:
Very interesting! And sounds awesome!
Thanks!
Thanks for taking the time to make this video even for us simple mortals who don't know how to code
Haha, thank YOU for watching : D
I am progging a song structure generator for giving myself boundaries when coming up with ideas, reminds me a lot of this project.
That's awesome!
Would love to see a video of how you make your different segment generators! A "top ten segment generator algorithms for generating different melody / rhythm patterns" video would be super. Are you familiar with live coding music?
Can't wait to see more in-depth and follow along as this evolves. As someone in the tech field and a metalhead this hits the spot on both sides. I hope you're able to monetize the engine, sometimes a labor of love can pay out.
Imagine what you could do with a CI/CD pipeline hooked to some home automation project. New/random alarm clock song every morning. Alexa skill? "Hey Alexa, ask Djenterator to play me something new"
Instead of Napalm Death playing when Bitcoin mining becomes unprofitable, drop some Djenterated stabs.
Replace your doorbell with Djenterated tunes.
Scrape Purpleair air quality sensor data (there's an API and json output) and map air quality to intensity so you can "hear" the air quality around you...
So many ideas.
Cheers.
Hahaha damn, these are some great ideas x'D
I want a more in depth video on how to code something like this!!!!
Working on more videos ;)
This is the coolest thing I’ve seen since Pat Metheny’s Orchestrion. If these two concepts were combined this music could be played live.
Dennis thanks for the info. something lined up really well in songs 10863 and 10864. There was melody and major cords being riffed around. sort of happy djent tunes. like the clouds alligned. im sure it happens more than just those 2 tunes cause i only listen a bit at a time. but it was refreshing.
Wow, Absolutely amazing!!!! There is nothing I can say that has not already been said. Genius work \m/
Thanks a lot!!
Love this. Also software engineer. Inspiring quality!
Sounds pretty good.
Amazing project!
Thanks a lot!
Inspired af, love it!
Awesome to hear! And thanks!
Now I want 10 hours of procedurally generated fusion and funk :D
Hi! Thanks so much for sharing some insight into your process. This project is super exciting! Do you have any plans to implement more articulations in future versions? Just like with commercial sample libraries, I know each additional articulation increases the number of samples and overall size significantly, but it'd be a great way to introduce more realism and variety. Looking forward to future videos!
Have been on my to do list forever, haha. It was just such a time-consuming process last time I did it, I've been kinda putting it off. x) But yeah, some harmonics for example would be sweet!
@@DennisMartenssonOfficial Totally understandable. It's hard for me to wrap my head around the time it'd take to multisample an instrument like that. 😅
You have to respect the effort and the product. It's not even ai or machine learning, this is one man's programming efforts. IF YOU THINK this replaces human jobs, then you don't respect the effort.
Wow this is amazing, thanks for making this explainer video
I'm not familiar with coding and stuff like this, but it is very cool to see some insight into the creation! I would still love to see a VSTi of the sampled guitar that we can apply to midi tracks for demoing out songs, I think it sounds much better than Odin.
Glad you like it! Actually working on a VST for the guitar samples I recorded. Just needs a cople of more features and polish before it's ready to release! (:
Djenterator class... hehe
Haha, I mean, every project needs a catchy project name.. : D
Machines As Leaders
Hahaha x'D
YASSS SO HYPED FOR THIS!
yaaas
nice this is what we have been waiting for thank u so very much for making a video explaining it. This might be one of the most innovative stuffs ive discovered and see in a while. Maybe this will be a new kind of writing music but ye it is great listening those to break the writer's block and get people to be inspired to write riffs. Really awesome stuffs man. Im subbed
Thanks for the kind words! Glad you liked it! : D
This is utterly mindblowing. Amazing. I'm stunned (and THAT doesn't happen often). Well done!
EDIT: A question: So right now it outputs the audio, right? Can it output the midi of the files too?
Glad you like it!
Currently it has functionality for exporting MIDI tracks as well as all of the multitracks for each song. (:
If I can ever get around to actually doing it, I've been wanting to make a song generator too. I got as far as writing a midi dynamic remapper daemon, which is handy for improvising and composing without having to worry about the song's key or scale since it'll automatically fit the song... but there's a lot more to do before it can actually generate songs on its own.
I'll probably just make it drive hardware over midi though, instead of trying to implement a sound engine. Like, hook it up to a Digitakt and Blofeld, for example, and configure a few settings, and it'd spit out an entire song. But I'll need to do a ton of work before that, and most of the work is like what you described -- making a nice variety of section generators, and a sensible code structure to organize them.
Not planning to do Djent though. Will probably be mostly video-gamey synth music similar to what I have on my channel, because ... well, that's what I know how to write.
As for keys and scales, I was planning to generate internally using abstract in-scale notes like "1" through "8", and remap those on the fly to various keys and scales... so the user could, like, scroll through scales during playback to pick something suitable, or transpose it on the fly while using it as accompaniment, or ... whatever. The details are still pretty fuzzy since I haven't built it yet.