Skip to content

A genetic algorithm to create classical music after being seeded with a random input of .midi files. For CS480 - AI -Truman State University

Notifications You must be signed in to change notification settings

ShowMeTheRoapes/JohannSebastianBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues MIT License


Logo

Johann Sebastian Bot

A genetic algorithm that creates small musical compositions, exported as MIDI files.
Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Roadmap
  3. FAQ
  4. Contributing
  5. License
  6. Author

About The Project

Johann Sebastian Bot is a genetic algorithm created by Dustin Roan, Jeremy Schmich, and Alex Hoopes as a project for their Artificial Intelligence course (CS480).

The idea was to generate a number of random pieces of music split into different "populations", objectively measure each piece of music's quality, and then mix the best members of each population to form new pieces of music. Add in some more randomly generated pieces of music and perform this same process over several thousands of generations, and voila! You will have some small pieces of music that sound pretty decent. :)

Feel free to download and play any of the Sample.mid files to see Johann's work in action!

Built With

This was built purely in Python - we used a couple small packages in order to play the music and generate MIDI files, but that's all that was used.

How To Run

  • Docker

    1. docker compose build
    2. docker compose up
    3. Run will show up in ./currentRun directory
  • Python

    1. pip install -r requirements.txt
    2. python bot.py
    3. Run will show up in ./currentRun directory

Roadmap

It has been a while since we've worked on this project, and honestly if we were to work on it again we might just start from scratch and build a Johann v2.0.

That being said, our general ideas for continuing would be to make the music more complex, include other instruments aside from the single MIDI piano, and maybe even develop some kind of website to host the music that Johann Sebastian Bot would create!

See the open issues for a list of proposed features (and known issues).

FAQ

We haven't had any frequently asked questions yet but this is where they'll go. :)

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the GPL 2.0 License. See LICENSE for more information.

Author

Authors:

About

A genetic algorithm to create classical music after being seeded with a random input of .midi files. For CS480 - AI -Truman State University

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages