23 void TTAudioGraphDescription::exportRuby(
const TTString& fullpathToFile)
27 TTStringVector nodeNames;
28 ofstream rubyFile(fullpathToFile.
c_str());
30 rubyContent +=
"require \"Jamoma\"\n\n";
31 exportRubyNode(rubyContent, index, nodeNames);
32 rubyFile.write(rubyContent.c_str(), rubyContent.size());
38 int TTAudioGraphDescription::exportRubyNode(
TTString& content,
int& index, TTStringVector& nodeNames)
45 snprintf(objName, 16,
"obj%i", index);
46 nodeNames.push_back(
TTString(objName));
49 content +=
" = TTAudio.new \"";
50 content += mClassName.
c_str();
52 #ifdef SORRY_THIS_IS_BROKEN
53 for (TTAudioGraphDescriptionIter input = mAudioDescriptions.begin(); input != mAudioDescriptions.end(); input++) {
54 int inputIndex = input->exportRubyNode(content, index, nodeNames);
56 content +=
".connect_audio ";
57 content += nodeNames[inputIndex];
60 for (TTGraphDescriptionIter input = mControlDescription.mInputDescriptions.begin(); input != mControlDescription.mInputDescriptions.end(); input++) {
61 int inputIndex = input->exportRubyNode(content, index, nodeNames);
63 content +=
".connect ";
64 content += nodeNames[inputIndex];
72 void TTAudioGraphDescription::exportCpp(
const TTString& fullpathToFile)
76 TTStringVector nodeNames;
77 ofstream aFile(fullpathToFile.
c_str());
79 content +=
"#include \"TTAudioGraphAPI.h\"\n\n";
80 content +=
"int main()\n{\n";
81 content +=
" TTAudioGraphInit();\n\n";
83 exportCppNode(content, index, nodeNames);
85 content +=
" return 0;\n";
87 aFile.write(content.c_str(), content.size());
91 int TTAudioGraphDescription::exportCppNode(
TTString& content,
int& index, TTStringVector& nodeNames)
98 snprintf(objName, 16,
"obj%i", index);
99 nodeNames.push_back(
TTString(objName));
101 content +=
" TTAudioGraphObjectPtr ";
104 content +=
" TTObjectBaseInstantiate(TT(\"audio.object\"), (TTObjectBasePtr*)&";
106 content +=
", TTValue(TT(\"";
107 content += mClassName.
c_str();
108 content +=
"\")))\n\n";
109 #ifdef SORRY_THIS_IS_BROKEN
111 for (TTAudioGraphDescriptionIter input = mAudioDescriptions.begin(); input != mAudioDescriptions.end(); input++) {
112 int inputIndex = input->exportCppNode(content, index, nodeNames);
115 content +=
"->connectAudio(";
116 content += nodeNames[inputIndex];
119 for (TTGraphDescriptionIter input = mControlDescription.mInputDescriptions.begin(); input != mControlDescription.mInputDescriptions.end(); input++) {
120 int inputIndex = input->exportCppNode(content, index, nodeNames);
123 content +=
"->connect(";
124 content += nodeNames[inputIndex];
132 void TTAudioGraphDescription::exportMax(
const TTString& fullpathToFile)
136 TTStringVector nodeNames;
137 ofstream aFile(fullpathToFile.
c_str());
140 content +=
" \"patcher\" : {\n";
141 content +=
" \"boxes\" : [\n";
143 exportMaxNode(content, index, nodeNames);
148 aFile.write(content.c_str(), content.size());
152 int TTAudioGraphDescription::exportMaxNode(
TTString& content,
int& index, TTStringVector& nodeNames)
160 snprintf(objName, 16,
"obj%i", index);
161 nodeNames.push_back(
TTString(objName));
167 content +=
" \"box\" : {\n";
168 content +=
" \"id\" : \"";
171 content +=
" \"maxclass\" : \"newobj\",\n";
172 content +=
" \"text\" : \"jcom.";
180 if (mClassName ==
TT(
"operator"))
183 content += mClassName.
c_str();
186 content +=
" \"patching_rect\" : [ 50.0, ";
187 snprintf(location, 16,
"%f", 400.0 - (index * 40.0));
189 content +=
", 100.0, 20.0]\n";
192 #ifdef SORRY_THIS_IS_BROKEN
194 for (TTAudioGraphDescriptionIter input = mAudioDescriptions.begin(); input != mAudioDescriptions.end(); input++) {
197 inputIndex = input->exportMaxNode(content, index, nodeNames);
199 if (input == mAudioDescriptions.begin()) {
200 for (TTGraphDescriptionIter graphInput = mControlDescription.mInputDescriptions.begin(); graphInput != mControlDescription.mInputDescriptions.end(); graphInput++) {
201 int graphInputIndex = graphInput->exportMaxNode(content, index, nodeNames);
203 if (index == graphInputIndex) {
205 content +=
" \"lines\" : [";
211 content +=
" \"patchline\" : {\n";
212 content +=
" \"destination\" : [ \"";
214 content +=
"\", 0],\n";
215 content +=
" \"source\" : [ \"";
216 content += nodeNames[graphInputIndex];
217 content +=
"\", 0]\n";
223 if (index == inputIndex) {
225 content +=
" \"lines\" : [";
231 content +=
" \"patchline\" : {\n";
232 content +=
" \"destination\" : [ \"";
234 content +=
"\", 0],\n";
235 content +=
" \"source\" : [ \"";
236 content += nodeNames[inputIndex];
237 content +=
"\", 0]\n";
Describes a node in an audio processing graph.
const char * c_str() const
Return a pointer to the internal C-string.
#define TT
This macro is defined as a shortcut for doing a lookup in the symbol table.
The TTString class is used to represent a string.