New example : Audio/sound_multi
This commit is contained in:
parent
81eae2921a
commit
5bed8af6d4
2 changed files with 65 additions and 0 deletions
65
examples/audio/sound_multi/main.go
Normal file
65
examples/audio/sound_multi/main.go
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
/*******************************************************************************************
|
||||||
|
*
|
||||||
|
* raylib [audio] example - Playing sound multiple times
|
||||||
|
*
|
||||||
|
* Example originally created with raylib 4.6
|
||||||
|
*
|
||||||
|
* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
|
||||||
|
* BSD-like license that allows static linking with closed source software
|
||||||
|
*
|
||||||
|
* Copyright (c) 2023 Jeffery Myers (@JeffM2501)
|
||||||
|
*
|
||||||
|
********************************************************************************************/
|
||||||
|
package main
|
||||||
|
|
||||||
|
import rl "github.com/gen2brain/raylib-go/raylib"
|
||||||
|
|
||||||
|
const (
|
||||||
|
screenWidth = 800
|
||||||
|
screenHeight = 450
|
||||||
|
maxSounds = 10
|
||||||
|
)
|
||||||
|
|
||||||
|
var soundArray [maxSounds]rl.Sound
|
||||||
|
var currentSound int32
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
rl.InitWindow(screenWidth, screenHeight, "raylib [audio] example - playing sound multiple times")
|
||||||
|
|
||||||
|
// Initialize audio device
|
||||||
|
rl.InitAudioDevice()
|
||||||
|
|
||||||
|
// Load WAV audio file into the first slot as the 'source' sound
|
||||||
|
// this sound owns the sample data
|
||||||
|
soundArray[0] = rl.LoadSound("sound.wav")
|
||||||
|
|
||||||
|
for i := 1; i < maxSounds; i++ {
|
||||||
|
// Load an alias of the sound into slots 1-9.
|
||||||
|
// These do not own the sound data, but can be played
|
||||||
|
soundArray[i] = rl.LoadSoundAlias(soundArray[0])
|
||||||
|
}
|
||||||
|
|
||||||
|
rl.SetTargetFPS(60) // Set our game to run at 60 frames-per-second
|
||||||
|
|
||||||
|
for !rl.WindowShouldClose() { // Detect window close button or ESC key
|
||||||
|
if rl.IsKeyPressed(rl.KeySpace) {
|
||||||
|
rl.PlaySound(soundArray[currentSound]) // play the next open sound slot
|
||||||
|
currentSound++ // increment the sound slot
|
||||||
|
if currentSound >= maxSounds { // if the sound slot is out of bounds, go back to 0
|
||||||
|
currentSound = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// Note: a better way would be to look at the list for the first sound that is not playing and use that slot
|
||||||
|
}
|
||||||
|
|
||||||
|
rl.BeginDrawing()
|
||||||
|
rl.ClearBackground(rl.RayWhite)
|
||||||
|
rl.DrawText("Press SPACE to PLAY a WAV sound!", 200, 180, 20, rl.LightGray)
|
||||||
|
rl.EndDrawing()
|
||||||
|
}
|
||||||
|
|
||||||
|
rl.UnloadSound(soundArray[0]) // Unload source sound data
|
||||||
|
rl.CloseAudioDevice() // Close audio device
|
||||||
|
|
||||||
|
rl.CloseWindow() // Close window and OpenGL context
|
||||||
|
}
|
BIN
examples/audio/sound_multi/sound.wav
Normal file
BIN
examples/audio/sound_multi/sound.wav
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue