jmsltestsuite
Class SimpleSamplePlayingInstrumentWithAmplitudeMap
java.lang.Object
com.softsynth.jmsl.InstrumentAdapter
com.softsynth.jmsl.jsyn.SimpleSamplePlayingInstrument
jmsltestsuite.SimpleSamplePlayingInstrumentWithAmplitudeMap
- All Implemented Interfaces:
- Editable, Instrument, Namable, OutputProvider, Transposable, AttributeBuildable, DirectorySettable, HandleSpecialXMLTag
public class SimpleSamplePlayingInstrumentWithAmplitudeMap
- extends SimpleSamplePlayingInstrument
This subclass of SimpleSamplePlayingInstrument overrides
getAlternativeSampleIndex() to map note 60 to three different samples based
on amplitude. Notice that one sample is mapped to 60. Two additional samples
are mapped to pitches 200 and 201, which are pitches we never expect to play
directly, and are simply stored in these positions. They serve as convenient
places to stash alternative samples within the existing API.
The logic of mapping quiet, medium, loud versions of middle c is implemented
in getAlternativeSampleIndex()
- Author:
- Nick Didkovsky, (c) 2004 All rights reserved, Email:
didkovn@mail.rockefeller.edu
Method Summary |
int |
getAlternativeSampleIndex(int pitchIndex,
double timeStretch,
double[] data)
Precondition: pitchIndex points to a valid sample, previously loaded with
addSamplePitch(). |
static void |
main(java.lang.String[] args)
|
Methods inherited from class com.softsynth.jmsl.jsyn.SimpleSamplePlayingInstrument |
addEditListener, addSamplePitch, addSamplePitch, addSamplePitch, buildFromAttributes, clear, close, edit, getDirectory, getEditEnabled, getNumChannels, getNumOutputs, getOutput, getOutput, getPitches, getSampleFilename, getSynthSamples, getTuning, getVoices, handleSpecialTag, notifyEditListeners, off, on, open, play, reload, removeEditListener, setDirectory, setEditEnabled, setNumChannels, setTuning, testSampleDirectory, writeSpecialXMLTags |
Methods inherited from class com.softsynth.jmsl.InstrumentAdapter |
getDimensionNameSpace, getInterpreter, getMixerClassName, getMusicDevice, getName, getTransposition, noteOff, noteOn, noteOnFor, setDimensionNameSpace, setInterpreter, setMixerClassName, setMusicDevice, setName, setTransposition, toString, update |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
SimpleSamplePlayingInstrumentWithAmplitudeMap
public SimpleSamplePlayingInstrumentWithAmplitudeMap(java.lang.String dir)
getAlternativeSampleIndex
public int getAlternativeSampleIndex(int pitchIndex,
double timeStretch,
double[] data)
- Precondition: pitchIndex points to a valid sample, previously loaded with
addSamplePitch(). Override this method to point to a different valid
sample index. For example, you might store a loud sample at pitchIndex 60
and quiet sample at index 200 (ie some pitch index you'd never bang
directly), and if the amplitude of data[] < 0.3 return 200 for this
pitchIndex, else return 60)
public int getAlternativeSampleIndex(int pitchIndex, double timeStretch, double[] data) {
double amp = data[2];
if (pitchIndex == 60 && amp < 0.4) {
return 201;
}
if (pitchIndex == 60 && amp > 0.7) {
return 200;
}
return pitchIndex;
}
- Overrides:
getAlternativeSampleIndex
in class SimpleSamplePlayingInstrument
- Returns:
- valid index to use instead of pitchIndex.
main
public static void main(java.lang.String[] args)