diff options
| author | jacqueline <me@jacqueline.id.au> | 2024-05-17 11:40:43 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2024-05-17 11:40:43 +1000 |
| commit | d948585b00b4d08869417ee6169aae9ea39dde0a (patch) | |
| tree | 4104d5a6928e26b70d41c8326aaf1bfe4725aa2d /src/tangara/lua/lua_testing.cpp | |
| parent | 51bbb6a49544861edc957e0c91ceb1ac8349651b (diff) | |
| download | tangara-fw-d948585b00b4d08869417ee6169aae9ea39dde0a.tar.gz | |
add a lua binding for playing a sine wave
Diffstat (limited to 'src/tangara/lua/lua_testing.cpp')
| -rw-r--r-- | src/tangara/lua/lua_testing.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/tangara/lua/lua_testing.cpp b/src/tangara/lua/lua_testing.cpp new file mode 100644 index 00000000..36f632ce --- /dev/null +++ b/src/tangara/lua/lua_testing.cpp @@ -0,0 +1,40 @@ +/* + * Copyright 2024 jacqueline <me@jacqueline.id.au> + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#include "lua_testing.hpp" + +#include "lauxlib.h" +#include "lua.h" + +#include "audio/audio_events.hpp" +#include "events/event_queue.hpp" + +namespace lua { + +static auto testing_tone(lua_State* L) -> int { + auto freq = luaL_checkinteger(L, 1); + events::Audio().Dispatch( + audio::PlaySineWave{.frequency = static_cast<uint32_t>(freq)}); + events::Audio().Dispatch(audio::TogglePlayPause{.set_to = true}); + return 0; +} + +static const struct luaL_Reg kTestingFuncs[] = { + {"tone", testing_tone}, + {NULL, NULL}, +}; + +static auto lua_testing(lua_State* state) -> int { + luaL_newlib(state, kTestingFuncs); + return 1; +} + +auto RegisterTestingModule(lua_State* L) -> void { + luaL_requiref(L, "testing", lua_testing, false); + lua_pop(L, 1); +} + +} // namespace lua |
