Skip to main content

Music Transformation and Generation Tool

Project description

Janus - Music Transformation

This project was created for the Senior Design Class CSC492 at North Carolina State University during the Fall 2021 semester. This project is sponsored by Mr. Michael DeHaan, an alumni of NC State. Janus allows users to transform, analyze, and generate music through many different features. Users can generate music using markov chains of various length, they can analyze existing songs through informative visualizations like chord transition graphs, and can also transform the mode, scale, or key of song.

Tech/framework used

Built with

Features

  • Markov Chain:
    • Allows users to generate new music based on an existing library of songs. A user can input as many songs as they they would like to create a markov chain and then can generate a new song using a custom token length and instrument.
  • Visualization:
    • Chord Transition Graph: Visualizes all of the chords present in a song and how often one chord follows another. This can be useful to understand common chord progressions or patterns in the music of an artist or genre.
    • Chord/Note Frequency Graph: Visualizes the frequency of all the notes or chords occuring in a song or group of songs.
  • Transformations:
    • Mode Change: Changes the mode of a song to a new given mode.

Code Example

Show what the library does as concisely as possible, developers should be able to figure out how your project solves their problem by looking at the code example. Make sure the API you are showing off is obvious, and that your code is short and concise.

Installation

Above your python script, type import janus. This will allow you to access all of our public methods.

How to use?

First, import the project using import janus. Then, you may use any of the below features within your program:

  • Markov Chain:
    • DynamicMarkovChain(name,token_length)
    • add_song(song)
    • generate_pattern(chain,instrument,arpeggio)
  • Visualization:
    • get_transition_graph(name)
    • get_notes_frequency_graph()
    • get_chord_frequency_graph()
  • Transformations:
    • change_song_key()

Contribute

Feel free to continue contributing to this project. This is an open source repository so it is completely open for others to continue building on the work that our team has provided.

Credits

This project was created by Eli Newman, Erin Litty, Nithika Aduri, James Leeder, and John Widdifield. Our sponsor is Michael DeHaan and the teaching staff is Margaret Heil and David Sturgill.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

janusmusic-1.0.1.tar.gz (3.2 MB view hashes)

Uploaded Source

Built Distribution

janusmusic-1.0.1-py3-none-any.whl (3.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page