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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

Details for the file janusmusic-1.0.1.tar.gz.

File metadata

  • Download URL: janusmusic-1.0.1.tar.gz
  • Upload date:
  • Size: 3.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0

File hashes

Hashes for janusmusic-1.0.1.tar.gz
Algorithm Hash digest
SHA256 65a1ee79c1cb5b192346bd7f9f289d5d7baa2cd01c86aa5ac9af5dd8edf216dc
MD5 2820fadd28ffb90d51976371406afdf7
BLAKE2b-256 9823814318af521c8b3137b11d9ea24cb6aa0e64e0e582d4b996d1a02b473839

See more details on using hashes here.

File details

Details for the file janusmusic-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: janusmusic-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 3.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0

File hashes

Hashes for janusmusic-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e6448307c4e0d4a63714298e64216b6f1bd30da46d33dcc5b65338fd65a69b57
MD5 4eec5c72c5785a84a394120428e55e8b
BLAKE2b-256 a824ad3c1e0dc1ec996b445cb7aafd4c91ae8504eff20f7c4130c6433352a055

See more details on using hashes here.

Supported by

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