[Loris-cvs] farm/morphing morph_bass_bassoon.py, 1.2, 1.3 morph_raga_tbn.py, 1.2, 1.3
C++ class library for sound analysis, synthesis, and morphing
Brought to you by:
kfitz
|
From: Kelly F. <kf...@us...> - 2010-01-17 16:51:41
|
Update of /cvsroot/loris/farm/morphing In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv12057 Modified Files: morph_bass_bassoon.py morph_raga_tbn.py Log Message: updated raga-tbn morphing script to behave like other scripts in the Loris farm, with tags, etc. Index: morph_bass_bassoon.py =================================================================== RCS file: /cvsroot/loris/farm/morphing/morph_bass_bassoon.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** morph_bass_bassoon.py 11 Sep 2007 05:36:02 -0000 1.2 --- morph_bass_bassoon.py 17 Jan 2010 16:51:33 -0000 1.3 *************** *** 14,22 **** has been "improved". ! Last updated: 10 Sep 2007 by Kelly Fitz """ print __doc__ ! import loris, time print """ --- 14,22 ---- has been "improved". ! Last updated: 28 Sep 2009 by Kelly Fitz """ print __doc__ ! import loris, time, os print """ *************** *** 24,88 **** """%loris.version() ! # time points ! tbassbeg = .47 ! tbasspeak = .52 ! tbassend = 4.835 ! ! tsoonbeg = 0.053 ! tsoonend = 2.478 ! ! morphTimes_old = [ tbasspeak, tbasspeak+.8, tbasspeak+1.6 ] ! morphTimes_new = [ tbasspeak+.1, tbasspeak+.8, tbasspeak+1.6 ] ! morphTimes_third = [ tbasspeak+.1, tbasspeak+.85, tbasspeak+1.6 ] ! morphTimes = morphTimes_new ! ! morphMidpoint = 0.5 ! finalMorphVal = 1 ! ! from os import path ! bass_dir = path.join( path.pardir, "bass" ) ! print "--- importing bass from %s ---"%(bass_dir) ! bass = loris.importSdif( path.join( bass_dir, "bass.D2.sdif" ) ) ! ! print "--- cropping and pitch-shifting bass ---" ! loris.crop( bass, tbassbeg, tsoonend ) ! loris.shiftPitch( bass, -(50+11) ) ! # bassoon is 11 cents sharp, and bass is way off ! ! bassoon_dir = path.join( path.pardir, "bassoon" ) ! print "--- importing bassoon from %s ---"%(bassoon_dir) ! bassoon = loris.importSdif( path.join( bassoon_dir, "bassoon.Db2.sdif" ) ) ! print "--- chopping junk off front of bassoon ---" ! loris.crop( bassoon, tsoonbeg, 2*tsoonend ) ! print "--- dilating (shifting start time of) bassoon ---" ! loris.dilate( bassoon, [0], [ tbassbeg - tsoonbeg ] ) ! print "--- morphing ---" ! env = loris.BreakpointEnvelope() ! env.insertBreakpoint( morphTimes[0], 0 ) ! env.insertBreakpoint( morphTimes[1], morphMidpoint*finalMorphVal ) ! env.insertBreakpoint( morphTimes[2], finalMorphVal ) ! # morph using reference partials, sounds much worse without this! ! m = loris.morph( bass, bassoon, 1, 1, env, env, env ) ! print "--- removing noise from morph ---" ! loris.scaleNoiseRatio( m, 0 ) ! print "--- rendering ---" ! fout = loris.AiffFile( m, 44100 ) ! fout.setMidiNoteNumber( 37.11 ) ! fout.write( "bass-oon.morph.aiff" ) ! # export the dilated data as spc files for Kyma morphing. ! print "--- exporting Spc files for Kyma morphing ---" ! ofilebase = "bass.aligned" ! loris.exportSdif( ofilebase + ".sdif", bass ) ! ofilebase = "bassoon.aligned" ! loris.exportSdif( ofilebase + ".sdif", bassoon ) --- 24,121 ---- """%loris.version() + orate = 44100 ! tag = '' ! stuff = {} ! # ---------------------------------------------------------------------------- ! def doBassoonBassMorph( exportDir = '' ): ! # time points ! tbassbeg = .47 ! tbasspeak = .52 ! tbassend = 4.835 ! ! tsoonbeg = 0.053 ! tsoonend = 2.478 ! ! morphTimes_old = [ tbasspeak, tbasspeak+.8, tbasspeak+1.6 ] ! morphTimes_new = [ tbasspeak+.1, tbasspeak+.8, tbasspeak+1.6 ] ! morphTimes_third = [ tbasspeak+.1, tbasspeak+.85, tbasspeak+1.6 ] ! morphTimes = morphTimes_new ! ! morphMidpoint = 0.5 ! finalMorphVal = 1 ! ! from os import path ! bass_dir = path.join( path.pardir, "bass" ) ! print "--- importing bass from %s ---"%(bass_dir) ! bass = loris.importSdif( path.join( bass_dir, "bass.D2.sdif" ) ) ! ! print "--- cropping and pitch-shifting bass ---" ! loris.crop( bass, tbassbeg, tsoonend ) ! loris.shiftPitch( bass, -(50+11) ) ! # bassoon is 11 cents sharp, and bass is way off ! ! bassoon_dir = path.join( path.pardir, "bassoon" ) ! print "--- importing bassoon from %s ---"%(bassoon_dir) ! bassoon = loris.importSdif( path.join( bassoon_dir, "bassoon.Db2.sdif" ) ) ! ! print "--- chopping junk off front of bassoon ---" ! loris.crop( bassoon, tsoonbeg, 2*tsoonend ) ! ! print "--- dilating (shifting start time of) bassoon ---" ! loris.dilate( bassoon, [0], [ tbassbeg - tsoonbeg ] ) ! ! print "--- morphing ---" ! env = loris.BreakpointEnvelope() ! env.insertBreakpoint( morphTimes[0], 0 ) ! env.insertBreakpoint( morphTimes[1], morphMidpoint*finalMorphVal ) ! env.insertBreakpoint( morphTimes[2], finalMorphVal ) ! ! # morph using reference partials, sounds much worse without this! ! m = loris.morph( bass, bassoon, 1, 1, env, env, env ) ! ! print "--- removing noise from morph ---" ! loris.scaleNoiseRatio( m, 0 ) ! if exportDir: ! ! print "--- rendering ---" ! opath = os.path.join( exportDir, 'bass-oon.morph' + tag + '.aiff' ) ! ! fout = loris.AiffFile( m, orate ) ! fout.setMidiNoteNumber( 37.11 ) ! fout.write( opath ) ! ! # export the dilated data as SDIF files. ! print "--- exporting Sdif files ---" ! ! opath = os.path.join( exportDir, 'bass.aligned' + tag + '.sdif' ) ! loris.exportSdif( opath, bass ) ! ! opath = os.path.join( exportDir, 'bassoon.aligned' + tag + '.sdif' ) ! loris.exportSdif( opath, bassoon ) ! stuff[ 'bassoon aligned' ] = bassoon ! stuff[ 'bass aligned' ] = bass ! stuff[ 'morph' ] = m ! stuff[ 'times' ] = morphTimes ! ! print 'Done. (%s)'%(time.ctime(time.time())) ! # ---------------------------------------------------------------------------- ! if __name__ == '__main__': ! print __doc__ ! print 'Using Loris version %s'%( loris.version() ) + import sys + odir = os.curdir + if len( sys.argv ) > 1: + tag = '.' + sys.argv[1] + + doBassoonBassMorph( odir ) \ No newline at end of file Index: morph_raga_tbn.py =================================================================== RCS file: /cvsroot/loris/farm/morphing/morph_raga_tbn.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** morph_raga_tbn.py 11 Sep 2007 05:36:02 -0000 1.2 --- morph_raga_tbn.py 17 Jan 2010 16:51:33 -0000 1.3 *************** *** 7,16 **** Makes a progressive sequence of three morphs. ! Last updated: 10 Sep 2007 by Kelly Fitz """ print __doc__ ! import loris, time print """ --- 7,16 ---- Makes a progressive sequence of three morphs. ! Last updated: 17 Jan 2010 by Kelly Fitz """ print __doc__ ! import loris, time, os print """ *************** *** 18,49 **** """%loris.version() ! from os import path ! dir = path.join( path.pardir, "trombone" ) ! print "--- importing trombone from %s ---"%(dir) ! tbn = loris.importSdif( path.join( dir, "tbnflutter.sdif" ) ) ! dir = path.join( path.pardir, "derbari" ) ! print "--- importing raga singer from %s ---"%(dir) ! raga = loris.importSdif( path.join( dir, "derbari.distill.sdif" ) ) ! print "--- dilating raga singer ---" ! tbntimes = ( 0, 2.39 ) ! ragatimes = ( .124, 1.634 ) ! loris.dilate( raga, ragatimes, tbntimes ) ! print "--- exporting dilated raga singer ---" ! orate = 44100 ! loris.exportAiff( 'raga.dilated.aiff', loris.synthesize( raga, orate ), orate ) ! print "--- preforming sequence of morphs ---" ! outvec = [] ! space = [0] * int(.25*orate) ! for w in (.2, .5, .7 ): ! print "--- morphing with weight %.2f ---"%(w) ! m = loris.morph( tbn, raga, w, w, w ) ! v = loris.synthesize( m, orate ) ! outvec.extend( v ) ! outvec.extend( space ) ! print "--- exporting morph sequence ---" ! loris.exportAiff( "raga-trombone-seq.aiff", outvec, orate ) \ No newline at end of file --- 18,97 ---- """%loris.version() ! orate = 44100 ! tag = '' ! stuff = {} ! # ---------------------------------------------------------------------------- ! def doRagaTbnMorph( exportDir = '' ): ! ! from os import path ! dir = path.join( path.pardir, "trombone" ) ! print "--- importing trombone from %s ---"%(dir) ! tbn = loris.importSdif( path.join( dir, "tbnflutter.sdif" ) ) ! dir = path.join( path.pardir, "derbari" ) ! print "--- importing raga singer from %s ---"%(dir) ! raga = loris.importSdif( path.join( dir, "derbari.distill.sdif" ) ) ! ! print "--- dilating raga singer ---" ! tbntimes = ( 0, 2.39 ) ! ragatimes = ( .124, 1.634 ) ! loris.dilate( raga, ragatimes, tbntimes ) ! ! print "--- preforming sequence of morphs ---" ! morphs = {} ! morph_weights = (.2, .5, .7 ) ! for w in morph_weights: ! print "--- morphing with weight %.2f ---"%(w) ! m = loris.morph( tbn, raga, w, w, w ) ! morphs[w] = m; ! ! if exportDir: ! ! print "--- rendering morph sequence ---" ! opath = os.path.join( exportDir, 'raga-trombone-seq' + tag + '.aiff' ) ! ! outvec = [] ! space = [0] * int(.25*orate) ! for w in morph_weights: ! v = loris.synthesize( morphs[w], orate ) ! outvec.extend( v ) ! outvec.extend( space ) ! ! print "--- exporting morph sequence ---" ! loris.exportAiff( opath, outvec, orate ) ! ! print "--- exporting dilated raga singer ---" ! opath = os.path.join( exportDir, 'raga.dilated' + tag + '.sdif' ) ! loris.exportSdif( opath, raga ) ! ! opath = os.path.join( exportDir, 'raga.dilated' + tag + '.aiff' ) ! loris.exportAiff( opath, raga, orate ) ! ! ! stuff[ 'morphs' ] = morphs ! stuff[ 'morph_weights' ] = morph_weights ! stuff[ 'raga dilated' ] = raga ! stuff[ 'raga times' ] = ragatimes ! stuff[ 'ttbn times' ] = tbntimes ! ! ! print 'Done. (%s)'%(time.ctime(time.time())) ! ! ! # ---------------------------------------------------------------------------- ! ! if __name__ == '__main__': ! print __doc__ ! ! print 'Using Loris version %s'%( loris.version() ) ! ! import sys ! odir = os.curdir ! if len( sys.argv ) > 1: ! tag = '.' + sys.argv[1] ! ! doRagaTbnMorph( odir ) \ No newline at end of file |