Package jmsltestsuite
Class TransposingSampleSustainingInstrumentWithAmplitudeMap
java.lang.Object
com.softsynth.jmsl.InstrumentAdapter
com.softsynth.jmsl.jsyn.SimpleSamplePlayingInstrument
com.softsynth.jmsl.jsyn.SimpleSamplePlayingInstrumentWithLoops
com.softsynth.jmsl.jsyn.TransposingSampleSustainingInstrument
jmsltestsuite.TransposingSampleSustainingInstrumentWithAmplitudeMap
- All Implemented Interfaces:
Editable
,Instrument
,Namable
,OutputProvider
,Transposable
,AttributeBuildable
,DirectorySettable
,HandleSpecialXMLTag
public class TransposingSampleSustainingInstrumentWithAmplitudeMap extends TransposingSampleSustainingInstrument
This subclass of TransposingSampleSustainingInstrument 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 we never expect to play directly.
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: nick@didkovsky.com
-
Field Summary
Fields inherited from class com.softsynth.jmsl.jsyn.SimpleSamplePlayingInstrument
POLYPHONY
-
Constructor Summary
Constructors Constructor Description TransposingSampleSustainingInstrumentWithAmplitudeMap(java.lang.String dir)
-
Method Summary
Modifier and Type Method Description 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.TransposingSampleSustainingInstrument
buildFromAttributes, getCrossfadeDuration, getOutput, getOutput, play, setCrossfadeDuration
Methods inherited from class com.softsynth.jmsl.jsyn.SimpleSamplePlayingInstrumentWithLoops
addSamplePitch, clear, getSampleLoopRegioner, getSampleLoopRegioners, loadSample
Methods inherited from class com.softsynth.jmsl.jsyn.SimpleSamplePlayingInstrument
addEditListener, addSamplePitch, addSamplePitch, close, edit, getDirectory, getEditEnabled, getNumChannels, getNumOutputs, getPitches, getSampleFilename, getSynthSamples, getTuning, getVoices, handleSpecialTag, notifyEditListeners, off, on, open, 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
-
Constructor Details
-
TransposingSampleSustainingInstrumentWithAmplitudeMap
public TransposingSampleSustainingInstrumentWithAmplitudeMap(java.lang.String dir)
-
-
Method Details
-
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 classSimpleSamplePlayingInstrument
- Returns:
- valid index to use instead of pitchIndex.
-
main
public static void main(java.lang.String[] args)
-