From d948585b00b4d08869417ee6169aae9ea39dde0a Mon Sep 17 00:00:00 2001 From: jacqueline Date: Fri, 17 May 2024 11:40:43 +1000 Subject: add a lua binding for playing a sine wave --- src/tangara/lua/lua_testing.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/tangara/lua/lua_testing.cpp (limited to 'src/tangara/lua/lua_testing.cpp') 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 + * + * 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(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 -- cgit v1.2.3