Migration from Rosegarden

Having trouble with LMMS? Ask about it here.
Hello LMMS people,

First, my compliments on a great-looking software project! I've been using Rosegarden for years, and it's been working well enough for me, but upgrading to Ubuntu Studio 20.04 pointed me to LMMS, and I'm interested enough to give it a try.

Of course, as a long-time Rosegarden user, I have plenty of projects saved in Rosegarden's format (.rg files -- basic description here). My work typically combines audio and MIDI, along with things like effects that will probably never migrate from one program to another. Is there a recommended way to migrate a project from Rosegarden to LMMS? Or is the only option to export MIDI, copy over all the individual audio files, import MIDI into LMMS, and attempt to paste the audio files into the correct locations? (I'm hoping that since both Rosegarden and LMMS are open source, there will be a better option! Not every setting on every component will be possible to duplicate, of course, but I'm hoping there's a recipe or a guide to best practices.)

If it makes a difference, my platform is Ubuntu Studio 20.04, which installs with LMMS 1.2.1 by default.

Any advice you can give would be welcome. Thank you!
I am afraid you can only use midi data to export and import in to LMMS.

I am pretty sure LMMS can't read rosegarden files.


Can rosegarden record music?
LMMS can't do that. You would need to record with audacity, and then import the sound files into LMMS.
otherjon wrote:
Tue Apr 28, 2020 10:36 pm
Hello LMMS people,
Hi, Welcome to the Forum otherjon !
Here are all important links:
viewtopic.php?f=1&t=4740
-A few rules and useful forum instructions
Is there a recommended way to migrate a project from Rosegarden to LMMS?
I looked on the linked page, but there is no structure information. Is rg-file readable or encrypted?
Open a rg-project-file in note-pad
Can you 'read' it?
If you can -A N D you have coder-experience, then i can give you a description of lmms-readable-xml format, and you should be able to write your own port.
Or is the only option to export MIDI, copy over all the individual audio files, import MIDI into LMMS, and attempt to paste the audio files into the correct locations?
Afraid so

You could also reach out to the rg peeps..
musikbear wrote:
Wed Apr 29, 2020 5:06 pm
I looked on the linked page, but there is no structure information. Is rg-file readable or encrypted?
The .rg file format is (usually gzipped) XML. I do have some experience writing code, and while I'm a bit concerned that this is a larger project than I can commit to, please do point me to your description of the lmms-readable-xml format anyway and I'll see how far I get. (And thank you!)

Rosegarden will also export MusicXML, LilyPond, CSound, MUP (Music Publisher Score), and of course MIDI. I'm pretty sure that exporting to any of those formats will lose some data, but if LMMS imports them, then that would at least be helpful. If writing my own migration tool is too large a project, then maybe this will prove to be a better path for me. What formats can LMMS import?
musikbear wrote:
Wed Apr 29, 2020 5:06 pm
You could also reach out to the rg peeps..
If I make a serious attempt to write a migration tool, I'll definitely do that. I'll need the details of their file format, since I have about 40 songs to migrate and that's a bit too many for trial and error. :)
Gps wrote:
Wed Apr 29, 2020 10:27 am
Can rosegarden record music?
LMMS can't do that. You would need to record with audacity, and then import the sound files into LMMS.
That's an important point -- Rosegarden does allow for recording audio while playing back MIDI, for example. And if that's a major obstacle, then maybe LMMS isn't the best tool for the type of recording I'm hoping to do. But for the purpose of importing an existing song with existing audio files, that shouldn't be an obstacle.

Thanks again for your help!
otherjon wrote:
Sun May 03, 2020 1:35 am
Rosegarden will also export MusicXML, LilyPond, CSound, MUP, MIDI
]
There are a lot of options! Wonder how different MusicXML is from our mmp

What formats can LMMS import?
Very limited im afraid.
LMMS imports MIDI, but it must be well-formed. I recently learned that musescore exported MIDI is not in compliance with midi2, and we cant import it :/
We also import .ds drumsynth, but thats it.
Rosegarden does allow for recording audio while playing back MIDI, for example.
for that functionality you would need to run Audacity in the background.
-please do point me to your description of the lmms-readable-xml format
LMMS xml Is called MMP. It is standard well-formed xml, and it is not complicated. If you know xml, you will be able to read it rather immediately. The files grows fast in size, but not in complexity

