< Back to IRCAM Forum

Contributing to the converter tool

The converter tool is very handy! As I learn more about Antescofo I am finding that some additional features might be handy. I’d be happy to try implementing these features if you wanted help :slight_smile:

Specifically, I’d like to be able to specify an instrument in the MIDI/XML which is “translated” to be followed by Antescofo, and other instruments to be transcribed as events to be sent to Max for MIDI playback.

For example if I have a staff called “synth” which is designated as “accompaniment” I might get:

NOTE E4 1/4 measure1
	synth E2

Happy to chat about contributing if this might be possible!

@c-harl-ie I guess it’s time to make that project Open Source and also share our very latest improvements there (many!). Stay tuned… We are going to publish it soon and announce here.

Thanks for the kick-off!

Here you go: GitHub - Antescofo/antescofoimporter: MusicXML to Antescofo Convertor

Note: The Importer project is written in C++ and currently only for MusicXML. Largely undocumented… All contributions welcome as we make it more readable.

Note 2: the antescofoimporter is designed to convert musical notation to Antescofo’s event system. It does not attempt to convert any accompaniment into Antescofo language system! We believe that’s a personal endeavor but discussions are welcome on this!


Excellent! Looking forward to it. :grinning:

Regarding accompaniment conversion, I have been having relatively good success with the javascript implementation that @arshiacont released in 2015 (AntescofoImporter_0.144) found here: https://forge.ircam.fr/p/AscoGraph/downloads/?_px_sk=creation_dtime&_px_so=d&_px_p=2 (I proceeded here ignoring the warnings; hope this is a legitimate site)

It still works on Mac OS Ventura (haven’t tried it on the M series macbooks).

I wish there was a way to separate the accompaniment into measures, rather than churning out the entire accompaniment in one stream however. It also seems to work only in MIDI mode, and it cannot convert release velocity from the Disklavier.

@cow The just open-sourced project is the same you are referring to… it was never in Javascript (fortunately so…). It is in C++ and it still compiles even on more recent Macs! :slight_smile:

The Javascript was just calling the antescofo_importer in command-line with correct options!

We have been improving the conversion from MusicXML to Asco over the years. The “accompaniment” conversion hasn’t changed but it is well-organized and you should be able to output whatever you want based on your input!

From what I see (yeah… this code makes me feel old;), the code reads Tracks and convert them! Negative track means it is destined for accompaniment! In case the velocity is not read, it should be easy to add.

Feel free to fork and play around. We’d be happy to guide you on your journey.

Thanks @arshiacont, this is great. One question on each of your notes:

  1. You say currently only for MusicXML but I have tested with MIDI and that works as well!

  2. As @cow has mentioned it appears that negative tracks are added as ActionGroups which trigger MIDI events— the UI on the importer even lets you manually pick which tracks are followed and which are “accompaniment”! This is a fair way toward doing what I want, I think.

I’ve opened a basic PR and have another ready to follow— simple stuff getting the project set to compile on my M1 iMac, but better to start with small PRs I think :slight_smile:

@cow maybe we can keep in touch about getting note-by-note ActionGroup import happening here!

You are absolutely right Charles (and thanks for your contribs). :slight_smile: I fully remember now the MIDI output on accompaniment… . At the time, the Antescofo lang was not as rich as it is now today so those “Action Groups” can be largely improved.

Know that in the repo, the MusicXML->Asco has been extensively improved! We used this script last year to convert a fairly complicated piece of Philippe Manoury for D. Barenboim straight from MusicXML to Asco! Just mentionning this in case working with Rich XML is a better alternative for your use case.

1 Like