mirror of
https://github.com/knightfox75/nds_nflib.git
synced 2025-06-19 01:05:34 -04:00
110 lines
3.2 KiB
C
110 lines
3.2 KiB
C
// SPDX-License-Identifier: MIT
|
|
//
|
|
// Copyright (c) 2009-2014 Cesar Rincon "NightFox"
|
|
//
|
|
// NightFox LIB - Include de funciones de sonido
|
|
// http://www.nightfoxandco.com/
|
|
// Version 20140413
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef __NF_SOUND_H__
|
|
#define __NF_SOUND_H__
|
|
|
|
#include <nds.h>
|
|
|
|
/// @file nf_sound.h
|
|
/// @brief Sound support functions.
|
|
|
|
/// @defgroup nf_sound Sound support functions.
|
|
///
|
|
/// Simple helpers to load and play raw PCM sound files.
|
|
///
|
|
/// @{
|
|
|
|
/// Number of slot availables for raw sound effects
|
|
#define NF_SLOTS_RAWSOUND 32
|
|
|
|
/// Buffers of all loaded sound files
|
|
extern char* NF_BUFFER_RAWSOUND[NF_SLOTS_RAWSOUND];
|
|
|
|
/// Struct that holds information about the loaded sound files
|
|
typedef struct {
|
|
bool available; ///< True if this slot is available
|
|
u32 size; ///< Size of the sound effect in bytes
|
|
u16 freq; ///< Frecuency of the sample
|
|
u8 format; ///< Format of the sample
|
|
} NF_TYPE_RAWSOUND_INFO;
|
|
|
|
/// Information of all sound effects.
|
|
extern NF_TYPE_RAWSOUND_INFO NF_RAWSOUND[NF_SLOTS_RAWSOUND];
|
|
|
|
/// Initialize all buffers and variables to load sound files.
|
|
///
|
|
/// You must use this function once before loading or using any sound file.
|
|
/// Remember to initialize the DS sound engine using soundEnable().
|
|
void NF_InitRawSoundBuffers(void);
|
|
|
|
/// Resets all sound buffers and clears the data in them.
|
|
///
|
|
/// It's useful when you change a level in the game, for example.
|
|
void NF_ResetRawSoundBuffers(void);
|
|
|
|
/// Load a RAW file from the filesystem to RAM.
|
|
///
|
|
/// To convert sound files to "RAW" format you can use the free program "Switch"
|
|
/// http://www.nch.com.au/switch/plus.html. The best parameters for "RAW" files
|
|
/// on the DS are: 8 bits signed, mono, 11025 Hz or 22050 Hz.
|
|
///
|
|
/// Example:
|
|
/// ```
|
|
/// // Load "music.raw" to slot 1. This file is encoded as 8 bit at 22050 Hz
|
|
/// NF_LoadRawSound("music", 1, 22050, 0);
|
|
/// ```
|
|
///
|
|
/// @param file File name without extension
|
|
/// @param id Destination slot number (0 - 31)
|
|
/// @param freq Frequency of the sample in Hz (11025, 22050, etc)
|
|
/// @param format Sample format (0 -> 8 bits, 1 -> 16 bits, 2 -> ADPCM).
|
|
void NF_LoadRawSound(const char* file, u16 id, u16 freq, u8 format);
|
|
|
|
/// Deletes from RAM the sound file stored in the specified slot.
|
|
///
|
|
/// @param id Slot number (0 - 31)
|
|
void NF_UnloadRawSound(u8 id);
|
|
|
|
/// Play the sound file loaded in the specified slot.
|
|
///
|
|
/// If you want to loop the sound you must also set the sample number where the
|
|
/// loop starts.
|
|
///
|
|
/// This fuction also returns the channel number asigned to the playback.
|
|
///
|
|
/// Example:
|
|
/// ```
|
|
/// // Play the sound stored in slot 1 with full volume (127), centered (64),
|
|
/// // with looping enabled from the beginning.
|
|
/// NF_PlayRawSound(1, 127, 64, true, 0);
|
|
/// ```
|
|
///
|
|
/// You can use libnds functions to pause, stop and set the volume of the sound
|
|
/// while it plays.
|
|
///
|
|
/// @param id Slot number (0 - 31)
|
|
/// @param volume Volume (0 - 127)
|
|
/// @param pan Panning. 0: left, 64: center, 127: right.
|
|
/// @param loop True if you want the sound to loop.
|
|
/// @param loopfrom Loop starting point
|
|
/// @return Channel number that is playing the sound.
|
|
u8 NF_PlayRawSound(u8 id, u8 volume, u8 pan, bool loop, u16 loopfrom);
|
|
|
|
/// @}
|
|
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|