libcm is a C development framework with an emphasis on audio signal processing applications.
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

cmXScore.h 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #ifndef cmXScore_h
  2. #define cmXScore_h
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. enum
  7. {
  8. kOkXsRC = cmOkRC,
  9. kXmlFailXsRC,
  10. kLHeapFailXsRC,
  11. kSyntaxErrorXsRC,
  12. kCsvFailXsRC,
  13. kUnterminatedTieXsRC,
  14. kUnterminatedSlurXsRC,
  15. kUnterminatedOctaveShiftXsrRC,
  16. kPedalStateErrorXsRc,
  17. kMidiFailXsRC,
  18. kFileFailXsRC,
  19. kSvgFailXsRC,
  20. kOverlapWarnXsRC,
  21. kZeroLengthEventXsRC
  22. };
  23. typedef cmRC_t cmXsRC_t;
  24. typedef cmHandle_t cmXsH_t;
  25. extern cmXsH_t cmXsNullHandle;
  26. // Prepare the MusicXML file:
  27. //
  28. // 1) Convert XML to UTF-8:
  29. // a. Change: encoding = 'UTF-16' to encoding='UTF-8'
  30. // b. Emacs C-x <RET> f utf-8 <RET>
  31. // c. Change: <?xml ... encoding = 'UTF-16' to encoding='UTF-8' ...?>
  32. //
  33. // 2) Replace "DoletSibelius Unknown Symbol Index " with "DoletSibelius unknownSymIdx="
  34. //
  35. // Steps 1) and 2) can be automated by in emacs by:
  36. //
  37. // M-x load-file ~/src/emacs/proc_music_xml.el
  38. //
  39. // Initialize an cmXScore object from a Sibelius generated MusicXML file.
  40. // 'editFn' is used to add additional information to the score.
  41. // See cmXScoreGenEditFile()
  42. cmXsRC_t cmXScoreInitialize( cmCtx_t* ctx, cmXsH_t* hp, const cmChar_t* xmlFn, const cmChar_t* editFn );
  43. cmXsRC_t cmXScoreFinalize( cmXsH_t* hp );
  44. bool cmXScoreIsValid( cmXsH_t h );
  45. cmXsRC_t cmXScoreWriteCsv( cmXsH_t h, const cmChar_t* csvFn );
  46. void cmXScoreReport( cmXsH_t h, cmRpt_t* rpt, bool sortFl );
  47. // Generate a template 'edit file'. This file can be edited by hand to included additional
  48. // information in the score. See the 'editFn' argument to cmXScoreInitialize() for where
  49. // this file is used.
  50. cmXsRC_t cmXScoreGenEditFile( cmCtx_t* ctx, const cmChar_t* xmlFn, const cmChar_t* outFn );
  51. // Generate the CSV file suitable for use by cmScore.
  52. //
  53. // If the file referenced by 'reorderFn' exists then it is used to attach additional
  54. // score information. If it does not then a new edit file is created via an
  55. // internal call to cmXScoreGenEditFile(). This file can then be edited
  56. // to include the additional score file information and passed back by a later
  57. // call to this same function.
  58. cmXsRC_t cmXScoreTest( cmCtx_t* ctx, const cmChar_t* xmlFn, const cmChar_t* reorderFn, const cmChar_t* csvOutFn, const cmChar_t* midiOutFn );
  59. #ifdef __cplusplus
  60. }
  61. #endif
  62. #endif