No instrument mapped to tone bank 0, program 52 - this instrument will not be heard
#!/usr/bin/env python#import sysimport repatt = re.compile('(\xC0|\xC1|\xC2|\xC3|\xC4|\xC5|\xC6|\xC7).')try: filein = sys.argv[1]except IndexError: print "Specify input file as an argument." sys.exit(1)try: fileout = sys.argv[2]except IndexError: fileout = '%s-out2.mid' % filein.replace('.mid', '')filein_data = open(filein, 'rb').read()open(fileout, 'wb').write(patt.sub('\1\x00',filein_data))
але краще було б просто знайти банк (patches) з потрібним інструментом
Цитата: yurchor від 2012-04-09 19:46:07але краще було б просто знайти банк (patches) з потрібним інструментомТа справа в тім, що ті мідішки треба викласти у мережі — і бути впевненим, що всі почують мелодію. Звучання ролі не грає.
В такому разі слід спочатку перевірити на найпоширенішій платформі
Цитата: yurchor від 2012-04-09 20:53:54В такому разі слід спочатку перевірити на найпоширенішій платформіВже перевірив (той, хто прислав; а в мене немає найпоширенішої, в мене лише дивацька); але треба «більш-менш гарантувати».Та ні, не треба .) просто заманулося ,)
кому треба знайде банки
#!/usr/bin/env python### Міняємо номери всіх інструментів на нуль# (всі інструменти — на 'Acoustic Grand Piano' чи як воно там зветься).#import sysimport miditry: infile = sys.argv[1]except IndexError: print "Specify input file as an argument, please." sys.exit(1)try: outfile = sys.argv[2]except IndexError: outfile = '%s-out.mid' % infile.replace('.mid', '')midi_data = midi.read_midifile(infile)print '%s' % infilefor track_idx in range(len(midi_data)): for event in midi_data[track_idx]: if isinstance(event, midi.ProgramChangeEvent): event.data = map(lambda x: 0, event.data) print event if isinstance(event, midi.SetTempoEvent): print 'BPM is %s' % event.get_bpm() # event.set_bpm(event.get_bpm()*2) pass # print eventprintmidi.write_midifile(outfile, midi_data)