import javax.sound.midi.*; import java.awt.*; import java.awt.event.*; import java.applet.*; // Type keys to get different percussion effects. // See java.awt.event.KeyEvent for VK_ keycodes for each key. Codes // between 35 and 81, inclusive, generate sounds. Experiment! // Move the mouse up and down to control volume: down is louder public class DrumsApplet extends Applet { MidiChannel channel; // The channel we play on: 10 is for percussion int velocity = 64; // Default volume is 50% public void init() { try { Synthesizer synthesizer = MidiSystem.getSynthesizer(); synthesizer.open(); // Channel 10 is a special percussion channel channel = synthesizer.getChannels()[9]; addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if (key >= 35 && key <= 81) { channel.noteOn(key, velocity); } } public void keyReleased(KeyEvent e) { int key = e.getKeyCode(); if (key >= 35 && key <= 81) channel.noteOff(key); } }); addMouseMotionListener(new MouseMotionAdapter() { public void mouseMoved(MouseEvent e) { velocity = e.getY(); } }); } catch(MidiUnavailableException e) { e.printStackTrace(); } } public void paint(Graphics graphics) { Graphics2D g = (Graphics2D) graphics; g.setPaint(new GradientPaint(0, 0, Color.white, 0, getHeight(), Color.red)); g.fillRect(0, 0, getWidth(), getHeight()); } }