class Song: def __init__(self, tracks, length): self.song = None self.tracks = tracks self.length = length self.actual_track = 0 self.tracks_list = [] def add_track(self, track): self.tracks_list.append(track) def save_song(self, output="my_file.mid"): self.song = MIDIFile(len(self.tracks_list)) for t in self.tracks_list: self.song.addTempo(self.actual_track, t.start, t.tempo) self.add_pitches(t) self.actual_track += 1 with open(output, "wb") as output_file: self.song.writeFile(output_file) def add_pitches(self, track): for list in track.board.values(): for note in list: self.song.addNote(self.actual_track, self.actual_track, note.get_pitch(), note.time, note.duration, 100) self.song.addProgramChange(self.actual_track, self.actual_track, track.start, track.instrument)
class Midi: """Musique midi""" def __init__(self,partition,tempo): # Définition des paramètres MIDI. piste = 0 temps = 0 self.sortieMidi = MIDIFile(1) # Nom de la piste. self.sortieMidi.addTrackName(piste,temps,"Gregorien") # Tempo. self.sortieMidi.addTempo(piste,temps, tempo) # Instrument (74 : flûte). self.sortieMidi.addProgramChange(piste,0,temps,74) # À partir des propriétés de la note, création des évènements # MIDI. for note in partition: channel = 0 pitch = note.hauteur duree = note.duree volume = 127 self.sortieMidi.addNote(piste, channel, pitch, temps, duree, volume) temps += duree def ecrire(self,chemin): """Écriture effective du fichier MIDI""" binfile = open(chemin, 'wb') self.sortieMidi.writeFile(binfile) binfile.close()
class Midi: """Musique midi""" def __init__(self, partition, tempo): # Définition des paramètres MIDI. piste = 0 temps = 0 self.sortieMidi = MIDIFile(1) # Nom de la piste. self.sortieMidi.addTrackName(piste, temps, "Gregorien") # Tempo. self.sortieMidi.addTempo(piste, temps, tempo) # Instrument (74 : flûte). self.sortieMidi.addProgramChange(piste, 0, temps, 74) # À partir des propriétés de la note, création des évènements # MIDI. for note in partition: channel = 0 pitch = note.hauteur duree = note.duree volume = 127 self.sortieMidi.addNote(piste, channel, pitch, temps, duree, volume) temps += duree def ecrire(self, chemin): """Écriture effective du fichier MIDI""" binfile = open(chemin, 'wb') self.sortieMidi.writeFile(binfile) binfile.close()
class MIDInotes(object): def __init__(self, tempo=120, outfile='midi.mid'): self.tempo = tempo self.outfile = outfile self.tracks = [] def add_track(self, note_list): self.tracks.append(note_list) def add_note(self, track, channel, note): time = note[0] pitch = note[1] velocity = note[2] duration = note[3] # Now add the note. self.MIDIFile.addNote(track, channel, pitch, time, duration, velocity) def save_midi(self, instrument): # Create the MIDIFile Object with 1 track self.MIDIFile = MIDIFile(len(self.tracks)) #self.MIDIFile.addProgramChange(0, 0, 0, instrument) for i, note_list in enumerate(self.tracks): # Tracks are numbered from zero. Times are measured in beats. track = i time = 0 # Add track name, tempo and instrument change event self.MIDIFile.addTrackName(track, time, "Track %s" % i) self.MIDIFile.addTempo(track, time, self.tempo) self.MIDIFile.addProgramChange(track, 0, time, instrument) for n in note_list: if len(n) == 2: note = n[0] channel = n[1] else: note = n channel = 0 self.add_note(track, channel, note) # And write it to disk. with open(self.outfile, 'wb') as binfile: self.MIDIFile.writeFile(binfile)
class MidiWrite(OutputRajapinta): def __init__(self, max_tracks, filename): self.filename = filename self.midi = MIDIFile(max_tracks) def nuotti(self, track, channel, pitch, time, duration, volume): self.midi.addNote(track, channel, pitch, time, duration, volume) def tempo(self, track, time, tempo): self.midi.addTempo(track, time, tempo) def soitin(self, track, channel, time, program): self.midi.addProgramChange(track, channel, time, program) def kirjoita(self): file = open(self.filename, "wb") self.midi.writeFile(file) file.close()
class Midi: """Musique midi""" def __init__(self, partition, titre, tempo): # Définition des paramètres MIDI. piste = 0 temps = 0 self.sortiemidi = MIDIFile(1) # Nom de la piste. self.sortiemidi.addTrackName(piste, temps, sansaccents(titre)) # Tempo. self.sortiemidi.addTempo(piste, temps, tempo) # Instrument (74 : flûte). self.sortiemidi.addProgramChange(piste, 0, temps, 74) self.traiter_partition(partition, piste, temps) def traiter_partition(self, partition, piste, temps): """Création des évènements MIDI""" transposition = partition.transposition for neume in partition.musique: for note in ( notes for notes in neume if isinstance(notes, Note) ): channel = 0 pitch = note.hauteur + transposition duree = note.duree volume = 127 self.sortiemidi.addNote( piste, channel, pitch, temps, duree, volume ) temps += duree def ecrire(self, chemin): """Écriture effective du fichier MIDI""" with ( open(sys.stdout.fileno(), 'wb') if chemin == '-' else open(chemin, 'wb') )as sortie: self.sortiemidi.writeFile(sortie)
class MidiPlay(OutputRajapinta): def __init__(self, max_tracks, filename): self.midi = MIDIFile(max_tracks) def nuotti(self, track, channel, pitch, time, duration, volume): self.midi.addNote(track, channel, pitch, time, duration, volume) def tempo(self, track, time, tempo): self.midi.addTempo(track, time, tempo) def soitin(self, track, channel, time, program): self.midi.addProgramChange(track, channel, time, program) def kirjoita(self, file=None): import sys import io # Systeemialustan mukainen miditiedoston soittamiseen käytetty tiedosto if sys.platform == "win32": from mplaymaster.win32midi import midiDevice elif sys.platform == "darwin": from mplaymaster.darwinmidi import midiDevice else: raise ImportError( "Sori, soitto ei tue muuta kuin Windowsia ja Mac OS X:ää :(") # Haetaan soittolaite tiedoston alussa importatusta kirjastosta laite = midiDevice() # Luodaan BytesIO-objekti, joka toimii kuin bytes-tilassa avattu tiedosto tiedosto = file if file is not None else io.BytesIO() self.midi.writeFile(tiedosto) tiedosto.seek(0) # Ja kutsutaan laitteen soittofunktiota omassa säikeessään. Tämä tehdään siksi, että # ohjelma pääsee jatkamaan suoritustaan musiikin soidessa taustalla. laite.play(tiedosto)
track1 = 0 track2 = 1 time = 0 MyMIDI = MIDIFile(2) MyMIDI.addTrackName(track1, time, "Temperature MusicHI") time = time + 1 MyMIDI.addTrackName(track2, time, "Temperature MusicLOW") time = time + 1 MyMIDI.addTempo(track1, time, 540) time = time + 1 MyMIDI.addTempo(track2, time, 540) time = time + 1 MyMIDI.addProgramChange(track1, 0, time, 1) time = time + 1 MyMIDI.addProgramChange(track2, 1, time, 2) time = time + 1 #f = open("climate2010.txt") #for row in csv.reader(f): channel = 0 channel2 = 1 pitch1 = 60 pitch2 = 64 duration = 5 volume = 100 time = time + 2
track1 = 0 track2 = 1 time = 0 MyMIDI = MIDIFile(2) MyMIDI.addTrackName(track1,time,"Temperature MusicHI") time = time +1 MyMIDI.addTrackName(track2,time,"Temperature MusicLOW") time = time +1 MyMIDI.addTempo(track1,time, 540) time = time +1 MyMIDI.addTempo(track2,time, 540) time = time +1 MyMIDI.addProgramChange(track1,0, time, 1) time = time +1 MyMIDI.addProgramChange(track2,1, time, 2) time = time +1 #f = open("climate2010.txt") #for row in csv.reader(f): channel = 0 channel2 = 1 pitch1 = 60 pitch2 = 64 duration = 5 volume = 100 time = time +2
MyMIDI.addTrackName(track1, time, "Year Changes") time = time + 1 MyMIDI.addTrackName(track2, time, "Percussion") time = time + 1 #MyMIDI.addTrackName(track3,time,"Misc") #time = time +1 MyMIDI.addTempo(track1, time, beats) time = time + 1 MyMIDI.addTempo(track2, time, beats) #time = time +1 #MyMIDI.addTempo(track3,time, beats) # set voice (sound) to be played on tracks # we used General Midi sounds ( see General Midi docs ) time = time + 1 MyMIDI.addProgramChange(track1, channel, time, 12) # voice 1 = 86 fretless bass #time = time +1 #MyMIDI.addProgramChange(track2,channel10, time, 40) # voice 2 = 53 #time = time +1 #MyMIDI.addProgramChange(track3,2, time, 77) # cymbal = 119 time = time + 1 # open and read each line ( data object ) in file f = open("StormyWeather.txt") for row in csv.reader(f): # calculate pitch value from temperatures #pitch1 = 20 + winddirection_to_values(row[windDirection]) dingaLing = 1
MyMIDI.addTrackName(track1,time,"Temperature MusicHI") time = time +1 MyMIDI.addTrackName(track2,time,"Temperature MusicLOW") time = time +1 MyMIDI.addTrackName(track3,time,"Temperature MusicPrecip") time = time +1 MyMIDI.addTempo(track1,time, beats) time = time +1 MyMIDI.addTempo(track2,time, beats) time = time +1 MyMIDI.addTempo(track3,time, beats) # set voice (sound) to be played on tracks # we used General Midi sounds ( see General Midi docs ) time = time +1 MyMIDI.addProgramChange(track1,0, time, 112) # voice 1 = 86 fretless bass #time = time +1 MyMIDI.addProgramChange(track2,1, time, 112) # voice 2 = 53 time = time +1 MyMIDI.addProgramChange(track3,2, time, 119) # cymbal = 119 time = time +1 # open and read each line ( data object ) in file f = open("2015OutputCSV.txt") for row in csv.reader(f): # calculate pitch value from temperatures pitch1 = 20 + winddirection_to_values(row[windDirection]) #int(row[windDirection]) + highTempAdjustment pitch2Tmp = float(row[windSpeed]) pitch2 = int(pitch2Tmp) + lowTempAdjustment
MyMIDI.addTrackName(track1,time,"Temperature MusicHI") time = time +1 MyMIDI.addTrackName(track2,time,"Temperature MusicLOW") time = time +1 MyMIDI.addTrackName(track3,time,"Temperature MusicPrecip") time = time +1 MyMIDI.addTempo(track1,time, beats) time = time +1 MyMIDI.addTempo(track2,time, beats) time = time +1 MyMIDI.addTempo(track3,time, beats) # set voice (sound) to be played on tracks # we used General Midi sounds ( see General Midi docs ) time = time +1 MyMIDI.addProgramChange(track1,0, time, 1) # voice 1 = 86 fretless bass #time = time +1 MyMIDI.addProgramChange(track2,1, time, 112) # voice 2 = 53 time = time +1 MyMIDI.addProgramChange(track3,2, time, 73) # cymbal = 119 time = time +1 # open and read each line ( data object ) in file f = open("lunarprecipitation.txt") for row in csv.reader(f): # calculate pitch value from temperatures #pitch1 = 20 + winddirection_to_values(row[windDirection]) pitch1 = moonphase_to_values(row[moonphase])
#Import the library from midiutil.MidiFile3 import MIDIFile MyMIDI = MIDIFile(1) # Add track name and tempo. The first argument to addTrackName and # addTempo is the time to write the event. track = 0 time = 0 channel = 9 MyMIDI.addTrackName(track,time,"Sample Track") MyMIDI.addTempo(track,time, 120) time = time = 2 MyMIDI.addProgramChange(0,channel, time, 44) # voice 1 = 86 fretless bass # Add a note. addNote expects the following information: pitch = 60 duration = 10 volume = 100 duration2 = 5 # Now add the note. MyMIDI.addNote(track,channel,pitch,time,duration,volume) time = time + 1 MyMIDI.addNote(track,channel,pitch,time,duration,volume) time = time + 1.25 MyMIDI.addNote(track,channel,pitch,time,duration,volume) time = time + .5 MyMIDI.addNote(track,channel,pitch,time,duration,volume)
MyMIDI.addTrackName(track1,time,"Year Changes") time = time +1 MyMIDI.addTrackName(track2,time,"Percussion") time = time +1 #MyMIDI.addTrackName(track3,time,"Misc") #time = time +1 MyMIDI.addTempo(track1,time, beats) time = time +1 MyMIDI.addTempo(track2,time, beats) #time = time +1 #MyMIDI.addTempo(track3,time, beats) # set voice (sound) to be played on tracks # we used General Midi sounds ( see General Midi docs ) time = time +1 MyMIDI.addProgramChange(track1,channel, time, 12) # voice 1 = 86 fretless bass #time = time +1 #MyMIDI.addProgramChange(track2,channel10, time, 40) # voice 2 = 53 #time = time +1 #MyMIDI.addProgramChange(track3,2, time, 77) # cymbal = 119 time = time +1 # open and read each line ( data object ) in file f = open("StormyWeather.txt") for row in csv.reader(f): # calculate pitch value from temperatures #pitch1 = 20 + winddirection_to_values(row[windDirection])
MyMIDI.addTrackName(track1,time,"Year Changes") time = time +1 MyMIDI.addTrackName(track2,time,"Percussion") time = time +1 #MyMIDI.addTrackName(track3,time,"Misc") #time = time +1 MyMIDI.addTempo(track1,time, beats) time = time +1 MyMIDI.addTempo(track2,time, beats) #time = time +1 #MyMIDI.addTempo(track3,time, beats) # set voice (sound) to be played on tracks # we used General Midi sounds ( see General Midi docs ) time = time +1 MyMIDI.addProgramChange(track1,channel, time, 12) # voice 1 = 86 fretless bass #time = time +1 #MyMIDI.addProgramChange(track2,channel10, time, 40) # voice 2 = 53 #time = time +1 #MyMIDI.addProgramChange(track3,2, time, 77) # cymbal = 119 time = time +1 print("The instnrument is: ", BASSDRUM1) # open and read each line ( data object ) in file f = open("StormyWeather.txt") for row in csv.reader(f): # calculate pitch value from temperatures #pitch1 = 20 + winddirection_to_values(row[windDirection])
import random # Create the MIDIFile Object MyMIDI = MIDIFile(6) # Add track name and tempo. The first argument to addTrackName and # addTempo is the time to write the event. track = 0 time = 0 channel = 0 program = 0 volume = 100 #Adding instruments MyMIDI.addTrackName(track,time,"Mellow Ambience I") MyMIDI.addTempo(track,time,92) MyMIDI.addProgramChange(track,channel,time,program+53) MyMIDI.addTrackName(track+1,time,"Harpsichord") MyMIDI.addTempo(track+1,time, 92) MyMIDI.addProgramChange(track+1,channel+1,time,program+107) MyMIDI.addTrackName(track+2,time,"Percussion") MyMIDI.addTempo(track+2,time, 92) MyMIDI.addProgramChange(track+2,channel+2,time,program+47) #Saving Randomness state random.seed(1337,2) # Get pitch of note def getPitch(key, pitchOct): if (key == 'C'):