You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					
					
						
							33 lines
						
					
					
						
							804 B
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							33 lines
						
					
					
						
							804 B
						
					
					
				| class Synth implements ddf.minim.ugens.Instrument { | |
|   Oscil       wave; | |
|   Damp        env; | |
|   int         noteNumber; | |
|   Blip        blip; | |
|    | |
|   Synth( int note, int velocity ) { | |
|     noteNumber = note; | |
|     float freq = Frequency.ofMidiNote( noteNumber ).asHz(); | |
|     float amp  = (float)(velocity-1) / 126.0f; | |
|      | |
|     wave = new Oscil( freq, amp, Waves.SQUARE ); | |
|     env  = new Damp( 0.001f, 0.1f, 1.0f ); | |
|      | |
|     wave.patch( env ); | |
|   } | |
|    | |
|   void noteOn( float dur ) { | |
|     // make visual | |
|     color c = color( 0, 200, 64, 255*(wave.amplitude.getLastValue()) ); | |
|     blip = new Blip( c, map(noteNumber, 30, 55, height, 0), 200 ); | |
|     blips.add( blip ); | |
|      | |
|     // make sound | |
|     env.activate(); | |
|     env.patch( out ); | |
|   } | |
|    | |
|   void noteOff() { | |
|     env.unpatchAfterDamp( out ); | |
|     blips.remove( blip ); | |
|   } | |
| }
 |