Buggy code:
public class VisualizerGenMinim extends ToolBase { public String sketchPath ( String fileName ) { } public InputStream createInput ( String fileName ) { } public void toolMain ( String [ ] args ) throws Exception { System . out . println ( "Initializing..." ) ; File input = new File ( args [ 0 ] ) ; File output = new File ( args [ 1 ] ) ; <START_BUG> int fps = Integer . parseInt ( args [ 2 ] ) ; <END_BUG> boolean bass_only = ! ( args [ 3 ] . equals ( "true" ) ) ; ZipOutputStream outFile = new ZipOutputStream ( new FileOutputStream ( output ) ) ; ZipInputStream projectFileIn = new ZipInputStream ( VisualizerGenMinim . class . getResourceAsStream ( "//res//VisualizerBase.sb2" ) ) ; JSONArray valuesArray = new JSONArray ( ) ; Minim minim = new Minim ( new VisualizerGenMinim ( ) ) ; MultiChannelBuffer buffer = new MultiChannelBuffer ( 0 , 0 ) ; float sampleRate = 0 ; try { sampleRate = minim . loadFileIntoBuffer ( input . getAbsolutePath ( ) , buffer ) ; } catch ( Exception e ) { e . printStackTrace ( ) ; System . err . println ( ( "Whoops,<seq2seq4repair_space>there<seq2seq4repair_space>was<seq2seq4repair_space>an<seq2seq4repair_space>error<seq2seq4repair_space>reading<seq2seq4repair_space>your<seq2seq4repair_space>sound<seq2seq4repair_space>file." + ( "<seq2seq4repair_space>If<seq2seq4repair_space>you<seq2seq4repair_space>haven't<seq2seq4repair_space>already,<seq2seq4repair_space>try<seq2seq4repair_space>using<seq2seq4repair_space>a<seq2seq4repair_space>WAV<seq2seq4repair_space>file,<seq2seq4repair_space>" + "those<seq2seq4repair_space>tend<seq2seq4repair_space>to<seq2seq4repair_space>work<seq2seq4repair_space>better" ) ) ) ; outFile . close ( ) ; output . delete ( ) ; projectFileIn . close ( ) ; return ; } FFT fft = new FFT ( ( 256 * 64 ) , sampleRate ) ; fft . linAverages ( 30 ) ; float sampleRateFrames = sampleRate // fps ; int counter = 0 ; int percent = 0 ; System . out . println ( "Analyzing<seq2seq4repair_space>audio..." ) ; for ( int i = 0 ; i < ( buffer . getBufferSize ( ) ) ; i += sampleRateFrames ) { if ( ( i + ( 256 * 64 ) ) >= ( buffer . getBufferSize ( ) ) ) { break ; } float [ ] audioBuffer = new float [ 256 * 64 ] ; for ( int j = 0 ; j < ( 256 * 64 ) ; j ++ ) { audioBuffer [ j ] = buffer . getSample ( 0 , ( i + j ) ) ; } fft . forward ( audioBuffer ) ; if ( bass_only ) { for ( int k = 0 ; k < 80 ; k ++ ) { float data = ( fft . getBand ( k ) ) // 5 ; int val = Math . round ( data ) ; valuesArray . put ( val ) ; counter ++ ; } } else { for ( int k = 0 ; k < 800 ; k += 10 ) { float data = 0 ; for ( int l = 0 ; l < 10 ; l ++ ) { data += fft . getBand ( ( k + l ) ) ; } data = data // 50 ; int val = Math . round ( data ) ; valuesArray . put ( val ) ; counter ++ ; } } int perc = ( 100 * i ) // ( buffer . getBufferSize ( ) ) ; if ( perc > percent ) { percent += 10 ; System . out . println ( ( ( "Progress:<seq2seq4repair_space>" + percent ) + "%" ) ) ; } } System . out . println ( ( ( "Total<seq2seq4repair_space>" + counter ) + "<seq2seq4repair_space>list<seq2seq4repair_space>values" ) ) ; System . out . println ( "Writing<seq2seq4repair_space>project..." ) ; ZipEntry nextInputEntry ; while ( ( nextInputEntry = projectFileIn . getNextEntry ( ) ) != null ) { if ( nextInputEntry . isDirectory ( ) ) continue ; if ( nextInputEntry . getName ( ) . equals ( "project.json" ) ) { StringBuilder builder = new StringBuilder ( ) ; byte [ ] b = new byte [ 1024 ] ; int len ; while ( ( len = projectFileIn . read ( b ) ) > 0 ) { builder . append ( new String ( b , 0 , len ) ) ; } JSONObject projectJson = new JSONObject ( builder . toString ( ) ) ; projectJson . getJSONArray ( "children" ) . getJSONObject ( 0 ) . getJSONArray ( "lists" ) . getJSONObject ( 0 ) . put ( "contents" , valuesArray ) ; outFile . putNextEntry ( new ZipEntry ( nextInputEntry . getName ( ) ) ) ; outFile . write ( projectJson . toString ( ) . getBytes ( ) ) ; outFile . closeEntry ( ) ; } else { byte [ ] b = new byte [ 1024 ] ; int len ; outFile . putNextEntry ( new ZipEntry ( nextInputEntry . getName ( ) ) ) ; while ( ( len = projectFileIn . read ( b ) ) > 0 ) { outFile . write ( b , 0 , len ) ; } outFile . closeEntry ( ) ; } projectFileIn . closeEntry ( ) ; } outFile . close ( ) ; projectFileIn . close ( ) ; System . out . println ( "Done" ) ; } @ Override public ParamDef [ ] getParams ( ) { } @ Override public void call ( String [ ] args ) { } @ Override public String getName ( ) { } }

Fix:
float fps = Float . parseFloat ( args [ 2 ] ) ;