mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-10-30 08:01:01 +00:00
Add ability to set global note frequency scale
This commit is contained in:
parent
18a3b333e8
commit
de9c3c35b2
9 changed files with 103 additions and 1 deletions
|
|
@ -8275,6 +8275,11 @@ function audio_stream_stop(audio)
|
||||||
-- ...
|
-- ...
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- @return number
|
||||||
|
function smlua_audio_utils_get_note_freq_scale()
|
||||||
|
-- ...
|
||||||
|
end
|
||||||
|
|
||||||
--- @param sequenceId integer
|
--- @param sequenceId integer
|
||||||
--- @param bankId integer
|
--- @param bankId integer
|
||||||
--- @param defaultVolume integer
|
--- @param defaultVolume integer
|
||||||
|
|
@ -8289,6 +8294,12 @@ function smlua_audio_utils_reset_all()
|
||||||
-- ...
|
-- ...
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- @param freq number
|
||||||
|
--- @return nil
|
||||||
|
function smlua_audio_utils_set_note_freq_scale(freq)
|
||||||
|
-- ...
|
||||||
|
end
|
||||||
|
|
||||||
--- @param x number
|
--- @param x number
|
||||||
--- @param y number
|
--- @param y number
|
||||||
--- @param z number
|
--- @param z number
|
||||||
|
|
|
||||||
|
|
@ -7599,6 +7599,24 @@
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
|
## [smlua_audio_utils_get_note_freq_scale](#smlua_audio_utils_get_note_freq_scale)
|
||||||
|
|
||||||
|
### Lua Example
|
||||||
|
`local numberValue = smlua_audio_utils_get_note_freq_scale()`
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
- None
|
||||||
|
|
||||||
|
### Returns
|
||||||
|
- `number`
|
||||||
|
|
||||||
|
### C Prototype
|
||||||
|
`f32 smlua_audio_utils_get_note_freq_scale(void);`
|
||||||
|
|
||||||
|
[:arrow_up_small:](#)
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
## [smlua_audio_utils_replace_sequence](#smlua_audio_utils_replace_sequence)
|
## [smlua_audio_utils_replace_sequence](#smlua_audio_utils_replace_sequence)
|
||||||
|
|
||||||
### Lua Example
|
### Lua Example
|
||||||
|
|
@ -7640,6 +7658,26 @@
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
|
## [smlua_audio_utils_set_note_freq_scale](#smlua_audio_utils_set_note_freq_scale)
|
||||||
|
|
||||||
|
### Lua Example
|
||||||
|
`smlua_audio_utils_set_note_freq_scale(freq)`
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
| Field | Type |
|
||||||
|
| ----- | ---- |
|
||||||
|
| freq | `number` |
|
||||||
|
|
||||||
|
### Returns
|
||||||
|
- None
|
||||||
|
|
||||||
|
### C Prototype
|
||||||
|
`void smlua_audio_utils_set_note_freq_scale(f32 freq);`
|
||||||
|
|
||||||
|
[:arrow_up_small:](#)
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
---
|
---
|
||||||
# functions from smlua_collision_utils.h
|
# functions from smlua_collision_utils.h
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1547,8 +1547,10 @@
|
||||||
- [audio_stream_set_tempo](functions-4.md#audio_stream_set_tempo)
|
- [audio_stream_set_tempo](functions-4.md#audio_stream_set_tempo)
|
||||||
- [audio_stream_set_volume](functions-4.md#audio_stream_set_volume)
|
- [audio_stream_set_volume](functions-4.md#audio_stream_set_volume)
|
||||||
- [audio_stream_stop](functions-4.md#audio_stream_stop)
|
- [audio_stream_stop](functions-4.md#audio_stream_stop)
|
||||||
|
- [smlua_audio_utils_get_note_freq_scale](functions-4.md#smlua_audio_utils_get_note_freq_scale)
|
||||||
- [smlua_audio_utils_replace_sequence](functions-4.md#smlua_audio_utils_replace_sequence)
|
- [smlua_audio_utils_replace_sequence](functions-4.md#smlua_audio_utils_replace_sequence)
|
||||||
- [smlua_audio_utils_reset_all](functions-4.md#smlua_audio_utils_reset_all)
|
- [smlua_audio_utils_reset_all](functions-4.md#smlua_audio_utils_reset_all)
|
||||||
|
- [smlua_audio_utils_set_note_freq_scale](functions-4.md#smlua_audio_utils_set_note_freq_scale)
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@
|
||||||
#include "effects.h"
|
#include "effects.h"
|
||||||
#include "external.h"
|
#include "external.h"
|
||||||
|
|
||||||
|
f32 gNoteFreqScale = 1.0f;
|
||||||
|
|
||||||
void note_set_resampling_rate(struct Note *note, f32 resamplingRateInput);
|
void note_set_resampling_rate(struct Note *note, f32 resamplingRateInput);
|
||||||
|
|
||||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||||
|
|
@ -598,7 +600,7 @@ void process_notes(void) {
|
||||||
frequency = (frequency < cap ? frequency : cap);
|
frequency = (frequency < cap ? frequency : cap);
|
||||||
scale *= 4.3498e-5f; // ~1 / 23000
|
scale *= 4.3498e-5f; // ~1 / 23000
|
||||||
velocity = velocity * scale * scale;
|
velocity = velocity * scale * scale;
|
||||||
note_set_frequency(note, frequency);
|
note_set_frequency(note, frequency * gNoteFreqScale);
|
||||||
note_set_vel_pan_reverb(note, velocity, pan, reverb);
|
note_set_vel_pan_reverb(note, velocity, pan, reverb);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@
|
||||||
#define NOTE_ALLOC_SEQ 4
|
#define NOTE_ALLOC_SEQ 4
|
||||||
#define NOTE_ALLOC_GLOBAL_FREELIST 8
|
#define NOTE_ALLOC_GLOBAL_FREELIST 8
|
||||||
|
|
||||||
|
extern f32 gNoteFreqScale;
|
||||||
|
|
||||||
void process_notes(void);
|
void process_notes(void);
|
||||||
void seq_channel_layer_note_decay(struct SequenceChannelLayer *seqLayer);
|
void seq_channel_layer_note_decay(struct SequenceChannelLayer *seqLayer);
|
||||||
void seq_channel_layer_note_release(struct SequenceChannelLayer *seqLayer);
|
void seq_channel_layer_note_release(struct SequenceChannelLayer *seqLayer);
|
||||||
|
|
|
||||||
|
|
@ -27547,6 +27547,21 @@ int smlua_func_audio_stream_stop(lua_State* L) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int smlua_func_smlua_audio_utils_get_note_freq_scale(UNUSED lua_State* L) {
|
||||||
|
if (L == NULL) { return 0; }
|
||||||
|
|
||||||
|
int top = lua_gettop(L);
|
||||||
|
if (top != 0) {
|
||||||
|
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "smlua_audio_utils_get_note_freq_scale", 0, top);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
lua_pushnumber(L, smlua_audio_utils_get_note_freq_scale());
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int smlua_func_smlua_audio_utils_replace_sequence(lua_State* L) {
|
int smlua_func_smlua_audio_utils_replace_sequence(lua_State* L) {
|
||||||
if (L == NULL) { return 0; }
|
if (L == NULL) { return 0; }
|
||||||
|
|
||||||
|
|
@ -27585,6 +27600,23 @@ int smlua_func_smlua_audio_utils_reset_all(UNUSED lua_State* L) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int smlua_func_smlua_audio_utils_set_note_freq_scale(lua_State* L) {
|
||||||
|
if (L == NULL) { return 0; }
|
||||||
|
|
||||||
|
int top = lua_gettop(L);
|
||||||
|
if (top != 1) {
|
||||||
|
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "smlua_audio_utils_set_note_freq_scale", 1, top);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
f32 freq = smlua_to_number(L, 1);
|
||||||
|
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "smlua_audio_utils_set_note_freq_scale"); return 0; }
|
||||||
|
|
||||||
|
smlua_audio_utils_set_note_freq_scale(freq);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
// smlua_collision_utils.h //
|
// smlua_collision_utils.h //
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
|
|
@ -32824,8 +32856,10 @@ void smlua_bind_functions_autogen(void) {
|
||||||
smlua_bind_function(L, "audio_stream_set_tempo", smlua_func_audio_stream_set_tempo);
|
smlua_bind_function(L, "audio_stream_set_tempo", smlua_func_audio_stream_set_tempo);
|
||||||
smlua_bind_function(L, "audio_stream_set_volume", smlua_func_audio_stream_set_volume);
|
smlua_bind_function(L, "audio_stream_set_volume", smlua_func_audio_stream_set_volume);
|
||||||
smlua_bind_function(L, "audio_stream_stop", smlua_func_audio_stream_stop);
|
smlua_bind_function(L, "audio_stream_stop", smlua_func_audio_stream_stop);
|
||||||
|
smlua_bind_function(L, "smlua_audio_utils_get_note_freq_scale", smlua_func_smlua_audio_utils_get_note_freq_scale);
|
||||||
smlua_bind_function(L, "smlua_audio_utils_replace_sequence", smlua_func_smlua_audio_utils_replace_sequence);
|
smlua_bind_function(L, "smlua_audio_utils_replace_sequence", smlua_func_smlua_audio_utils_replace_sequence);
|
||||||
smlua_bind_function(L, "smlua_audio_utils_reset_all", smlua_func_smlua_audio_utils_reset_all);
|
smlua_bind_function(L, "smlua_audio_utils_reset_all", smlua_func_smlua_audio_utils_reset_all);
|
||||||
|
smlua_bind_function(L, "smlua_audio_utils_set_note_freq_scale", smlua_func_smlua_audio_utils_set_note_freq_scale);
|
||||||
|
|
||||||
// smlua_collision_utils.h
|
// smlua_collision_utils.h
|
||||||
smlua_bind_function(L, "collision_find_ceil", smlua_func_collision_find_ceil);
|
smlua_bind_function(L, "collision_find_ceil", smlua_func_collision_find_ceil);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "seq_ids.h"
|
#include "seq_ids.h"
|
||||||
#include "audio/external.h"
|
#include "audio/external.h"
|
||||||
|
#include "audio/playback.h"
|
||||||
#include "game/camera.h"
|
#include "game/camera.h"
|
||||||
#include "engine/math_util.h"
|
#include "engine/math_util.h"
|
||||||
#include "pc/mods/mods.h"
|
#include "pc/mods/mods.h"
|
||||||
|
|
@ -144,6 +145,14 @@ void smlua_audio_utils_replace_sequence(u8 sequenceId, u8 bankId, u8 defaultVolu
|
||||||
LOG_LUA_LINE("Could not find m64 at path: %s", m64path);
|
LOG_LUA_LINE("Could not find m64 at path: %s", m64path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
f32 smlua_audio_utils_get_note_freq_scale(void) {
|
||||||
|
return gNoteFreqScale;
|
||||||
|
}
|
||||||
|
|
||||||
|
void smlua_audio_utils_set_note_freq_scale(f32 freq) {
|
||||||
|
gNoteFreqScale = freq;
|
||||||
|
}
|
||||||
|
|
||||||
//////////
|
//////////
|
||||||
// bass //
|
// bass //
|
||||||
//////////
|
//////////
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,8 @@
|
||||||
void smlua_audio_utils_reset_all(void);
|
void smlua_audio_utils_reset_all(void);
|
||||||
bool smlua_audio_utils_override(u8 sequenceId, s32* bankId, void** seqData);
|
bool smlua_audio_utils_override(u8 sequenceId, s32* bankId, void** seqData);
|
||||||
void smlua_audio_utils_replace_sequence(u8 sequenceId, u8 bankId, u8 defaultVolume, const char* m64Name);
|
void smlua_audio_utils_replace_sequence(u8 sequenceId, u8 bankId, u8 defaultVolume, const char* m64Name);
|
||||||
|
f32 smlua_audio_utils_get_note_freq_scale(void);
|
||||||
|
void smlua_audio_utils_set_note_freq_scale(f32 freq);
|
||||||
|
|
||||||
//////////
|
//////////
|
||||||
// bass //
|
// bass //
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@
|
||||||
#include "menu/intro_geo.h"
|
#include "menu/intro_geo.h"
|
||||||
#include "game/ingame_menu.h"
|
#include "game/ingame_menu.h"
|
||||||
#include "game/first_person_cam.h"
|
#include "game/first_person_cam.h"
|
||||||
|
#include "audio/playback.h"
|
||||||
|
|
||||||
#ifdef DISCORD_SDK
|
#ifdef DISCORD_SDK
|
||||||
#include "pc/discord/discord.h"
|
#include "pc/discord/discord.h"
|
||||||
|
|
@ -696,6 +697,7 @@ void network_shutdown(bool sendLeaving, bool exiting, bool popup, bool reconnect
|
||||||
gOverrideDialogColor = 0;
|
gOverrideDialogColor = 0;
|
||||||
gDialogMinWidth = 0;
|
gDialogMinWidth = 0;
|
||||||
gOverrideAllowToxicGasCamera = FALSE;
|
gOverrideAllowToxicGasCamera = FALSE;
|
||||||
|
gNoteFreqScale = 1.0f;
|
||||||
|
|
||||||
struct Controller* cnt = gMarioStates[0].controller;
|
struct Controller* cnt = gMarioStates[0].controller;
|
||||||
cnt->rawStickX = 0;
|
cnt->rawStickX = 0;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue