diff options
Diffstat (limited to 'examples/luaopcode.csd')
-rw-r--r-- | examples/luaopcode.csd | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/examples/luaopcode.csd b/examples/luaopcode.csd new file mode 100644 index 0000000..1a3612a --- /dev/null +++ b/examples/luaopcode.csd @@ -0,0 +1,61 @@ +<CsoundSynthesizer> + +<CsInstruments> +lua_opdef "luatest", {{ +local ffi = require("ffi") +local string = require("string") +local csoundLibrary = ffi.load('csound64.dll.5.2') +ffi.cdef[[ + int csoundGetKsmps(void *); + double csoundGetSr(void *); + struct luatest_arguments {double *out; double *stringout; char *stringin; double *in1; double *in2; double sr; int ksmps; }; +]] +function luatest_init(csound, opcode, carguments) + local arguments = ffi.cast("struct luatest_arguments *", carguments) + arguments.sr = csoundLibrary.csoundGetSr(csound) + print(string.format('stringin: %s', ffi.string(arguments.stringin))) + print(string.format('sr: %f', arguments.sr)) + arguments.ksmps = csoundLibrary.csoundGetKsmps(csound) + print(string.format('ksmps: %d', arguments.ksmps)) + arguments.out[0] = arguments.in1[0] * arguments.in2[0] + ffi.copy(arguments.stringout, 'Hello, world!') + return 0 +end +function luatest_kontrol(csound, opcode, carguments) + local arguments = ffi.cast("struct luatest_arguments *", carguments) + arguments.out[0] = arguments.in1[0] * arguments.in2[0] + return 0 +end +function luatest_noteoff(csound, opcode, carguments) + local arguments = ffi.cast("struct luatest_arguments *", carguments) + arguments.out[0] = arguments.in1[0] * arguments.in2[0] + print('off') + return 0 +end +}} + +instr 1 + iresult = 0 + Stringin = "stringin" + Stringout = "stringout" + lua_iopcall "luatest", iresult, Stringout, Stringin, p2, p3 + prints Stringout +endin +instr 2 + iresult = 0 + Stringin = "stringin" + Stringout = "initial value" + lua_iopcall_off "luatest", iresult, Stringout, Stringin, p2, p3 + print iresult + prints Stringout +endin +</CsInstruments> + +<CsScore> +i 1 1 2 +i 2 2 2 +i 1 3 2 +e +</CsScore> + +</CsoundSynthesizer> |