raphaelquast / beatstep

A Midi Remote Script for Ableton Live 10 & 11 and the Arturia Beatstep controller
https://raphaelquast.github.io/beatstep/
GNU General Public License v3.0
46 stars 13 forks source link

Not working on Live 9 (Windows) #76

Open audioop opened 3 years ago

audioop commented 3 years ago

I downloaded and unzipped the latest release (v2.0) and copied the entire folder into my MIDI Remote Scripts directory. BeatStep Q shows up as a control surface option in Ableton, but after it is selected, none of the buttons/encoders function as they are supposed to. Is this something that can be solved with troubleshooting, or has Live 9 support been stopped?

I really love the idea of this tool! Thanks for putting it together

raphaelquast commented 3 years ago

hey, are you working on MacOS?

audioop commented 3 years ago

No, I am on Windows 10

raphaelquast commented 3 years ago

OK, well, then I might be able to help in here... I primarily developed this on Ableton 10 & 11, but most of the functionality should work just fine on Ableton 9.
(except for the MIDI sequence editor) However since MidiRemoteScripts in Ableton 9 run on a rather old python 2 version, there might be some functionalities that need to be adjusted to maintain downward-compatibility...

Let's do some basic troubleshooting first and I'll see what I can do:

  1. make sure that you plug in your BeatStep controller after you launch Ableton! (otherwise the controller will not be initialized properly)

  2. if the above did not help, go to %appdata%\Ableton\ then select the sub-folder of your Ableton version and locate the Log.txt file inside the Preferences folder (e.g. C:\Users\<USERNAME>\AppData\Roaming\Ableton\<Live X.X.X>\Preferences\Log.txt and paste the relevant log-entries like so:

    <details>
    
    pase Log.txt here, leave a blank line after the <details> tag!
    
    </details>

    (the <details> ... </details> tag will just make the most probably very long comment collapsible )

audioop commented 3 years ago

I did as you said and still had the same issue. here's the log file:

[Log.txt](https://github.com/raphaelquast/beatstep/files/7085289/Log.txt)

looks like the error traceback starts on line 4296

so i looked through the code (i'm also an engineer) and it looks like this problem might have something to do with Live 9 not having Collections.

Update: I think I may have fixed it. in QBrowser.py at the property definition for collections, I did a version check and if it's less than version 10. if it's less than v10, then create the dummy item, but instead of passing the browser.colors list, pass an empty list

@property
    def collections(self):
        if self.app.get_major_version() >= 10:
            return dummy_item("Collections", self.app.browser.colors)
        else:
            return dummy_item("Collections", [])

this worked until I loaded a Live session that had grouped tracks and then I was getting a different error. I'll take a closer look later this evening

Update 2: the error was coming from QControlComponent.py. I took a look at the Live 9 API and the Track class doesn't have a group_track property. I added another version check on line 510 and that seemed to do the trick

for track in list(song.tracks) + list(song.return_tracks) + [song.master_track]:
            if track.is_grouped and self._parent.application().get_major_version() >= 10:
                group = track.group_track
                if group.fold_state is True:
                    continue
                else:
                    all_tracks.append(track)
            else:
                all_tracks.append(track)
raphaelquast commented 3 years ago

hey, thanks for having a close look! that's exactly what I thought... apparently I've implemented a few features that are not yet available in the Ableton9 API

your fixes look good, only I'd suggest to put the version-check out of the loop so that the check is done only once If I find some time I'll incorporate this and release a new version on the weekend!

audioop commented 3 years ago

no problem! again, thanks for the tool. it's breathing a ton of new life into my beatstep!