mike wrote:I want this:Code: Select alllove.audio.stop(music/sound) -- kills instantlylove.audio.stop(music/sound, seconds) -- fades outlove.audio.fadeOut(music/sound, seconds) -- alternative, but not as spartaDoes OpenAL support this?
Not that I know of, but it shouldn't be hard to do (ourselves).
NÖÖB wrote:Here are my suggestions:-If at all possible, I'd like to see position seeking in music such as the .MOD and .XM formats. Like: "Play level1.xm pattern 02". The reason for this is that formats like this can contain several tunes in one file,thus saving some space.-Some function that returns where the pointer is currently at in the buffer, for synchronizing graphics to music. Probably easiest done on .XM like formats.Yeah I like modules..
Hello NÖÖB
. Everyone likes modules! The library SDL_mixer uses screws up some modules (I don't know if it's outdated or what), but SDL_sound seems to be rock solid.
About seeking: I just checked if
Sound_Seek works on modules; it does, but it uses milliseconds, not patterns. (Only tested for XM).
cag wrote:I highly doubt there's anywhere to go with the audio except crazy 3d sound positioning, and that might be overkill. Simple panning would be nice, though.
We'll have to think about that ... spatial sounds may be awesome.
OpenAL supports tons of stuff, I have no idea what some of it means, but maybe it can inspire
you to request a feature.
Code: Select all
/*
* LISTENER
* Listener represents the location and orientation of the
* 'user' in 3D-space.
*
* Properties include: -
*
* Gain AL_GAIN ALfloat
* Position AL_POSITION ALfloat[3]
* Velocity AL_VELOCITY ALfloat[3]
* Orientation AL_ORIENTATION ALfloat[6] (Forward then Up vectors)
*/
/**
* SOURCE
* Sources represent individual sound objects in 3D-space.
* Sources take the PCM data provided in the specified Buffer,
* apply Source-specific modifications, and then
* submit them to be mixed according to spatial arrangement etc.
*
* Properties include: -
*
* Gain AL_GAIN ALfloat
* Min Gain AL_MIN_GAIN ALfloat
* Max Gain AL_MAX_GAIN ALfloat
* Position AL_POSITION ALfloat[3]
* Velocity AL_VELOCITY ALfloat[3]
* Direction AL_DIRECTION ALfloat[3]
* Head Relative Mode AL_SOURCE_RELATIVE ALint (AL_TRUE or AL_FALSE)
* Reference Distance AL_REFERENCE_DISTANCE ALfloat
* Max Distance AL_MAX_DISTANCE ALfloat
* RollOff Factor AL_ROLLOFF_FACTOR ALfloat
* Inner Angle AL_CONE_INNER_ANGLE ALint or ALfloat
* Outer Angle AL_CONE_OUTER_ANGLE ALint or ALfloat
* Cone Outer Gain AL_CONE_OUTER_GAIN ALint or ALfloat
* Pitch AL_PITCH ALfloat
* Looping AL_LOOPING ALint (AL_TRUE or AL_FALSE)
* MS Offset AL_MSEC_OFFSET ALint or ALfloat
* Byte Offset AL_BYTE_OFFSET ALint or ALfloat
* Sample Offset AL_SAMPLE_OFFSET ALint or ALfloat
* Attached Buffer AL_BUFFER ALint
* State (Query only) AL_SOURCE_STATE ALint
* Buffers Queued (Query only) AL_BUFFERS_QUEUED ALint
* Buffers Processed (Query only) AL_BUFFERS_PROCESSED ALint
*/
Also, should LÖVE include ALUT or not? That would give us stuff like:
Code: Select all
#define ALUT_WAVEFORM_SINE 0x100
#define ALUT_WAVEFORM_SQUARE 0x101
#define ALUT_WAVEFORM_SAWTOOTH 0x102
#define ALUT_WAVEFORM_WHITENOISE 0x103
#define ALUT_WAVEFORM_IMPULSE 0x104
ALUT_API ALvoid *ALUT_APIENTRY alutLoadMemoryWaveform (ALenum waveshape, ALfloat frequency, ALfloat phase, ALfloat duration, ALenum *format, ALsizei *size, ALfloat *freq);
Now I'm
really looking in your direction, LaLaLove Devs.