Package processing.sound
Class AudioSample
java.lang.Object
processing.sound.SoundObject
processing.sound.AudioSample
- Direct Known Subclasses:
SoundFile
This class allows you low-level access to an audio buffer to create, access,
manipulate and play back sound samples.
If you want to pre-load your audio sample with an audio file from disk you
can do so using the SoundFile subclass.
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionAudioSample(PApplet parent, float[] data) AudioSample(PApplet parent, float[] data, boolean stereo) AudioSample(PApplet parent, float[] data, boolean stereo, int frameRate) AudioSample(PApplet parent, float[] data, int frameRate) AudioSample(PApplet parent, int frames) AudioSample(PApplet parent, int frames, boolean stereo) AudioSample(PApplet parent, int frames, boolean stereo, int frameRate) Allocate a new audiosample buffer with the given number of frames.AudioSample(PApplet parent, int frames, int frameRate) -
Method Summary
Modifier and TypeMethodDescriptionvoidamp(float amp) Change the amplitude/volume of the player.intchannels()Returns the number of channels in the audiosample as an int (1 for mono, 2 for stereo).voidcue(float time) Cues the playhead to a fixed position in the audiosample.voidcueFrame(int frameNumber) Cues the playhead to a fixed position in the audiosample.floatduration()Returns the duration of the audiosample in seconds.intframes()Returns the number of frames of the audiosample as an int.booleanCheck whether this audiosample is currently playing.voidjump(float time) Jump to a specific position in the audiosample while continuing to play (or starting to play if it wasn't playing already).voidjumpFrame(int frameNumber) Jump to a specific position in the audiosample without interrupting playback.voidloop()voidloop(float rate) voidloop(float rate, float amp) voidloop(float rate, float pos, float amp) Starts the playback of the audiosample.voidloop(float rate, float pos, float amp, float add) Deprecated.voidpan(float pos) Pan the soundfile in a stereo panorama.voidpause()Stop the playback of the sample, but cue it to the current position.floatpercent()Get current sound file playback position in percent.voidplay()Starts the generatorvoidplay(float rate) voidplay(float rate, float amp) voidplay(float rate, float pos, float amp) voidplay(float rate, float pos, float amp, float cue) Deprecated.voidplay(float rate, float pos, float amp, float add, float cue) Deprecated.voidplayFor(float duration) voidplayFor(float duration, float cue) Starts the playback of the audiosample for the specified duration or to the end of the audiosample, whichever comes first.floatposition()Get current sound file playback position in seconds.intGet frame index of current sound file playback position.voidrate(float rate) Set the relative playback rate of the audiosample.voidread(float[] data) Get the current sample data and write it into the given array.floatread(int frameIndex) voidread(int startFrame, float[] data, int startIndex, int numFrames) The underlying data of the audiosample can be read and written in several different ways: the method taking a single float array `data` gets the current sample data and write it into the given array.floatread(int frameIndex, int channelIndex) voidresize(int frames) voidresize(int frames, boolean stereo) Resizes the underlying buffer of the audiosample to the given number of frames.intReturns the underlying sample rate of the audiosample.voidset(float rate, float pos, float amp) Set multiple parameters at once.voidset(float rate, float pos, float amp, float add) Deprecated.voidstop()Stops the playback.voidwrite(float[] data) Overwrite the sample with the data from the given array.voidwrite(int index, float value) voidwrite(int startFrame, float[] data, int startIndex, int numFrames) The underlying data of the audiosample can be read and (over)written in several different ways: the method taking a single float array `data` replaces the sample data with the content of the given array.Methods inherited from class processing.sound.SoundObject
add, getUnitGenerator
-
Constructor Details
-
AudioSample
-
AudioSample
-
AudioSample
Allocate a new audiosample buffer with the given number of frames.- Parameters:
parent- typically use "this"frames- the desired number of frames for this audiosamplestereo- whether to treat the audiosample as 2-channel (stereo) or not (default: false)frameRate- the underlying frame rate of the sample (default: 44100)
-
AudioSample
-
AudioSample
- Parameters:
data- an array of float values to be used as this audiosample's sound data. The audiosample will consequently have as many frames as the length of the given array. To match the default amplitude of other sound generators, the sample values should be in the range [-0.5, 0.5]
-
AudioSample
-
AudioSample
-
AudioSample
-
-
Method Details
-
isPlaying
public boolean isPlaying()Check whether this audiosample is currently playing.- Overrides:
isPlayingin classSoundObject- Returns:
- `true` if this sound object is currently playing, `false` if it is not.
-
amp
public void amp(float amp) Change the amplitude/volume of the player. Values are between 0.0 and 1.0.- Overrides:
ampin classSoundObject- Parameters:
amp- A float value between 0.0 (complete silence) and 1.0 (full volume) controlling the amplitude/volume of this sound.
-
channels
public int channels()Returns the number of channels in the audiosample as an int (1 for mono, 2 for stereo).- Overrides:
channelsin classSoundObject- Returns:
- the number of channels in the audiosample (1 for mono, 2 for stereo)
- See Also:
-
cue
public void cue(float time) Cues the playhead to a fixed position in the audiosample. Note that cue() only affects the playhead for future calls to play(), but not to loop().- Parameters:
time- position in the audiosample that the next playback should start from, in seconds.
-
cueFrame
public void cueFrame(int frameNumber) Cues the playhead to a fixed position in the audiosample.- Parameters:
frameNumber- frame number to start playback from.
-
duration
public float duration()Returns the duration of the audiosample in seconds.- Returns:
- The duration of the audiosample in seconds.
-
frames
public int frames()Returns the number of frames of the audiosample as an int.- Returns:
- The number of frames of the audiosample.
-
resize
public void resize(int frames) -
jump
public void jump(float time) Jump to a specific position in the audiosample while continuing to play (or starting to play if it wasn't playing already).- Parameters:
time- position to jump to, in seconds- See Also:
-
jumpFrame
public void jumpFrame(int frameNumber) Jump to a specific position in the audiosample without interrupting playback.- Parameters:
time- frame number to jump to.- See Also:
-
loop
public void loop() -
loop
public void loop(float rate) -
loop
public void loop(float rate, float amp) -
loop
public void loop(float rate, float pos, float amp) Starts the playback of the audiosample. Only plays to the end of the audiosample once. If cue() or pause() were called previously, playback will resume from the cued position.- Parameters:
rate- relative playback rate to use. 1 is the original speed. 0.5 is half speed and one octave down. 2 is double the speed and one octave up.pos- the panoramic position of this sound unit from -1.0 (left) to 1.0 (right). Only works for mono audiosamples!amp- the desired playback amplitude of the audiosample as a value from 0.0 (complete silence) to 1.0 (full volume)
-
loop
public void loop(float rate, float pos, float amp, float add) Deprecated. -
play
public void play()Description copied from class:SoundObjectStarts the generator- Overrides:
playin classSoundObject
-
play
public void play(float rate) -
play
public void play(float rate, float amp) -
play
public void play(float rate, float pos, float amp) -
play
public void play(float rate, float pos, float amp, float cue) Deprecated.Starts the playback of the audiosample. Only plays to the end of the audiosample once. If cue() or pause() were called previously, playback will resume from the cued position.- Parameters:
rate- relative playback rate to use. 1 is the original speed. 0.5 is half speed and one octave down. 2 is double the speed and one octave up.amp- the desired playback amplitude of the audiosample as a value from 0.0 (complete silence) to 1.0 (full volume)pos- the panoramic position of this sound unit from -1.0 (left) to 1.0 (right). Only works for mono audiosamples!cue- position in the audiosample that playback should start from, in seconds.
-
play
public void play(float rate, float pos, float amp, float add, float cue) Deprecated. -
playFor
public void playFor(float duration) -
playFor
public void playFor(float duration, float cue) Starts the playback of the audiosample for the specified duration or to the end of the audiosample, whichever comes first.- Parameters:
duration- duration that this audiosample should be played back for, in seconds. If the start position plus duration exceeds the total duration of the sample, playback will stop at the end of the sample.cue- position in the audiosample that playback should start from, in seconds.
-
rate
public void rate(float rate) Set the relative playback rate of the audiosample. 1 is the original speed. 0.5 is half speed and one octave down. 2 is double the speed and one octave up.- Parameters:
rate- Relative playback rate to use. 1 is the original speed. 0.5 is half speed and one octave down. 2 is double the speed and one octave up.
-
resize
public void resize(int frames, boolean stereo) Resizes the underlying buffer of the audiosample to the given number of frames. Calling this method allocates a completely new buffer, so any ongoing playback will be stopped and all data currently stored in the sample will be lost.- Parameters:
frames- the desired number of frames for this audiosamplestereo- whether to treat the audiosample as 2-channel (stereo) or not (default: false)
-
sampleRate
public int sampleRate()Returns the underlying sample rate of the audiosample.- Returns:
- Returns the underlying sample rate of the audiosample as an int.
-
pan
public void pan(float pos) Pan the soundfile in a stereo panorama. -1.0 pans to the left channel and 1.0 to the right channel. Note that panning is only supported for mono (1 channel) audiosamples.- Overrides:
panin classSoundObject- Parameters:
pos- the panoramic position of this sound unit from -1.0 (left) to 1.0 (right).
-
set
public void set(float rate, float pos, float amp) Set multiple parameters at once.- Parameters:
rate- Relative playback rate to use. 1 is the original speed. 0.5 is half speed and one octave down. 2 is double the speed and one octave up.pos- the panoramic position of this sound unit from -1.0 (left) to 1.0 (right).amp- the desired playback amplitude of the audiosample as a value from 0.0 (complete silence) to 1.0 (full volume)
-
set
public void set(float rate, float pos, float amp, float add) Deprecated. -
stop
public void stop()Stops the playback.- Overrides:
stopin classSoundObject
-
position
public float position()Get current sound file playback position in seconds. Note that, if this audio sample was at some point played back in parallel (triggered by another call to play() before the original playback had finished), the position returned by this function can be of any of the concurrent playbacks, not necessarily the last one that was triggered.- Returns:
- The current position of the audio sample playback in seconds
-
positionFrame
public int positionFrame()Get frame index of current sound file playback position. Note that, if this audio sample was at some point played back in parallel (triggered by another call to play() before the original playback had finished), the position returned by this function can be of any of the concurrent playbacks, not necessarily the last one that was triggered.- Returns:
- The current frame index position of the audio sample playback
-
percent
public float percent()Get current sound file playback position in percent. Note that, if this audio sample was at some point played back in parallel (triggered by another call to play() before the original playback had finished), the position returned by this function can be of any of the concurrent playbacks, not necessarily the last one that was triggered.- Returns:
- The current position of the audio sample playback in percent (a value between 0 and 100).
-
pause
public void pause()Stop the playback of the sample, but cue it to the current position. The next call to play() will continue playing where it left off.- See Also:
-
read
public void read(float[] data) Get the current sample data and write it into the given array. Get the current sample data and write it into the given array. The array has to be able to store as many floats as there are frames in this sample, or twice the number of frames for a stereo sample.- Parameters:
data- the target array that the read data is written to
-
read
public void read(int startFrame, float[] data, int startIndex, int numFrames) The underlying data of the audiosample can be read and written in several different ways: the method taking a single float array `data` gets the current sample data and write it into the given array. The array has to be able to store as many floats as there are frames in this sample. It is also possible to only read parts of the sample data using the method with four arguments, which allows you to specify the index of the first frame to read, the position in the array to write it to, as well as how many frames to copy over into the array in total. Finally, the method taking a single integer argument `index` returns the value of the single audio frame of the sample at this index as a float.- Parameters:
startFrame- the index of the first frame of the audiosample that should be readstartIndex- the position in the array where the first read frame should be written to (typically 0)numFrames- the number of frames that should be read (can't be greater than audiosample.channels() * data.length - startIndex)
-
read
public float read(int frameIndex) - Parameters:
frameIndex- the index of the single frame of the audiosample that should be read and returned. `frameIndex` has to be between 0 and `sample.frames() * sample.channels() - 1` (inclusive)`. For mono files, `read(frameIndex)` is identical to `read(frameIndex, 0)`. For stereo files, unless you also specify a `channelIndex`, `read(frameIndex)` will return the samples from both the left and right channel in interleaved order. (See the Soundfile > StereoSample example for a demonstration.)- Returns:
- float: the value of the audio sample at the given index
-
read
public float read(int frameIndex, int channelIndex) - Parameters:
channelIndex- the channel from which to extract the frame value (0 for left, 1 for right). `read(frameIndex, channelIndex)` is the same as calling `read(frameIndex * this.channels() + channelIndex)`.
-
write
public void write(float[] data) Overwrite the sample with the data from the given array. The array should contain as many floats as there are frames in this sample, or twice as many as the number of frames for a stereo sample.- Parameters:
data- the array from which the sample data, up to sample.frames() * sample.channels() floats, should be copied
-
write
public void write(int startFrame, float[] data, int startIndex, int numFrames) The underlying data of the audiosample can be read and (over)written in several different ways: the method taking a single float array `data` replaces the sample data with the content of the given array. The array has to contain as many floats as there are frames in this sample. It is also possible to only write parts of the sample data using the method with four arguments, which allows you to specify the index of the first frame to write, the position in the array to take the data from, as well as how many frames should be copied over. Finally, the method taking two arguments simply sets the value of the single audio frame specified by the first argument to the given float value.- Parameters:
startFrame- the index of the first frame of the audiosample that should be written tostartIndex- the position in the array that the first value to write should be taken from (typically 0)numFrames- the number of frames that should be written (can't be greater than audiosample.channels() * data.length - startIndex)
-
write
public void write(int index, float value) - Parameters:
index- the index of the single frame of the audiosample that should be set to the given valuevalue- the float value that the given audio frame should be set to
-