mirror of
https://github.com/issadarkthing/gomu.git
synced 2025-05-06 19:29:18 +08:00
add comment
This commit is contained in:
parent
3d2a597934
commit
0476c1d070
@ -22,7 +22,6 @@ type Player struct {
|
|||||||
isRunning bool
|
isRunning bool
|
||||||
volume float64
|
volume float64
|
||||||
|
|
||||||
// to control the vol internally
|
|
||||||
vol *effects.Volume
|
vol *effects.Volume
|
||||||
ctrl *beep.Ctrl
|
ctrl *beep.Ctrl
|
||||||
format *beep.Format
|
format *beep.Format
|
||||||
@ -35,6 +34,7 @@ type Player struct {
|
|||||||
songSkip func(Audio)
|
songSkip func(Audio)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// New returns new Player instance.
|
||||||
func New(volume int) *Player {
|
func New(volume int) *Player {
|
||||||
|
|
||||||
// Read initial volume from config
|
// Read initial volume from config
|
||||||
@ -48,39 +48,46 @@ func New(volume int) *Player {
|
|||||||
return &Player{volume: initVol}
|
return &Player{volume: initVol}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetSongFinish accepts callback which will be executed when the song finishes.
|
||||||
func (p *Player) SetSongFinish(f func(Audio)) {
|
func (p *Player) SetSongFinish(f func(Audio)) {
|
||||||
p.songFinish = f
|
p.songFinish = f
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetSongStart accepts callback which will be executed when the song starts.
|
||||||
func (p *Player) SetSongStart(f func(Audio)) {
|
func (p *Player) SetSongStart(f func(Audio)) {
|
||||||
p.songStart = f
|
p.songStart = f
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetSongSkip accepts callback which will be executed when the song is skipped.
|
||||||
func (p *Player) SetSongSkip(f func(Audio)) {
|
func (p *Player) SetSongSkip(f func(Audio)) {
|
||||||
p.songSkip = f
|
p.songSkip = f
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// executes songFinish callback.
|
||||||
func (p *Player) execSongFinish(a Audio) {
|
func (p *Player) execSongFinish(a Audio) {
|
||||||
if p.songFinish != nil {
|
if p.songFinish != nil {
|
||||||
p.songFinish(a)
|
p.songFinish(a)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// executes songStart callback.
|
||||||
func (p *Player) execSongStart(a Audio) {
|
func (p *Player) execSongStart(a Audio) {
|
||||||
if p.songStart != nil {
|
if p.songStart != nil {
|
||||||
p.songStart(a)
|
p.songStart(a)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// executes songFinish callback.
|
||||||
func (p *Player) execSongSkip(a Audio) {
|
func (p *Player) execSongSkip(a Audio) {
|
||||||
if p.songSkip != nil {
|
if p.songSkip != nil {
|
||||||
p.songSkip(a)
|
p.songSkip(a)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Run plays the passed Audio.
|
||||||
func (p *Player) Run(currSong Audio) error {
|
func (p *Player) Run(currSong Audio) error {
|
||||||
|
|
||||||
|
p.isRunning = true
|
||||||
p.execSongStart(currSong)
|
p.execSongStart(currSong)
|
||||||
|
|
||||||
f, err := os.Open(currSong.Path())
|
f, err := os.Open(currSong.Path())
|
||||||
@ -148,6 +155,7 @@ func (p *Player) Run(currSong Audio) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pause pauses Player.
|
||||||
func (p *Player) Pause() {
|
func (p *Player) Pause() {
|
||||||
speaker.Lock()
|
speaker.Lock()
|
||||||
p.ctrl.Paused = true
|
p.ctrl.Paused = true
|
||||||
@ -155,6 +163,7 @@ func (p *Player) Pause() {
|
|||||||
speaker.Unlock()
|
speaker.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Play unpauses Player.
|
||||||
func (p *Player) Play() {
|
func (p *Player) Play() {
|
||||||
speaker.Lock()
|
speaker.Lock()
|
||||||
p.ctrl.Paused = false
|
p.ctrl.Paused = false
|
||||||
@ -162,7 +171,7 @@ func (p *Player) Play() {
|
|||||||
speaker.Unlock()
|
speaker.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
// volume up and volume down using -0.5 or +0.5
|
// Volume up and volume down using -0.5 or +0.5.
|
||||||
func (p *Player) SetVolume(v float64) float64 {
|
func (p *Player) SetVolume(v float64) float64 {
|
||||||
|
|
||||||
// check if no songs playing currently
|
// check if no songs playing currently
|
||||||
@ -178,6 +187,7 @@ func (p *Player) SetVolume(v float64) float64 {
|
|||||||
return p.volume
|
return p.volume
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Toggles the pause state.
|
||||||
func (p *Player) TogglePause() {
|
func (p *Player) TogglePause() {
|
||||||
|
|
||||||
if p.ctrl == nil {
|
if p.ctrl == nil {
|
||||||
@ -191,7 +201,7 @@ func (p *Player) TogglePause() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// skips current song
|
// Skips current song.
|
||||||
func (p *Player) Skip() {
|
func (p *Player) Skip() {
|
||||||
|
|
||||||
p.execSongSkip(p.currentSong)
|
p.execSongSkip(p.currentSong)
|
||||||
@ -217,6 +227,7 @@ func (p *Player) ToggleLoop() bool {
|
|||||||
return p.isLoop
|
return p.isLoop
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetPosition returns the current position of audio file.
|
||||||
func (p *Player) GetPosition() time.Duration {
|
func (p *Player) GetPosition() time.Duration {
|
||||||
|
|
||||||
if p.format == nil || p.streamSeekCloser == nil {
|
if p.format == nil || p.streamSeekCloser == nil {
|
||||||
@ -234,7 +245,7 @@ func (p *Player) Seek(pos int) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// isPaused is used to distinguish the player between pause and stop
|
// IsPaused is used to distinguish the player between pause and stop
|
||||||
func (p *Player) IsPaused() bool {
|
func (p *Player) IsPaused() bool {
|
||||||
if p.ctrl == nil {
|
if p.ctrl == nil {
|
||||||
return false
|
return false
|
||||||
@ -243,22 +254,23 @@ func (p *Player) IsPaused() bool {
|
|||||||
return p.ctrl.Paused
|
return p.ctrl.Paused
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetVolume returns current volume.
|
||||||
func (p *Player) GetVolume() float64 {
|
func (p *Player) GetVolume() float64 {
|
||||||
return p.volume
|
return p.volume
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetCurrentSong returns current song.
|
||||||
func (p *Player) GetCurrentSong() Audio {
|
func (p *Player) GetCurrentSong() Audio {
|
||||||
return p.currentSong
|
return p.currentSong
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasInit checks if the speaker has been initialized or not. Speaker
|
||||||
|
// initialization will only happen once.
|
||||||
func (p *Player) HasInit() bool {
|
func (p *Player) HasInit() bool {
|
||||||
return p.hasInit
|
return p.hasInit
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Player) SetIsRunning(value bool) {
|
// IsRunning returns true if Player is running an audio.
|
||||||
p.isRunning = value
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *Player) IsRunning() bool {
|
func (p *Player) IsRunning() bool {
|
||||||
return p.isRunning
|
return p.isRunning
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user