-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathaudio_music_stream.php
108 lines (84 loc) · 3.25 KB
/
audio_music_stream.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
declare(strict_types=1);
use Nawarian\Raylib\Raylib;
use Nawarian\Raylib\Types\Color;
use function Nawarian\Raylib\{
BeginDrawing,
ClearBackground,
CloseAudioDevice,
CloseWindow,
DrawRectangle,
DrawRectangleLines,
DrawText,
EndDrawing,
GetMusicTimeLength,
GetMusicTimePlayed,
InitAudioDevice,
InitWindow,
IsKeyPressed,
LoadMusicStream,
PauseMusicStream,
PlayMusicStream,
ResumeMusicStream,
SetTargetFPS,
StopMusicStream,
UnloadMusicStream,
UpdateMusicStream,
WindowShouldClose
};
require_once __DIR__ . '/../../vendor/autoload.php';
// Initialization
//--------------------------------------------------------------------------------------
$screenWidth = 800;
$screenHeight = 450;
InitWindow($screenWidth, $screenHeight, 'raylib [audio] example - music playing (streaming)');
InitAudioDevice(); // Initialize audio device
$music = LoadMusicStream(__DIR__ . '/resources/country.mp3');
PlayMusicStream($music);
$pause = false;
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
//--------------------------------------------------------------------------------------
// Main game loop
while (!WindowShouldClose()) { // Detect window close button or ESC key
// Update
//----------------------------------------------------------------------------------
UpdateMusicStream($music); // Update music buffer with new stream data
// Restart music playing (stop and play)
if (IsKeyPressed(Raylib::KEY_SPACE)) {
StopMusicStream($music);
PlayMusicStream($music);
}
// Pause/Resume music playing
if (IsKeyPressed(Raylib::KEY_P)) {
$pause = !$pause;
if ($pause) {
PauseMusicStream($music);
} else {
ResumeMusicStream($music);
}
}
// Get timePlayed scaled to bar dimensions (400 pixels)
$timePlayed = GetMusicTimePlayed($music) / GetMusicTimeLength($music) * 400;
if ($timePlayed > 400) {
StopMusicStream($music);
}
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(Color::rayWhite());
DrawText('MUSIC SHOULD BE PLAYING!', 255, 150, 20, Color::lightGray());
DrawRectangle(200, 200, 400, 12, Color::lightGray());
DrawRectangle(200, 200, (int) $timePlayed, 12, Color::maroon());
DrawRectangleLines(200, 200, 400, 12, Color::gray());
DrawText('PRESS SPACE TO RESTART MUSIC', 215, 250, 20, Color::lightGray());
DrawText('PRESS P TO PAUSE/RESUME MUSIC', 208, 280, 20, Color::lightGray());
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
UnloadMusicStream($music); // Unload music stream buffers from RAM
CloseAudioDevice(); // Close audio device (music streaming is automatically stopped)
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------