- java.lang.Object
-
- org.refcodes.audio.AbstractLineOutSampleWriter<SoundSample,LineOutSoundSampleWriter>
-
- org.refcodes.audio.LineOutSoundSampleWriter
-
- All Implemented Interfaces:
AutoCloseable
,BitsPerSampleAccessor
,BitsPerSampleAccessor.BitsPerSampleBuilder<LineOutSoundSampleWriter>
,BitsPerSampleAccessor.BitsPerSampleMutator
,BitsPerSampleAccessor.BitsPerSampleProperty
,LineOutSampleWriter<SoundSample,LineOutSoundSampleWriter>
,SampleWriter<SoundSample,LineOutSoundSampleWriter>
,SamplingRateAccessor
,SamplingRateAccessor.SamplingRateBuilder<LineOutSoundSampleWriter>
,SamplingRateAccessor.SamplingRateMutator
,SamplingRateAccessor.SamplingRateProperty
,SoundSampleWriter<LineOutSoundSampleWriter>
,org.refcodes.io.RowWriter<SoundSample>
public class LineOutSoundSampleWriter extends AbstractLineOutSampleWriter<SoundSample,LineOutSoundSampleWriter> implements LineOutSampleWriter<SoundSample,LineOutSoundSampleWriter>, SoundSampleWriter<LineOutSoundSampleWriter>
TheLineOutSoundSampleWriter
provides means to write sound samples to a line-out device.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.refcodes.audio.BitsPerSampleAccessor
BitsPerSampleAccessor.BitsPerSampleBuilder<B extends BitsPerSampleAccessor.BitsPerSampleBuilder<B>>, BitsPerSampleAccessor.BitsPerSampleMutator, BitsPerSampleAccessor.BitsPerSampleProperty
-
Nested classes/interfaces inherited from interface org.refcodes.audio.SamplingRateAccessor
SamplingRateAccessor.SamplingRateBuilder<B extends SamplingRateAccessor.SamplingRateBuilder<B>>, SamplingRateAccessor.SamplingRateMutator, SamplingRateAccessor.SamplingRateProperty
-
-
Field Summary
-
Fields inherited from class org.refcodes.audio.AbstractLineOutSampleWriter
_bitsPerSample, MAX_16_BIT, MAX_8_BIT
-
-
Constructor Summary
Constructors Constructor Description LineOutSoundSampleWriter()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
protected SourceDataLine
getLineOut()
Produces a line-outSourceDataLine
instance for writing samples to.int
getSamplingRate()
Retrieves the sampling rate from the sampling rate property.void
setSamplingRate(int aSamplingRate)
Sets the sampling rate for the sampling rate property.LineOutSoundSampleWriter
withBitsPerSample(BitsPerSample aBitsPerSample)
Sets the bits/sample per channel for the bits/sample per channel property.LineOutSoundSampleWriter
withSamplingRate(int aSamplingRate)
Sets the sampling rate for the sampling rate property.void
writeNext(double... aSampleData)
Writes the next samples, one sample for each channel.void
writeNext(SoundSample aSample)
Writes the next samples, one sample for each channel.-
Methods inherited from class org.refcodes.audio.AbstractLineOutSampleWriter
getBitsPerSample, setBitsPerSample, toLineOut, toWavSample
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.refcodes.audio.BitsPerSampleAccessor
getBitsPerSample
-
Methods inherited from interface org.refcodes.audio.BitsPerSampleAccessor.BitsPerSampleMutator
setBitsPerSample
-
Methods inherited from interface org.refcodes.audio.BitsPerSampleAccessor.BitsPerSampleProperty
letBitsPerSample
-
Methods inherited from interface org.refcodes.audio.SamplingRateAccessor.SamplingRateProperty
letSamplingRate
-
-
-
-
Method Detail
-
withBitsPerSample
public LineOutSoundSampleWriter withBitsPerSample(BitsPerSample aBitsPerSample)
Sets the bits/sample per channel for the bits/sample per channel property.- Specified by:
withBitsPerSample
in interfaceBitsPerSampleAccessor.BitsPerSampleBuilder<LineOutSoundSampleWriter>
- Parameters:
aBitsPerSample
- The bits/sample per channel to be stored by the sampling rate property.- Returns:
- The builder for applying multiple build operations.
-
writeNext
public void writeNext(double... aSampleData) throws IOException
Writes the next samples, one sample for each channel. Provide one sample for mono audio, two samples for stereo audio and so on. In case you provide more or less samples than channels being supported by the writer, then it is up to the writer whether to duplicate the samples or calculate an average or the like.- Specified by:
writeNext
in interfaceSoundSampleWriter<LineOutSoundSampleWriter>
- Parameters:
aSampleData
- The samples, one for each channel.- Throws:
IOException
- thrown in case writing the sample caused an I/O related problem.
-
writeNext
public void writeNext(SoundSample aSample) throws IOException
Writes the next samples, one sample for each channel. Provide one sample for mono audio, two samples for stereo audio and so on. In case you provide more or less samples than channels being supported by the writer, then it is up to the writer whether to duplicate the samples or calculate an average or the like.- Specified by:
writeNext
in interfaceorg.refcodes.io.RowWriter<SoundSample>
- Specified by:
writeNext
in interfaceSampleWriter<SoundSample,LineOutSoundSampleWriter>
- Specified by:
writeNext
in interfaceSoundSampleWriter<LineOutSoundSampleWriter>
- Parameters:
aSample
- The samples, one for each channel.- Throws:
IOException
- thrown in case writing the sample caused an I/O related problem.
-
getSamplingRate
public int getSamplingRate()
Retrieves the sampling rate from the sampling rate property.- Specified by:
getSamplingRate
in interfaceSamplingRateAccessor
- Returns:
- The sampling rate stored by the sampling rate property.
-
setSamplingRate
public void setSamplingRate(int aSamplingRate)
Sets the sampling rate for the sampling rate property.- Specified by:
setSamplingRate
in interfaceSamplingRateAccessor.SamplingRateMutator
- Parameters:
aSamplingRate
- The sampling rate to be stored by the sampling rate property.
-
withSamplingRate
public LineOutSoundSampleWriter withSamplingRate(int aSamplingRate)
Sets the sampling rate for the sampling rate property.- Specified by:
withSamplingRate
in interfaceSamplingRateAccessor.SamplingRateBuilder<LineOutSoundSampleWriter>
- Parameters:
aSamplingRate
- The sampling rate to be stored by the sampling rate property.- Returns:
- The builder for applying multiple build operations.
-
close
public void close() throws IOException
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceSampleWriter<SoundSample,LineOutSoundSampleWriter>
- Throws:
IOException
-
getLineOut
protected SourceDataLine getLineOut() throws LineUnavailableException
Produces a line-outSourceDataLine
instance for writing samples to.- Returns:
- The
SourceDataLine
upon success. - Throws:
LineUnavailableException
- thrown in case the audio-line cannot be acquired.
-
-