void test_string_channel(void) { const char orcS[] = "chn_S \"strchan1\",1\n chn_S \"strchan2\",2\n chn_S \"strchan3\",3\n instr 1\n endin\n"; csoundSetGlobalEnv("OPCODE6DIR64", "../../"); CSOUND *csound = csoundCreate(0); csoundCreateMessageBuffer(csound, 0); csoundSetOption(csound, "--logfile=NULL"); csoundCompileOrc(csound, orcS); int err = csoundStart(csound); CU_ASSERT(err == CSOUND_SUCCESS); csoundSetStringChannel(csound, "testing", "ttt"); int len = csoundGetChannelDatasize(csound, "testing"); char string[len]; csoundGetStringChannel(csound, "testing", string); CU_ASSERT_STRING_EQUAL(string, "ttt"); csoundSetStringChannel(csound, "strchan1", "strchan1_val"); csoundSetStringChannel(csound, "strchan2", "strchan2_val"); csoundSetStringChannel(csound, "strchan3", "strchan3_val"); csoundGetStringChannel(csound, "strchan1", string); CU_ASSERT_STRING_EQUAL(string, "strchan1_val"); csoundGetStringChannel(csound, "strchan2", string); CU_ASSERT_STRING_EQUAL(string, "strchan2_val"); csoundGetStringChannel(csound, "strchan3", string); CU_ASSERT_STRING_EQUAL(string, "strchan3_val"); csoundCleanup(csound); csoundDestroyMessageBuffer(csound); csoundDestroy(csound); }
QString PyQcsObject::getCsStringChannel(QString channel, int index) { CsoundEngine *e = m_qcs->getEngine(index); if (e != NULL) { CSOUND *cs = e->getCsound(); if (cs != NULL) { #ifdef CSOUND6 int maxlen = csoundGetChannelDatasize(cs, channel.toLocal8Bit()); #else int maxlen = csoundGetStrVarMaxLen(cs); #endif char *value = new char[maxlen]; if ( !( csoundGetChannelPtr(cs,(MYFLT **) &value,channel.toLocal8Bit(), CSOUND_STRING_CHANNEL | CSOUND_OUTPUT_CHANNEL))) { return QString(value); } } } QString message="Could not read from channel "+channel; PythonQtObjectPtr mainContext = PythonQt::self()->getMainModule(); mainContext.evalScript("print \'"+message+"\'"); return QString();//m_qcs->getCsChannel(channel, index); }