Loopy Pro: Create music, your way.

What is Loopy Pro?Loopy Pro is a powerful, flexible, and intuitive live looper, sampler, clip launcher and DAW for iPhone and iPad. At its core, it allows you to record and layer sounds in real-time to create complex musical arrangements. But it doesn’t stop there—Loopy Pro offers advanced tools to customize your workflow, build dynamic performance setups, and create a seamless connection between instruments, effects, and external gear.

Use it for live looping, sequencing, arranging, mixing, and much more. Whether you're a live performer, a producer, or just experimenting with sound, Loopy Pro helps you take control of your creative process.

Download on the App Store

Loopy Pro is your all-in-one musical toolkit. Try it for free today.

Any apps that can read Ableton .als files?

2456

Comments

  • edited December 2019

    @MrBlaschke said:
    Ok - i tested some more with @White and as i thought i have to include loops to read all batches of notes for several included tracks. I have a file from @White that includes more than one track and could work on it.

    I just want to make sure that it is really needed to do!? I have no use for it :smile: so i don’t want to waste time.

    Was it just a prove of concept for „nice to know“ or is it of real use? @Svetlovska and @AndyPlankton ?

    I've just tried to export a Groovebox project and the Retrobass .als clip did not contain any MIDI notes... Any idea how to do it right?

    Edit: Sorry, had to restart AppStore and update to the latest Groovebox version.

    @MrBlaschke: This makes GrooveBox a new free creator for MIDI files.

  • @MrBlaschke: This makes GrooveBox a new free creator for MIDI files.

    +1 this sounds really useful

    Also, I may be wrong but I think Ableton Live on desktop doesn’t currently export a multitrack midi file, this could be a nice workaround.

  • With @White s support i enabled loop processing - so any track/lane that is included in the ABL file gets parsed and outputs to a separate MIDI track



  • @MrBlaschke said:
    With @White s support i enabled loop processing - so any track/lane that is included in the ABL file gets parsed and outputs to a separate MIDI track

    I'm into Pythonista so I'll be more than happy to try! :smiley:

  • Hey @rs2000 - you have a PM

    The final result is now able to calc the time-offset correct

  • Consider the ABL to MID parser done :smile:

  • Thank you @SpookyZoo
    I am testing atm with @White and @rs2000 ... looks good so far :smile:

  • Another example for a converted ABL to MID:
    Track is courtesy of @rs2000

  • That was fun :smile:

  • So if get this, with this app and your code, one can now open up the Ableton file and save the exported midi file?

  • @Tones4Christ
    Theoretically, yes. It was a 1 or 2 hour project tonight without myself having the discussed software - so there might be issues, but all tested files from Groovebox worked ok so far.
    I have no detailed insights into the Ableton file format - all done by reverse reading/engineering of the given XML data.
    So „Your mileage may vary“ :smile:

  • edited December 2019

    Now I have to learn python in order not to make my purchase a one trick pony 😉

  • edited December 2019

    It can be expanded to work with the „File Share“ option of iOS - but i want to make some music now...This was just an accident - i did not plan to code tonight :smiley:

    So you might not need to learn Python @audiblevideo :smiley: Just use it.

    Instructions:

    • The Input-file has to be placed inside the same folder as the script.
    • Line 12: Define the Import-File
    • Line 64: Define the output file

    This is the momentary sourcecode for the converter, for anyone interested in it:

    EDIT:
    More actual source is on following page - so removed it here

  • @AmpifyxNovation would it have killed you to add just regular good old fashioned midi export? I mean look at all this. Still love groovebox, but this was a disappointment to see the midi export is exclusive to Ableton.

  • @MrBlaschke Do you have a direct link to the script or is just a matter of copy and paste the above text?

  • @SpookyZoo
    Just copy & Paste should do it. If you need the file drop me a note and i can send you a mail with it.

  • I agree. Charge us an IAP for midi in and out.

    @db909 said:
    @AmpifyxNovation would it have killed you to add just regular good old fashioned midi export? I mean look at all this. Still love groovebox, but this was a disappointment to see the midi export is exclusive to Ableton.

  • Well - if you don’t get your IAP - the script works :smile:

  • ❤️❤️👍🏼👍🏼

    @MrBlaschke said:
    Well - if you don’t get your IAP - the script works :smile:

  • @MrBlaschke said:
    It can be expanded to work with the „File Share“ option of iOS - but i want to make some music now...This was just an accident - i did not plan to code tonight :smiley:

    So you might not need to learn Python @audiblevideo :smiley: Just use it.

    Instructions:

    • The Input-file has to be placed inside the same folder as the script.
    • Line 12: Define the Import-File
    • Line 64: Define the output file

    This is the momentary sourcecode for the converter, for anyone interested in it:

    import xml.etree.ElementTree as ET
    from midiutil import MIDIFile
    
    track    = 0
    channel  = 0
    time     = 0    # In beats
    duration = 1    # In beats
    tempo    = 60   # In BPM
    volume   = 100  # 0-127, as per the MIDI standard
    
    #preparing XML tree
    tree = ET.parse('ableton_test_xml_3.abl')
    root = tree.getroot()
    
    #getting the tempo/bpm (rounded) from the Ableton file
    for master in root.iter('Tempo'):
      for child in master.iter('FloatEvent'):
          tempo = int(float(child.get('Value')))
          #print('tempo: ', tempo)
    
    #get amount of tracks to be allocated
    for tracks in root.iter('Tracks'):
      numTracks = len(tracks.getchildren()) + 1
    
    
    #Opening the target MIDI-file
    MyMIDI = MIDIFile(numTracks)
    MyMIDI.addTempo(track, time, tempo)
    
    
    for tracks in root.iter('Tracks'):
                  
          for miditracks in tracks.iter('MidiTrack'):
              print('MIDITRACK ', track)
              track = track + 1
    
    
              #getting the key(s) per miditrack
              for keytracks in miditracks.iter('KeyTrack'):
                  for child in keytracks.iter('MidiKey'):
                      keyt = int(child.get('Value'))
                      #print('key:', keyt)
          
    
                      #getting the notes
                      mycount = 0
                      for midiData in keytracks.iter('MidiNoteEvent'):
                          tim = midiData.get('Time')
                          dur = midiData.get('Duration')
                          vel = midiData.get('Velocity')
                          #print(tim, dur, vel)
    
    
                          #wrinting the actual note information to file
                          #MIDIFile.addNote(track, channel, pitch, time, duration, volume, annotation=None
                          MyMIDI.addNote(track, channel, keyt, float(tim), float(dur), int(vel))
                          mycount = mycount + 1
    
    
    
    
    with open("testfile_01.mid", "wb") as output_file:
        MyMIDI.writeFile(output_file)
    
    

    I work a little in JavaScript so this code seems pretty straight forward. I’ve been thinking of learning python for a number of reasons. Definitely after I finish this loosely typed web backbone though.

    I missed a “not” in my post. Got distracted by the doctor coming into the room to brief us about my dads condition. (Which is ok - we’re headed home :smile: )

  • @rs2000 said:

    @AndyPlankton said:

    @rs2000 said:
    I'd rather use Ableton Lite but for a 100% iOS-based solution, I'd recommend getting familiar with OMZ Pythonista, basically a Python IDE for iOS with support for pythonic 3rd-party libraries like writing MIDI files and reading XML. I don't think it would be too difficult to write an .als to .mid converter if that's really important enough to you.

    Pythonista can also receive files and "open in..." for sharing them to your sequencer of choice.

    Thanks for the tip, Pythonista does look useful... and yes, it's important enough for me to consider it....however I spend my 9 - 5:30 writing code of varying types....so when I'm thinking about music, I'd rather someone else was thinking about the code :)

    From reading the Mozaic monster thread, I'm sure we have quite a few good coders here. Maybe one of them finds the idea exciting enough to take care of it.
    I wonder though how many apps export the MIDI in Ableton export, the ones I've seen by now only export audio stems and I hope Groovebox isn't the only one.

    Gadget has one of the best Ableton exports out there. If you own the gadget vst version, Setting IOS gadget to Ableton export + vst results in you getting an Ableton project with all the midi data and automation and also all the vst versions of the gadgets on the correct tracks. It's a 100% perfect export wherein you can continue working immediately in Ableton.

  • @gonekrazy3000 said:

    @rs2000 said:

    @AndyPlankton said:

    @rs2000 said:
    I'd rather use Ableton Lite but for a 100% iOS-based solution, I'd recommend getting familiar with OMZ Pythonista, basically a Python IDE for iOS with support for pythonic 3rd-party libraries like writing MIDI files and reading XML. I don't think it would be too difficult to write an .als to .mid converter if that's really important enough to you.

    Pythonista can also receive files and "open in..." for sharing them to your sequencer of choice.

    Thanks for the tip, Pythonista does look useful... and yes, it's important enough for me to consider it....however I spend my 9 - 5:30 writing code of varying types....so when I'm thinking about music, I'd rather someone else was thinking about the code :)

    From reading the Mozaic monster thread, I'm sure we have quite a few good coders here. Maybe one of them finds the idea exciting enough to take care of it.
    I wonder though how many apps export the MIDI in Ableton export, the ones I've seen by now only export audio stems and I hope Groovebox isn't the only one.

    Gadget has one of the best Ableton exports out there. If you own the gadget vst version, Setting IOS gadget to Ableton export + vst results in you getting an Ableton project with all the midi data and automation and also all the vst versions of the gadgets on the correct tracks. It's a 100% perfect export wherein you can continue working immediately in Ableton.

    Cool. Good to know.

  • edited December 2019

    Wow - there are some big brains in this forum! Thanks all for these impressive efforts, and especially @MrBlaschke and @White . I am a total non-programmer and the extent of me using code is running other people’s Mozaic gadgets, but I’ll certainly take a look at this Pythonista malarkey, and that script and see if I can make it work for me. For what it’s worth, and if @AmpifyxNovation are listening, I too would pay for a straight MIDI export from Groovebox IAP, it would be a step change in the usefulness of the app for non casual users. From the impressive work done in this thread, it doesn’t look like it would be too hard for them to do, and I don’t think it would impinge on their obvious desire to sell sound packs, the opposite really, since it would make them much more useful in broader projects. Again, thanks all! :)

  • @Svetlovska said:
    Wow - there are some big brains in this forum! Thanks all for these impressive efforts, and especially @MrBlaschke and @White . I am a total non-programmer and the extent of me using code is running other people’s Mozaic gadgets, but I’ll certainly take a look at this Pythonista malarkey, and that script and see if I can make it work for me. For what it’s worth, and if @AmpifyxNovation are listening, I too would pay for a straight MIDI export from Groovebox IAP, it would be a step change in the usefulness of the app for non casual users. From the impressive work done in this thread, it doesn’t look like it would be too hard for them to do, and I don’t think it would impinge on their obvious desire to sell sound packs, the opposite really, since it would make them much more useful in broader projects. Again, thanks all! :)

    You might want to write to Ampify directly. Their representative is only occasionally here. Most devs have mentioned (and this was true when I was a dev) that requests and bug reports are most likely to be seen promptly if you send email or post by whatever their preferred method is.

  • @Svetlovska said:
    Wow - there are some big brains in this forum! Thanks all for these impressive efforts, and especially @MrBlaschke and @White . I am a total non-programmer and the extent of me using code is running other people’s Mozaic gadgets, but I’ll certainly take a look at this Pythonista malarkey, and that script and see if I can make it work for me. For what it’s worth, and if @AmpifyxNovation are listening, I too would pay for a straight MIDI export from Groovebox IAP, it would be a step change in the usefulness of the app for non casual users. From the impressive work done in this thread, it doesn’t look like it would be too hard for them to do, and I don’t think it would impinge on their obvious desire to sell sound packs, the opposite really, since it would make them much more useful in broader projects. Again, thanks all! :)

    Absolutely!
    I was more than stunned how fast @MrBlaschke was able to whip up completely working .als to .mid converter code, including a few fixes literally within minutes!

  • @rs2000 said:

    @Svetlovska said:
    Wow - there are some big brains in this forum! Thanks all for these impressive efforts, and especially @MrBlaschke and @White . I am a total non-programmer and the extent of me using code is running other people’s Mozaic gadgets, but I’ll certainly take a look at this Pythonista malarkey, and that script and see if I can make it work for me. For what it’s worth, and if @AmpifyxNovation are listening, I too would pay for a straight MIDI export from Groovebox IAP, it would be a step change in the usefulness of the app for non casual users. From the impressive work done in this thread, it doesn’t look like it would be too hard for them to do, and I don’t think it would impinge on their obvious desire to sell sound packs, the opposite really, since it would make them much more useful in broader projects. Again, thanks all! :)

    Absolutely!
    I was more than stunned how fast @MrBlaschke was able to whip up completely working .als to .mid converter code, including a few fixes literally within minutes!

    Mind Blown! That really was impressive @MrBlaschke! This whole thread was an absolute joy to witness.. everyone chiming in with ideas and a master coder curious enough to try them.. and then to actually create a useful tool.. congrats to all involved..

    I ❤️ this place and the whole community here.. it’s a thing of beauty!

  • Thanks for your kind words all - but it is not that sophisticated work.
    Anyhow - enjoy it :smile:
    See it as an early Christmas gift or late „Nikolaus Geschenk“ as we say here, where i live :smiley:

    Happy whatever all :smiley:

  • @MrBlaschke

    Instructions:

    The Input-file has to be placed inside the same folder as the script.
    Line 12: Define the Import-File
    Line 64: Define the output file

    For clarity:
    Line 12
    tree = ET.parse('ableton_test_xml_3.abl')

    replace 'ableton_test_xml_3.abl' with the name of your Import-File within quotes.

    QUESTION:
    Line 64 (there is none)

    Did you mean Line 62
    with open("testfile_01.mid", "wb") as output_file:

    replacing the first of the parameters with the name of your Output-File in double quotes

    or

    Line 63
    MyMIDI.writeFile(output_file)

    replacing (output_file) with the name of your Output-file in parenthesis

    Thanks ;)

  • edited December 2019

    Here's an update with the input and output files set at the top for easier editing.
    I hope the code didn't get obfuscated by the forum preprocessor...

    import xml.etree.ElementTree as ET
    from midiutil import MIDIFile
    
    infile = "ableton_test_xml_2.txt"
    outfile = "testfile_01.mid"
    
    track    = 0
    channel  = 0
    time     = 0    # In beats
    duration = 1    # In beats
    tempo    = 60   # In BPM
    volume   = 100  # 0-127, as per the MIDI standard
    
    #preparing XML tree
    tree = ET.parse(infile)
    root = tree.getroot()
    
    #getting the tempo/bpm (rounded) from the Ableton file
    for master in root.iter('Tempo'):
        for child in master.iter('FloatEvent'):
            tempo = int(float(child.get('Value')))
            #print('tempo: ', tempo)
    
    #get amount of tracks to be allocated
    for tracks in root.iter('Tracks'):
        numTracks = len(tracks.getchildren()) + 1
    
    
    #Opening the target MIDI file
    MyMIDI = MIDIFile(numTracks)  # One track, defaults to format 1 (tempo track is created automatically)
    MyMIDI.addTempo(track, time, tempo)
    
    
    for tracks in root.iter('Tracks'):
    
            for miditracks in tracks.iter('MidiTrack'):
                print('MIDITRACK ', track)
                track = track + 1
    
    
                #getting the key(s) per miditrack
                for keytracks in miditracks.iter('KeyTrack'):
                    for child in keytracks.iter('MidiKey'):
                        keyt = int(child.get('Value'))
                        print('key:', keyt)
    
    
                        #getting the notes
                        mycount = 0
                        for midiData in keytracks.iter('MidiNoteEvent'):
                            tim = midiData.get('Time')
                            dur = midiData.get('Duration')
                            vel = midiData.get('Velocity')
                            print(tim, dur, vel)
    
    
                            #writing the actual note information to file
                            MyMIDI.addNote(track, channel, keyt, float(tim), float(dur), int(vel))
                            mycount = mycount + 1
    
    with open(outfile, "wb") as output_file:
        MyMIDI.writeFile(output_file)
    
    
Sign In or Register to comment.