From e6b150136c7cce81f63b301940c47df2bf9c14cd Mon Sep 17 00:00:00 2001 From: Jairinho Date: Tue, 1 Mar 2022 21:45:06 -0300 Subject: [PATCH] audio fix --- chip8/beep.wav | Bin 26876 -> 102335 bytes main.go | 19 ++++++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/chip8/beep.wav b/chip8/beep.wav index 8343a63e7a68e3e5ebceb5659c5ab99c2cc263d2..5852a3dcdfee158efd0586e63e18bec2221cadca 100644 GIT binary patch literal 102335 zcmeH}TT>O+7Dn+ckNFAtE2&DX%BvSpV-hf;A{$Yo0b)QQ5P}+!cnKgP_xl}F`FmNb zyT47(-Mw++OjYtQ=BZPuc#<{u`g(k8oHJjYKK=Ljsiv0Co4>r)b?>uJo0^(Vh5vl9 z)s+1ARMRI-SKIEjy$Juz(qfo}g@ySrb79_vnGN$c%uJj&VWzvzoH={;?74I2&YwTu z+}zyK(sJR#g^L$2Ub=MY>oAuuU;ZY{w_&~u(;B8N%#|?Thq)T3z5UJh_V(7+=H}+c z#>V>k`r6vs>gwuBnC0c=r6v84@e`if-rjyK%=Kh$#Odhh7(UqF-`m^U-QC&QDcc&? zhOO<5{OoK&xA*G{mYST%tk=qjQk!^`5?Ax3!maNA)zG#23fGF2Njei26%tIKsIr%St4d|Dp|AC-u&Vm8KCnsv zhHH%`*E)z~Bn=A{OBz;F?CXVHx>a}yvTNDS789&Amf%q7szwsbU2D1_FlGy@stG37 ziZ9Xe6%Gjw6t7j5V6j@o1arFzV1!L|s#SP0iq(p%PMF|C{REG?l~v302!>nz7u6E) zmw4RTIT;cP%S<0RLg)twFCy%@`6FNya{40lOWd8<3zO#7+6bSU@b2gRLh$n z)-nlVEj>a8TU|=mT7*xxfAl5PoVl6#RRLg*YwFCy%@`6FNya{40lOWd8 z<3zO#7+6bSU@b2gRLh$n)-nlVEj>a8TU|=mT7*xxfAl5PoVl6#RRLg*Y zwFCy%@`6FNya{40lOWd8<3zO#7+6bSU@b2gRLh$n)-nlVEj>a8TU|=mT z7*xxfAl5PoVl6#RRLg*YwFCy%@`6FNya{40lOWd8<3zO#7+6bSU@b2gRLh$n)-nlV zEj>a8TU|=mT7*xxfAl5PoVl6#RRLg*YwFCy%@`6FNya{40lOWd8<3zO# z7+6bSU@b2gRLh$n)-nlVEj>a8TU|=mT7*xxfAl5PoVl6#RRLg*YwFCy% z@`6FNya{40lOWd8<3zO#7+6bSU@b2gRLh$n)-nlVEj>a8TU|=mT7*xxf zAl5PoVl6#RRLg*YwFCy%@`6FNya{40lOWd8<3zO#7+6bSU@b2gRLh$n)-nlVEj>a8TU|=mT7*xxfAl5PoVl6#RRLg*YwFCy%@`6FNyb1n~t<@IhN|^XyT#eHn z=31QVac;!vh;uVeELCS`C7G_Ssl$VV{r&yDz1`j2ot^FN?X9h?&CQLCjrH~QwY9a? z)zy`imF1b%*4ElBaY?eJY)Q?Qt}wR-_TrYExFuNyUC1%uWqtR zuQ8kLn0XUsdV0D$c+7;8&Q(-122lEv<>58!DUYzmdV-!}T z8zv_w|BUl`q7u&!Q}Vs_EwY@dm(Ye}&HXSB!>34MiaBL>sBU;2=2e`RJ#j}0RJZ-w z)eUJ%g#~d*m>Lq=gH~g~2VgLXD literal 26876 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 diff --git a/main.go b/main.go index 1004071..d5248f3 100644 --- a/main.go +++ b/main.go @@ -1,12 +1,14 @@ package main import ( + "bytes" _ "embed" "log" "time" "github.com/hajimehoshi/ebiten/v2" "github.com/hajimehoshi/ebiten/v2/audio" + "github.com/hajimehoshi/ebiten/v2/audio/wav" "github.com/tangzero/chip8-emulator/chip8" ) @@ -92,8 +94,11 @@ func KeyPressed(key uint8) bool { } func SoundPlayer(sound []byte) (func(), func()) { - player := audio.NewContext(chip8.SampleRate).NewPlayerFromBytes(sound) - player.SetVolume(0.3) + stream, err := wav.DecodeWithSampleRate(chip8.SampleRate, bytes.NewReader(sound)) + assert(err) + player, err := audio.NewContext(chip8.SampleRate).NewPlayer(stream) + assert(err) + player.SetVolume(0.5) return PlaySound(player), StopSound(player) } @@ -109,7 +114,7 @@ func PlaySound(player *audio.Player) func() { func StopSound(player *audio.Player) func() { return func() { player.Pause() - player.Seek(0) + assert(player.Rewind()) } } @@ -124,7 +129,11 @@ func main() { ebiten.SetWindowSize(Width, Height) ebiten.SetWindowTitle("CHIP-8 : " + rom.Name) - if err := ebiten.RunGame(&gui); err != nil { - log.Fatal(err) + assert(ebiten.RunGame(&gui)) +} + +func assert(err error) { + if err != nil { + log.Panic(err) } }