A possible way to break the ice is to begin with small simple changes. 1) to separate the parser and create some funcions for the API, for example TREE* csoundParseOrc(CSOUND*, FILE*) TREE* csoundParseString(CSOUND*, char*) - the code is in Engine/new_orc_parser.c and it is a quasi copy-paste - to decide if the preprocessor has to be separate or no 2) to isolate the compiler + API func, for example void* csoundCompileTree(CSOUND*, TREE*) and possibly void* csoundCompileTreeDump(CSOUND*, TREE*, char* filename) void* csoundLoadCompiledOrc(CSOUND*, char* filename) but requires thinking about the format 3) (de)alloc instr void* csoundDefineInstrument(CSOUND*, TREE*) void* csoundRemoveNumericInstrument(CSOUND*, int) void* csoundRemoveNamedInstrument(CSOUND*, char*) - more thinking about the structures - diagnosics 4) rewriting 5) rewriting 6) perhaps rewriting 0) rewriting this post tito ------------------------------------------------------------------------------ Keep Your Developer Skills Current with LearnDevNow! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-d2d _______________________________________________ Csound-devel mailing list Csound-devel@lists.sourceforge.net