public boolean transform(ProgressListener progressListener) { toneMap = toneMapFrame.getToneMap(); timeSet = toneMap.getTimeSet(); pitchSet = toneMap.getPitchSet(); timeRange = timeSet.getRange(); pitchRange = pitchSet.getRange(); pitchFreqSet = pitchSet.getFreqSet(); audioFTPower = new double[timeRange * (pitchRange + 1)]; int startSample = timeSet.getStartSample(); int endSample = timeSet.getEndSample(); int sampleLength = (int) Math.floor((endSample - startSample) / ((double) resolution)); double[] audioSamples = new double[sampleLength]; for (int i = 0; i < sampleLength; i++) { audioSamples[i] = (double) audioData[startSample + i * resolution]; } int sampleIndexSize = (int) Math.floor((double) timeSet.getSampleIndexSize() / (double) resolution); double dt = (double) resolution / sampleRate; if (transformMode == TRANSFORM_MODE_JAVA) { wavelet.convert( audioFTPower, audioSamples, pitchFreqSet, dt, (double) pFactor, (double) tFactor, sampleIndexSize, sampleLength, pitchRange, progressListener); } else { WaveletJNI waveletJNI = new WaveletJNI(); waveletJNI.waveletConvert( audioFTPower, audioSamples, pitchFreqSet, dt, (double) pFactor, (double) tFactor, sampleIndexSize, sampleLength, pitchRange, progressListener); } return true; }
public boolean writeSequence(NoteList noteList) { this.noteList = noteList; toneMap = toneMapFrame.getToneMap(); timeSet = toneMap.getTimeSet(); pitchSet = toneMap.getPitchSet(); timeRange = timeSet.getRange(); pitchRange = pitchSet.getRange(); if (!buildNoteSequence()) return false; try { sequence = new Sequence(Sequence.PPQ, 10); } catch (Exception ex) { ex.printStackTrace(); return false; } track = sequence.createTrack(); startTime = System.currentTimeMillis(); // add a program change right at the beginning of // the track for the current instrument createEvent(PROGRAM, cc.program + 1, 1); for (int i = 0; i < noteSequence.size(); i++) { noteSequenceElement = noteSequence.get(i); if (noteSequenceElement.state == ON) if (!createEvent(NOTEON, noteSequenceElement.note, noteSequenceElement.tick)) return false; if (noteSequenceElement.state == OFF) if (!createEvent(NOTEOFF, noteSequenceElement.note, noteSequenceElement.tick)) return false; } return true; }
public void setPitch(PitchSet pitchSet) { audioPanel.pitchControl.setPitchRange( (int) (pitchSet.getLowNote()), (int) (pitchSet.getHighNote())); }