Changeset 1559
- Timestamp:
- 05/10/21 11:47:23 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/apollo/audio/SampledTrackModel.java
r315 r1559 2 2 3 3 import java.io.IOException; 4 import java.util.ArrayList; 5 import java.util.List; 4 6 5 7 import javax.sound.sampled.AudioFormat; 8 import javax.sound.sampled.UnsupportedAudioFileException; 6 9 7 10 import org.apollo.io.AudioIO; 8 11 import org.apollo.mvc.AbstractSubject; 9 12 import org.apollo.mvc.SubjectChangedEvent; 13 14 import be.tarsos.dsp.AudioDispatcher; 15 import be.tarsos.dsp.beatroot.BeatRootOnsetEventHandler; 16 import be.tarsos.dsp.io.jvm.AudioDispatcherFactory; 17 import be.tarsos.dsp.onsets.ComplexOnsetDetector; 18 import be.tarsos.dsp.onsets.OnsetHandler; 19 10 20 11 21 /** … … 15 25 * 16 26 */ 17 public class SampledTrackModel extends AbstractSubject {27 public class SampledTrackModel extends AbstractSubject implements OnsetHandler { 18 28 19 29 private AudioFormat audioFormat = null; … … 32 42 33 43 private String name = null; 44 45 private List<Double> beats; 46 34 47 35 48 /** … … 73 86 } 74 87 88 89 public void detectBeats(int audioBufferSize, int audioBufferOverlap) throws UnsupportedAudioFileException { 90 AudioDispatcher dispatcher = AudioDispatcherFactory.fromByteArray(audioBytes, audioFormat, 91 audioBufferSize, audioBufferOverlap); 92 93 ComplexOnsetDetector detector = new ComplexOnsetDetector(audioBufferSize); 94 BeatRootOnsetEventHandler handler = new BeatRootOnsetEventHandler(); 95 detector.setHandler(handler); 96 97 dispatcher.addAudioProcessor(detector); 98 dispatcher.run(); 99 100 beats = new ArrayList<Double>(); 101 handler.trackBeats(this); 102 103 } 104 105 @Override 106 public void handleOnset(double time, double salience) { 107 beats.add(time); 108 } 109 110 public List<Double> getBeats() { 111 return beats; 112 } 113 114 public void clearBeats() { 115 beats = null;; 116 } 117 118 119 120 75 121 /** 76 122 * @return True if audio bytes have been changed in some way since creation / last reset.
Note:
See TracChangeset
for help on using the changeset viewer.