If you have an example of the MusicXML, then post it in codebin or a similar service, or just zip it and upload it
One thing about porting that i want to make clear for you, is that unless the instrument-plugins you have used in rosegarden are VST-plugins that also works in LMMS, then you will ofcause NOT be able to recreate your rosegarden projects in lmms, so if the instruments are native to rosegarden, then you may as well export as MIDI, and re-instrument each rosegarden-project in lmms
Lmms do import MIDI-automation.
Okay, I'm not sure if I'm going to succeed, but I'd like to start trying to write a Rosegarden-to-LMMS conversion tool. But I think I'm going to need a little more help with the MMP file format. XML is easy enough to understand, but the list of possible element names, the list of possible attributes for each element, which are required vs. optional, the allowed structure (which elements may contain which other elements), etc. all mean that I need some help understanding what goes where, what values are permitted, and what the consequences of each value might be.

I created an empty LMMS project and saved it, just to see the simplest possible MMP file. I ran a little XML diagnostic tool on the result. Here's what it tells me:

Code: Select all

Element 'ControllerRackView':
  Possible attributes:
      'height'
      'maximized'
      'minimized'
      'visible'
      'width'
      'x'
      'y'
   Possible children: [NONE FOUND]
Element 'automationeditor':
  Possible attributes:
      'height'
      'maximized'
      'minimized'
      'visible'
      'width'
      'x'
      'y'
   Possible children: [NONE FOUND]
Element 'automationpattern':
  Possible attributes:
      'len'
      'mute'
      'name'
      'pos'
      'prog'
      'tens'
   Possible children:
      'object'
Element 'automationtrack':
  Possible attributes: [NONE FOUND]
   Possible children: [NONE FOUND]
Element 'controllers':
  Possible attributes: [NONE FOUND]
   Possible children: [NONE FOUND]
Element 'fxchain':
  Possible attributes:
      'enabled'
      'numofeffects'
   Possible children: [NONE FOUND]
Element 'fxchannel':
  Possible attributes:
      'muted'
      'name'
      'num'
      'volume'
   Possible children:
      'fxchain'
Element 'fxmixer':
  Possible attributes:
      'height'
      'maximized'
      'minimized'
      'visible'
      'width'
      'x'
      'y'
   Possible children:
      'fxchannel'
Element 'head':
  Possible attributes:
      'bpm'
      'masterpitch'
      'mastervol'
      'timesig_denominator'
      'timesig_numerator'
   Possible children: [NONE FOUND]
Element 'lmms-project':
  Possible attributes:
      'creator'
      'creatorversion'
      'type'
      'version'
   Possible children:
      'head'
      'song'
Element 'object':
  Possible attributes:
      'id'
   Possible children: [NONE FOUND]
Element 'pianoroll':
  Possible attributes:
      'height'
      'maximized'
      'minimized'
      'visible'
      'width'
      'x'
      'y'
   Possible children: [NONE FOUND]
Element 'projectnotes':
  Possible attributes:
      'height'
      'maximized'
      'minimized'
      'visible'
      'width'
      'x'
      'y'
   Possible children: [NONE FOUND]
Element 'song':
  Possible attributes: [NONE FOUND]
   Possible children:
      'ControllerRackView'
      'automationeditor'
      'controllers'
      'fxmixer'
      'pianoroll'
      'projectnotes'
      'timeline'
      'track'
      'trackcontainer'
Element 'timeline':
  Possible attributes:
      'lp0pos'
      'lp1pos'
      'lpstate'
   Possible children: [NONE FOUND]
Element 'track':
  Possible attributes:
      'muted'
      'name'
      'solo'
      'type'
   Possible children:
      'automationpattern'
      'automationtrack'
Element 'trackcontainer':
  Possible attributes:
      'height'
      'maximized'
      'minimized'
      'type'
      'visible'
      'width'
      'x'
      'y'
   Possible children: [NONE FOUND]
And that's with an empty LMMS project! So there's a lot I need to learn about. Is there anything like a reference for the MMP syntax?
otherjon wrote:
Wed Jun 10, 2020 4:08 am
I ran a little XML diagnostic tool on the result. Here's what it tells me:
Nee thats overkill
Just look at the MMP itself
Is there anything like a reference for the MMP syntax?
afaik no. I just studied the file, and worked out how to read and write blocks.
Most of what i have done has been in order to rescue someones project, that was botched.