sdk-world v2026.11.05
PS2 SDK - world tier (copyleft-allowed, non-essential packages)
Loading...
Searching...
No Matches
main.c
1#include <kernel.h>
2#include <loadfile.h>
3#include <math.h>
4#include <sbv_patches.h>
5#include <sifrpc.h>
6#include <stdint.h>
7#include <stdio.h>
8#include <unistd.h>
9
10#include "audio.h"
11#include "libsd_irx.h"
12#include "audio_irx.h"
13
14#define SAMPLE_RATE 44100
15#define FREQUENCY_HZ 440.0f
16#define CHUNK_FRAMES 1024
17#define SECONDS 3
18
19int main(void)
20{
21 audio_stream_format_t format = { SAMPLE_RATE, 16, 1 };
22 int16_t chunk[CHUNK_FRAMES];
23 float phase = 0.0f;
24 int chunks = SAMPLE_RATE * SECONDS / CHUNK_FRAMES;
25 int rc;
26
27 SifInitRpc(0);
28 sbv_patch_enable_lmb();
29 SifExecModuleBuffer(libsd_irx, size_libsd_irx, 0, NULL, NULL);
30 SifExecModuleBuffer(audio_irx, size_audio_irx, 0, NULL, NULL);
31
32 rc = audio_init();
33 if (rc == AUDIO_OK)
34 rc = audio_stream_start(&format);
35 if (rc != AUDIO_OK) {
36 printf("audio: %s\n", audio_get_error_message(rc));
37 SleepThread();
38 }
39
40 for (int i = 0; i < chunks; i++) {
41 for (int n = 0; n < CHUNK_FRAMES; n++) {
42 chunk[n] = (int16_t)(sinf(phase) * 12000.0f);
43 phase += 2.0f * 3.14159265f * FREQUENCY_HZ / SAMPLE_RATE;
44 if (phase > 2.0f * 3.14159265f)
45 phase -= 2.0f * 3.14159265f;
46 }
47 audio_stream_wait_until_writable(sizeof(chunk), 1000);
48 audio_stream_queue_pcm(chunk, sizeof(chunk));
49 }
50
52 usleep(10000);
55 printf("done\n");
56 SleepThread();
57 return 0;
58}
struct audio_stream_format audio_stream_format_t
#define AUDIO_OK
Definition audio.h:33
const char * audio_get_error_message(int error_code)
int audio_shutdown(void)
int audio_init(void)
int audio_stream_get_queued_bytes(void)
int audio_stream_end(void)
int audio_stream_start(const audio_stream_format_t *format)
int audio_stream_queue_pcm(const void *pcm, int32_t byte_count)
int audio_stream_wait_until_writable(int32_t byte_count, int32_t timeout_ms)