1    # EarSketch Final Project
   2    # Firstname Lastname
   3    # ICA:  Block Number
   4    
   5    # Import Statement
   6    
   7    from earsketch import *
   8    
   9    # Variables
  10    
  11    jazzDrums = HIP_HOP_JAZZDRUMS1_4M
  12    synthDrums = HIP_HOP_SYNTHDRUMS3_2M
  13    minDrums = TECHNO_MINIMALDRUMS_2M
  14    tambourine = SOUL_TAMBOURINE_4M
  15    
  16    keys = TECHNO_ELDERSONSYNTH_2M
  17    scratch = HIP_HOP_DJSCRATCH2_2M
  18    
  19    fx1 = ELEKTRO_HOUSE_FX3_2B
  20    fx2 = ELEKTRO_HOUSE_FX4_2B # Better for Faster Ideas
  21    
  22    futureDrums = TECHNO_FUTURISTDRUMS_2M
  23    almightySynth = TECHNO_ALMIGHTYSYNTH_4M
  24    
  25    # Functions
  26    
  27    def sectionA(start, end):
  28        fitMedia(jazzDrums, 1, start, end)
  29        fitMedia(synthDrums, 2, start, end)
  30        fitMedia(keys, 3, start, end)
  31        
  32        beat1 = "0++-0++-0+0+0++-"
  33        beat2 = "0+0+0+0+0+0+0+0+"
  34        
  35        for measure in range(start, end):
  36            if measure % 4 != 0:
  37                makeBeat(synthDrums, 5, measure, beat1)
  38            if measure % 4 == 0:
  39                fitMedia(scratch, 4, measure, measure + 1)
  40                makeBeat(synthDrums, 5, measure, beat2)
  41                
  42        setEffect(2, DISTORTION, DISTO_GAIN, 0, start, 0, end)
  43    
  44    def OldsectionA(start, end):
  45        drumsA = TECHNO_ICHBEINDRUMS_2M
  46        synthA = TECHNO_ELDERSONSYNTH_2M
  47        bassA = TECHNO_OFFBEATBASS_4M
  48        
  49        fitMedia(drumsA, 1, start, end)
  50        fitMedia(synthA, 2, start, end)
  51        fitMedia(bassA, 3, start, end)
  52    
  53    def sectionB(start, end):
  54        fitMedia(futureDrums, 1, start, end)
  55        fitMedia(almightySynth, 2, start, end)
  56    
  57        # Fill Beat
  58    
  59        fillBeat = "0+--0+--0-0-0000"
  60    
  61        makeBeat(TECHNO_FUTURISTDRUMS_2M, 3, start + 3, fillBeat)
  62        makeBeat(TECHNO_FUTURISTDRUMS_2M, 3, start + 7, fillBeat)
  63    
  64    def makeBeatNegative(string):
  65        '''
  66        Returns a string with Media in rests
  67        and rests where media was in original String
  68        Example makeBeatNegative("00--")
  69        returns "--00"
  70        '''
  71        newString = ""
  72        for char in string:
  73            if char == "0" or char == "+":
  74                newString = newString + "-"
  75            if char == "-":
  76                newString = newString + "0"
  77        return newString
  78    
  79    def vibesAndDrums(start, end):
  80        
  81        setVolume(3, 0, start)
  82    
  83        hipSynthDrums6 = HIP_HOP_SYNTHDRUMS6_2M
  84        fillDrums = HIP_HOP_SYNTHDRUMS5_2M
  85        fillDrums1 = HIP_HOP_SYNTHDRUMS4_2M
  86    
  87        vibes = HIP_HOP_VIBRAPHONEMELODY1_1M
  88        vibes2 = HIP_HOP_VIBRAPHONEMELODY2_2M
  89        
  90        bass1 = HOUSE_SYNTHBASS3_8M
  91        bass2 = HIP_HOP_BASS5_4M
  92    
  93        supportBeat = "0+--0+-0+-0+0+--"
  94        supportBeat2 = "0+0+0+-0+-0+0+00"
  95        
  96        newBeat = makeBeatNegative(supportBeat)
  97        newBeat2 = makeBeatNegative(supportBeat2)
  98    
  99        fitMedia(hipSynthDrums6, 1, start, end)
 100        
 101        for measure in range(start, end):
 102            if measure % 2 == 0:
 103                makeBeat(bass1, 3, measure, supportBeat2)
 104                makeBeat(vibes2, 4, measure, newBeat2)
 105            else:
 106                makeBeat(bass1, 3, measure, supportBeat)
 107                makeBeat(vibes, 4, measure, newBeat)
 108            if measure % 4 == 0:
 109                fitMedia(fillDrums, 2, measure, measure + 1)
 110                
 111        changeVolume(3, 5, start, 5, end)
 112        setVolume(3, 0, end)
 113    
 114    def setVolume(track, volume, measure):
 115        setEffect(track, VOL_PAN, VOL_PAN_VOL, volume, measure)
 116    
 117    def changeVolume(track, startVol, startMeasure, endVol, endMeasure):
 118        setVolume(track, startVol, startMeasure)
 119        setVolume(track, endVol, endMeasure)
 120    
 121    def fadeOut(start, end):
 122        for track in range(1, getNumTracks() + 1):
 123            changeVolume(track, 0, start, -40, end)
 124    
 125    # Setup Remix
 126    
 127    init()
 128    setTempo(128)
 129    
 130    # Create Music
 131    
 132    sectionA(1, 9)
 133    sectionB(9, 17)
 134    
 135    sectionA(17, 25)
 136    sectionB(25, 33)
 137    
 138    vibesAndDrums(33, 41)
 139    
 140    sectionB(41, 49)
 141    sectionB(41, 49)
 142    
 143    fadeOut(45, 49)
 144    
 145    # Finish Command
 146    finish()
 147    
 148