Documentation ¶
Index ¶
Constants ¶
const ( // FormatFloat32LE is the format of 32 bits floats little endian. FormatFloat32LE = 0 // FormatUnsignedInt8 is the format of 8 bits integers. FormatUnsignedInt8 = 1 //FormatSignedInt16LE is the format of 16 bits integers little endian. FormatSignedInt16LE = 2 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BufferSizeSetter ¶ added in v2.1.0
type BufferSizeSetter interface { // SetBufferSize sets the buffer size. // If 0 is specified, the default buffer size is used. SetBufferSize(bufferSize int) }
BufferSizeSetter sets a buffer size. A player created by (*Context).NewPlayer implments both Player and BufferSizeSetter.
type Context ¶
type Context struct {
// contains filtered or unexported fields
}
Context is the main object in Oto. It interacts with the audio drivers.
To play sound with Oto, first create a context. Then use the context to create an arbitrary number of players. Then use the players to play sound.
Creating multiple contexts is NOT supported.
func NewContext ¶
NewContext creates a new context, that creates and holds ready-to-use Player objects, and returns a context, a channel that is closed when the context is ready, and an error if it exists.
Creating multiple contexts is NOT supported.
The sampleRate argument specifies the number of samples that should be played during one second. Usual numbers are 44100 or 48000. One context has only one sample rate. You cannot play multiple audio sources with different sample rates at the same time.
The channelCount argument specifies the number of channels. One channel is mono playback. Two channels are stereo playback. No other values are supported.
The format argument specifies the format of sources. This value must be FormatFloat32LE, FormatUnsignedInt8, or FormatSignedInt16LE.
func NewContextWithOptions ¶ added in v2.4.0
func NewContextWithOptions(options *NewContextOptions) (*Context, chan struct{}, error)
NewContextWithOptions creates a new context with given options. A context creates and holds ready-to-use Player objects. NewContextWithOptions returns a context, a channel that is closed when the context is ready, and an error if it exists.
Creating multiple contexts is NOT supported.
func (*Context) NewPlayer ¶
NewPlayer creates a new, ready-to-use Player belonging to the Context. It is safe to create multiple players.
The format of r is as follows:
[data] = [sample 1] [sample 2] [sample 3] ... [sample *] = [channel 1] [channel 2] ... [channel *] = [byte 1] [byte 2] ...
Byte ordering is little endian.
A player has some amount of an underlying buffer. Read data from r is queued to the player's underlying buffer. The underlying buffer is consumed by its playing. Then, r's position and the current playing position don't necessarily match. If you want to clear the underlying buffer for some reasons e.g., you want to seek the position of r, call the player's Reset function.
You cannot share r by multiple players.
The returned player implements Player, BufferSizeSetter, and io.Seeker. You can modify the buffer size of a player by the SetBufferSize function. A small buffer size is useful if you want to play a real-time PCM for example. Note that the audio quality might be affected if you modify the buffer size.
If r does not implement io.Seeker, the returned player's Seek returns an error.
NewPlayer is concurrent-safe.
All the functions of a Player returned by NewPlayer are concurrent-safe.
type NewContextOptions ¶ added in v2.4.0
type NewContextOptions struct { // SampleRate specifies the number of samples that should be played during one second. // Usual numbers are 44100 or 48000. One context has only one sample rate. You cannot play multiple audio // sources with different sample rates at the same time. SampleRate int // ChannelCount specifies the number of channels. One channel is mono playback. Two // channels are stereo playback. No other values are supported. ChannelCount int // Format specifies the format of sources. // This value must be FormatFloat32LE, FormatUnsignedInt8, or FormatSignedInt16LE. Format int // BufferSize specifies a buffer size in the underlying device. // // If 0 is specified, the driver's default buffer size is used. // Set BufferSize to adjust the buffer size if you want to adjust latency or reduce noises. // Too big buffer size can increase the latency time. // On the other hand, too small buffer size can cause glitch noises due to buffer shortage. BufferSize time.Duration }
NewContextOptions represents options for NewContextWithOptions.
type Player ¶
type Player interface { // Pause pauses its playing. Pause() // Play starts its playing if it doesn't play. Play() // IsPlaying reports whether this player is playing. IsPlaying() bool // Reset clears the underyling buffer and pauses its playing. // Deprecated: use Pause or Seek instead. Reset() // Volume returns the current volume in the range of [0, 1]. // The default volume is 1. Volume() float64 // SetVolume sets the current volume in the range of [0, 1]. SetVolume(volume float64) // UnplayedBufferSize returns the byte size in the underlying buffer that is not played yet. UnplayedBufferSize() int // Err returns an error if this player has an error. Err() error io.Closer }
Player is a PCM (pulse-code modulation) audio player.