The piece of making music by Python API, Earsketch. It is interesting.
-------------------------------------------------------------
EarSketch helps you learn core topics in computer science, music, and music technology in a fun, engaging environment. You learn to code in Python or JavaScript, two of the most popular programming languages in the world, while manipulating loops, composing beats, and applying effects to a multi-track digital audio workstation. To learn more about EarSketch, visit http://earsketch.gatech.edu.
-------------------------------------------------------------
This music was generated by the following code:
# python code
# script_name:Projecyt.py
#
# author:Jeffrey Wang
# description:Try to mix music
#
from earsketch import *
from random import *
init()
setTempo(120)
# assign track numbers
drumTracks = [1, 2, 3]
introTrack = 4
bassTrack = 5
melodyTrack = 6
sfxTrack = 7
endTrack = 8
def transition(startMeasure):
# Inserts SFX to help transition. This is made as a function for code reusability.
fitMedia(ELECTRO_SFX_WHITENOISE_SCATTER_001, sfxTrack, startMeasure, startMeasure + 2)
#------------#
# Intro #
#------------#
fitMedia(RD_ELECTRO_SYNTHLEAD_10, introTrack, 1, 5)
fitMedia(RD_ELECTRO_SYNTHLEAD_3, introTrack, 5,6)
#------------#
# Transition #
#------------#
transition(6)
#-----------#
# A section #
#-----------#
drumsStartMeasure = 8
bassStartMeasure = 8
# build drums
drumAudio = [ELECTRO_DRUM_MAIN_LOOPPART_001, OS_CLOSEDHAT02, OS_SNARE04]
kickBeatString = "0-------0-------"
hatBeatString = "0-0-0-0-0-0-0-0-"
snareBeatString = "----0-------0---"
for i in range(8): # put 8 measures of drums in with the beat strings above
makeBeat(drumAudio[0], drumTracks[0], drumsStartMeasure + i, kickBeatString)
makeBeat(drumAudio[1], drumTracks[1], drumsStartMeasure + i, hatBeatString)
makeBeat(drumAudio[2], drumTracks[2], drumsStartMeasure + i, snareBeatString)
# build 8 measures of bass
bassAudio = [HIPHOP_FUNKBASS_001, HIPHOP_SYNTHBASS_001, HIPHOP_SYNTHBASS_002,
RD_EDM_RAZORBASS_1] # these need a 0.125 offset to be on beat
fitMedia(bassAudio[0], bassTrack, bassStartMeasure, bassStartMeasure + 2)
fitMedia(bassAudio[1], bassTrack, bassStartMeasure + 2, bassStartMeasure + 4)
fitMedia(bassAudio[2], bassTrack, bassStartMeasure + 4, bassStartMeasure + 6)
fitMedia(bassAudio[3], bassTrack, bassStartMeasure + 6, bassStartMeasure + 8)
# build 8 measures of melody
# randomly choose from these for the melody
melodyAudio = [YG_ALT_POP_GUITAR_1, YG_ALT_POP_GUITAR_2, YG_ALT_POP_GUITAR_3,
ELECTRO_ANALOGUE_LEAD_012]
melodyStartMeasure = 8
fitMedia(melodyAudio[1], melodyTrack, melodyStartMeasure, melodyStartMeasure + 4)
fitMedia(melodyAudio[0], melodyTrack, melodyStartMeasure + 4, melodyStartMeasure + 8)
#-----------#
# B section #
#-----------#
drumsStartMeasure = 16
bassStartMeasure = 16
melodyStartMeasure = 16
# build drums
drumAudio = [ELECTRO_DRUM_MAIN_LOOPPART_001, OS_CLOSEDHAT02, OS_SNARE04]
kickBeatString = "0-----0-0-------"
hatBeatString = "0-0-0-0-0-0-0-00"
snareBeatString = "----0-------0---"
for i in range(8): # put 8 measures of drums in with the beat strings above
makeBeat(drumAudio[0], drumTracks[0], drumsStartMeasure + i, kickBeatString)
makeBeat(drumAudio[1], drumTracks[1], drumsStartMeasure + i, hatBeatString)
makeBeat(drumAudio[2], drumTracks[2], drumsStartMeasure + i, snareBeatString)
# build 8 measures of bass
bassAudio = [HIPHOP_FUNKBASS_001, HIPHOP_SYNTHBASS_001, HIPHOP_SYNTHBASS_002,
RD_EDM_RAZORBASS_1] # these need a 0.125 offset to be on beat
fitMedia(bassAudio[0], bassTrack, bassStartMeasure, bassStartMeasure + 2)
fitMedia(bassAudio[1], bassTrack, bassStartMeasure + 2, bassStartMeasure + 4)
fitMedia(bassAudio[0], bassTrack, bassStartMeasure + 4, bassStartMeasure + 6)
fitMedia(bassAudio[1], bassTrack, bassStartMeasure + 6, bassStartMeasure + 8)
# build 8 measures of melody
# randomly choose from these for the melody
melodyAudio = [YG_ALT_POP_GUITAR_1, YG_ALT_POP_GUITAR_2, YG_ALT_POP_GUITAR_3,
ELECTRO_ANALOGUE_LEAD_012]
fitMedia(melodyAudio[1], melodyTrack, melodyStartMeasure, melodyStartMeasure + 4)
fitMedia(melodyAudio[3], melodyTrack, melodyStartMeasure + 4, melodyStartMeasure + 8)
#------------#
# End #
#------------#
fitMedia(ELECTRO_SFX_WHITENOISE_SCATTER_007, endTrack, 24, 26)
#------------#
# Add Effect #
#------------#
# This effect adds some distortion to our signal.
#setEffect(6, DISTORTION, DISTO_GAIN, 0, 0, 0, 0) # start with no distortion
#setEffect(6, DISTORTION, DISTO_GAIN, 0, 24, 20, 30) # start increasing distortion to melody at measure 24
setEffect(8, DISTORTION, DISTO_GAIN, 50,24,0,26 ) # shut it down in 1 measure
#---------#
# Finish #
#---------#
finish()
-------------------------------------------------------------
To load this track in EarSketch, visit https://earsketch.gatech.edu/earsketch2/#?sharing=xn0283NCaHRBzfWiU9YeDQ
-------------------------------------------------------------
soundcloud.com