Old Motifator threads are available in the Archive.
B.Minor
Total Posts: 126
Joined 10-22-2010 status: Pro |
Hi 5pinDIN, first of all thank you very much for developing such a great tool! I really appreciate all your efforts, especially your plan to dig into the MOXF Arpeggio format as well in order to see if it can be implemented. In general, I guess all MOXF users like me are always very grateful if someone like you - having much experience in coding - tries to close any gaps that appear whenever trying to make use of XF/XS/MOXF/MOX data across all of these different Motif series synthesizers. As you already started this thread by mentioning Yamaha’s free XS promotion library “XSpand Your World” for the XS, I thought it might be a good idea to provide you the related “X6G” file which includes the same Arpeggio data - just converted to the native MOXF format (I had to zip it first in order to upload it here). Please refer to the attachment which I created a while ago using Melas Tools Suite (XS -> XF -> MOXF). Maybe a “1:1” comparison between the original XS Arpeggios and their converted “MOXF clones” may expose the general format differences you might be interested in for your further investigations. Cheers and thanks again for your great efforts. File Attachments
XSPAND.zip (File Size: 23KB - Downloads: 352) |
5pinDIN
Total Posts: 11891
Joined 09-16-2010 status: Legend |
Hi JeanGoncalves and B.Minor, Thank you both for providing X6G files - I appreciate the effort. By examining them, I’ve already made some progress with deciphering the MOXF file format. My available time is somewhat limited right now, but I’ll continue to work on this project. |
JeanGoncalves
Total Posts: 31
Joined 10-25-2014 status: Regular |
Hello 5pinDIN
A la fin des données d’arpèges se trouve un tableau de 256 éléments de 8 octets. Structure :
(*) Il peut y avoir des trous dans la liste d’arpèges. (Ex : on peut créer sa première arpège avec le numéro 256)
Ce tableau est le point d’entrée de la liste d’arpèges :
On trouve à l’offset OD + 0x1C un tableau de 256 éléments de 6 octets de structure suivante :
On trouve ensuite la liste chainée de chunks de structure suivante :
Noms des chunks:
|
JeanGoncalves
Total Posts: 31
Joined 10-25-2014 status: Regular |
I give you my study python script.
If you run the script inside a python3 interpreter, you may
File Attachments
moxfArpeges.zip (File Size: 3KB - Downloads: 386) |
JeanGoncalves
Total Posts: 31
Joined 10-25-2014 status: Regular |
Correction of my previous post:
|
5pinDIN
Total Posts: 11891
Joined 09-16-2010 status: Legend |
Thank you for the above. I had already determined much of the MOXF file format, but your work fills in some things I had not yet found. With the (dubious) help of “Google Translate”, my meager knowledge of French, and what I had already known about the file format, I did a translation. I hope the following is relatively accurate…
At the end of the Arpeggio data is a table of 256 8-byte elements. Structure:
(*) There may be holes in the arpeggio list. (Eg one can create his first arpeggio with No. 256)
This table is the entry points to the list of arpeggios:
At offset OD + 0x1C is an array of 256 elements of 6 bytes of following structure:
Then there is the linked list of chunks of the following structure:
Names of chunks:
|
JeanGoncalves
Total Posts: 31
Joined 10-25-2014 status: Regular |
Hello
As I have a bad knowledge of english, I don’t know if the google traduction is accurate.
I give you a second script, which merge arps of two files in one file. I think examining the code is better that I try translate comments. I have test this script on my MOXF with merging my own arpeggios and a few arpeggios of a commercial .X6A file. For now, that works and the MOX is not “brick” ! Pay attention at the syntax of parameters in the call of the script. File Attachments
mergeArps.zip (File Size: 5KB - Downloads: 389) |
JeanGoncalves
Total Posts: 31
Joined 10-25-2014 status: Regular |
Syntax of script call : py mergeArps.py fileNameA fileNameB OutFileName list_of_arpeggios_to_merge
Ex of call : py mergeArps.py “D:/Yamaha/Cle64GO/BACKUPS/PATARP/TESTS/5-8-F-13.X6G” “D:/Yamaha/Cle64GO/BACKUPS/PATARP/MYEDMEXP.X6G” “ARPS/TEST4.X6G” a8,a7,b34,b16,b6,b1,a1 |
JeanGoncalves
Total Posts: 31
Joined 10-25-2014 status: Regular |
I have edit my post because I rename my script from moxfArpeges.py to mergeArps.py .
|
JeanGoncalves
Total Posts: 31
Joined 10-25-2014 status: Regular |
Hello
File Attachments
mergeArps.zip (File Size: 5KB - Downloads: 402) |
5pinDIN
Total Posts: 11891
Joined 09-16-2010 status: Legend |
Google’s translation was poor. What I posted was my version of it, with syntax, spelling, and technical corrections. |
JeanGoncalves
Total Posts: 31
Joined 10-25-2014 status: Regular |
Hello
File Attachments
tkmergeArps.zip (File Size: 4KB - Downloads: 381) |
5pinDIN
Total Posts: 11891
Joined 09-16-2010 status: Legend |
I encourage you to develop a fully implemented program. If it will be for the MOXF only, it would probably be appropriate to post future updates in the MOXF forum. |
Deepbyte
Total Posts: 8
Joined 05-30-2011 status: Newcomer |
Thank you so very, very much 5pinDIN! Your dedication to the MOTIF and to the members of Motifator is commendable and greatly appreciated. Best Regards! |
5pinDIN
Total Posts: 11891
Joined 09-16-2010 status: Legend |
You’re very welcome. |