Skip to content

Commit

Permalink
Add SoundSamplePlayer rate property
Browse files Browse the repository at this point in the history
  • Loading branch information
ninovanhooff authored Jan 6, 2024
1 parent 7542a8d commit 569b787
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 4 deletions.
7 changes: 3 additions & 4 deletions src/playdate/bindings/sound.nim
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ type PlaydateSoundFileplayer {.importc: "const struct playdate_sound_fileplayer"
getLength {.importc: "getLength".}: proc (player: FilePlayerPtr): cfloat {.cdecl, raises: [].}
setOffset {.importc: "setOffset".}: proc (player: FilePlayerPtr; offset: cfloat) {.
cdecl, raises: [].}
# setRate* {.importc: "setRate".}: proc (player: ptr FilePlayer; rate: cfloat) {.cdecl.}
# setRate {.importc: "setRate".}: proc (player: FilePlayerPtr; rate: cfloat) {.cdecl.}
# setLoopRange* {.importc: "setLoopRange".}: proc (player: ptr FilePlayer;
# start: cfloat; `end`: cfloat) {.cdecl.}
# didUnderrun* {.importc: "didUnderrun".}: proc (player: ptr FilePlayer): cint {.cdecl.}
Expand Down Expand Up @@ -77,18 +77,17 @@ type PlaydateSoundSampleplayer {.importc: "const struct playdate_sound_samplepla
getVolume {.importc: "getVolume".}: proc (player: SamplePlayerPtr;
left: ptr cfloat; right: ptr cfloat) {.cdecl, raises: [].}
getLength {.importc: "getLength".}: proc (player: SamplePlayerPtr): cfloat {.cdecl, raises: [].}
setRate {.importc: "setRate".}: proc (player: SamplePlayerPtr; rate: cfloat) {.cdecl, raises: [].}
getRate {.importc: "getRate".}: proc (player: SamplePlayerPtr): cfloat {.cdecl, raises: [].}
# setOffset* {.importc: "setOffset".}: proc (player: SamplePlayerPtr; offset: cfloat) {.
# cdecl.}
# setRate* {.importc: "setRate".}: proc (player: ptr SamplePlayer; rate: cfloat) {.
# cdecl.}
# setPlayRange* {.importc: "setPlayRange".}: proc (player: ptr SamplePlayer;
# start: cint; `end`: cint) {.cdecl.}
# setFinishCallback* {.importc: "setFinishCallback".}: proc (
# player: ptr SamplePlayer; callback: SndCallbackProc) {.cdecl.}
# setLoopCallback* {.importc: "setLoopCallback".}: proc (player: ptr SamplePlayer;
# callback: SndCallbackProc) {.cdecl.}
# getOffset* {.importc: "getOffset".}: proc (player: ptr SamplePlayer): cfloat {.cdecl.}
# getRate* {.importc: "getRate".}: proc (player: ptr SamplePlayer): cfloat {.cdecl.}
setPaused {.importc: "setPaused".}: proc (player: SamplePlayerPtr; flag: cint) {.
cdecl, raises: [].}
# type PlaydateSoundSampleplayer* = ptr PlaydateSoundSampleplayerRaw
Expand Down
10 changes: 10 additions & 0 deletions src/playdate/sound.nim
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,16 @@ proc setPaused*(this: SamplePlayer, paused: bool) =
privateAccess(PlaydateSoundSampleplayer)
playdate.sound.sampleplayer.setPaused(this.resource, if paused: 1 else: 0)

proc `rate=`*(this: SamplePlayer, rate: float) =
privateAccess(PlaydateSound)
privateAccess(PlaydateSoundSampleplayer)
playdate.sound.sampleplayer.setRate(this.resource, rate.cfloat)

proc rate*(this: SamplePlayer): float =
privateAccess(PlaydateSound)
privateAccess(PlaydateSoundSampleplayer)
return playdate.sound.sampleplayer.getRate(this.resource).float

# PlaydateSound
var headphoneChanged: proc(headphone: bool, microphone: bool) = nil

Expand Down

0 comments on commit 569b787

Please sign in to comment.