audio

package
v1.6.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 14, 2018 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Overview

Package audio provides audio players.

The stream format must be 16-bit little endian and 2 channels. The format is as follows:

[data]      = [sample 1] [sample 2] [sample 3] ...
[sample *]  = [channel 1] ...
[channel *] = [byte 1] [byte 2] ...

An audio context (audio.Context object) has a sample rate you can specify and all streams you want to play must have the same sample rate. However, decoders in e.g. audio/mp3 package adjust sample rate automatically, and you don't have to care about it as long as you use those decoders.

An audio context can generate 'players' (audio.Player objects), and you can play sound by calling Play function of players. When multiple players play, mixing is automatically done. Note that too many players may cause distortion.

Ebiten's game progress tries to synchronizes with audio progress, but delay can happen if, e.g., decoding an audio source takes long.

For the simplest example to play sound, see wav package in the examples.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Context

type Context struct {
	// contains filtered or unexported fields
}

A Context represents a current state of audio.

At most one Context object can exist in one process. This means only one constant sample rate is valid in your one application.

For a typical usage example, see examples/wav/main.go.

func CurrentContext added in v1.6.1

func CurrentContext() *Context

CurrentContext returns the current context or nil if there is no context.

func NewContext

func NewContext(sampleRate int) (*Context, error)

NewContext creates a new audio context with the given sample rate.

The sample rate is also used for decoding MP3 with audio/mp3 package or other formats as the target sample rate.

sampleRate should be 44100 or 48000. Other values might not work. For example, 22050 causes error on Safari when decoding MP3.

Error returned by NewContext is always nil as of 1.5.0-alpha.

NewContext panics when an audio context is already created.

func (*Context) SampleRate

func (c *Context) SampleRate() int

SampleRate returns the sample rate.

func (*Context) Update

func (c *Context) Update() error

Update is deprecated as of 1.6.0-alpha.

As of 1.6.0-alpha, Update always returns nil and does nothing related to updating the state. You don't have to call this function any longer. The internal audio error is returned at ebiten.Run instead.

type InfiniteLoop added in v1.5.0

type InfiniteLoop struct {
	// contains filtered or unexported fields
}

InfiniteLoop represents a loop which never ends.

func NewInfiniteLoop added in v1.5.0

func NewInfiniteLoop(stream ReadSeekCloser, size int64) *InfiniteLoop

NewInfiniteLoop creates a new infinite loop stream with a stream and size in bytes.

func (*InfiniteLoop) Close added in v1.5.0

func (l *InfiniteLoop) Close() error

Close is implementation of ReadSeekCloser's Close.

func (*InfiniteLoop) Read added in v1.5.0

func (i *InfiniteLoop) Read(b []byte) (int, error)

Read is implementation of ReadSeekCloser's Read.

func (*InfiniteLoop) Seek added in v1.5.0

func (i *InfiniteLoop) Seek(offset int64, whence int) (int64, error)

Seek is implementation of ReadSeekCloser's Seek.

type Player

type Player struct {
	// contains filtered or unexported fields
}

Player is an audio player which has one stream.

func NewPlayer

func NewPlayer(context *Context, src ReadSeekCloser) (*Player, error)

NewPlayer creates a new player with the given stream.

src's format must be linear PCM (16bits little endian, 2 channel stereo) without a header (e.g. RIFF header). The sample rate must be same as that of the audio context.

Note that the given src can't be shared with other Player objects.

NewPlayer tries to call Seek of src to get the current position. NewPlayer returns error when the Seek returns error.

func NewPlayerFromBytes

func NewPlayerFromBytes(context *Context, src []byte) (*Player, error)

NewPlayerFromBytes creates a new player with the given bytes.

As opposed to NewPlayer, you don't have to care if src is already used by another player or not. src can be shared by multiple players.

The format of src should be same as noted at NewPlayer.

NewPlayerFromBytes's error is always nil as of 1.5.0-alpha.

func (*Player) Close

func (p *Player) Close() error

Close closes the stream.

When closing, the stream owned by the player will also be closed by calling its Close. This means that the source stream passed via NewPlayer will also be closed.

Close returns error when closing the source returns error.

func (*Player) Current

func (p *Player) Current() time.Duration

Current returns the current position.

func (*Player) IsPlaying

func (p *Player) IsPlaying() bool

IsPlaying returns boolean indicating whether the player is playing.

func (*Player) Pause

func (p *Player) Pause() error

Pause pauses the playing.

Pause always returns nil.

func (*Player) Play

func (p *Player) Play() error

Play plays the stream.

Play always returns nil.

func (*Player) Rewind

func (p *Player) Rewind() error

Rewind rewinds the current position to the start.

Rewind returns error when seeking the source stream returns error.

func (*Player) Seek

func (p *Player) Seek(offset time.Duration) error

Seek seeks the position with the given offset.

Seek returns error when seeking the source stream returns error.

func (*Player) SetVolume

func (p *Player) SetVolume(volume float64)

SetVolume sets the volume of this player. volume must be in between 0 and 1. This function panics otherwise.

func (*Player) Volume

func (p *Player) Volume() float64

Volume returns the current volume of this player [0-1].

type ReadSeekCloser

type ReadSeekCloser interface {
	io.ReadSeeker
	io.Closer
}

ReadSeekCloser is an io.ReadSeeker and io.Closer.

func BytesReadSeekCloser added in v1.5.0

func BytesReadSeekCloser(b []byte) ReadSeekCloser

BytesReadSeekCloser creates ReadSeekCloser from bytes.

Directories

Path Synopsis
internal
Package mp3 provides MP3 decoder.
Package mp3 provides MP3 decoder.
Package vorbis provides Ogg/Vorbis decoder.
Package vorbis provides Ogg/Vorbis decoder.
Package wav provides WAV (RIFF) decoder.
Package wav provides WAV (RIFF) decoder.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL