@@ -255,8 +255,9 @@ def __init__( self ):
255
255
self .SCROLL_LEFT = - 1
256
256
self .SCROLL_RIGHT = 1
257
257
258
-
259
- def __delete__ ( self ):
258
+ # LOL; That fixes a years old bug. Officially an idiot now :)
259
+ # def __delete__( self ):
260
+ def __del__ ( self ):
260
261
self .Close ()
261
262
262
263
@@ -316,7 +317,7 @@ def ButtonFlush( self ):
316
317
while doReads < 3 :
317
318
if self .midi .ReadCheck ():
318
319
doReads = 0
319
- a = self .midi .ReadRaw ()
320
+ self .midi .ReadRaw ()
320
321
else :
321
322
doReads += 1
322
323
time .wait ( 5 )
@@ -1670,7 +1671,7 @@ def TemplateSet( self, templateNum ):
1670
1671
if templateNum < 1 or templateNum > 16 :
1671
1672
return
1672
1673
else :
1673
- self .UserTemplate = template
1674
+ self .UserTemplate = templateNum
1674
1675
self .midi .RawWriteSysEx ( [ 0 , 32 , 41 , 2 , 17 , 119 , templateNum - 1 ] )
1675
1676
1676
1677
@@ -2493,26 +2494,63 @@ class LaunchpadLPX( LaunchpadPro ):
2493
2494
2494
2495
#-------------------------------------------------------------------------------------
2495
2496
#-- Opens one of the attached Launchpad MIDI devices.
2496
- #-- Uses search string "LPX", by default.
2497
+ #-- This is one of the few devices that has different names in different OSs:
2498
+ #--
2499
+ #-- Windoze
2500
+ #-- (b'MMSystem', b'LPX MIDI', 1, 0, 0)
2501
+ #-- (b'MMSystem', b'MIDIIN2 (LPX MIDI)', 1, 0, 0)
2502
+ #-- (b'MMSystem', b'LPX MIDI', 0, 1, 0)
2503
+ #-- (b'MMSystem', b'MIDIOUT2 (LPX MIDI)', 0, 1, 0)
2504
+ #--
2505
+ #-- macOS
2506
+ #-- (b'CoreMIDI', b'Launchpad X LPX DAW Out', 1, 0, 0)
2507
+ #-- (b'CoreMIDI', b'Launchpad X LPX MIDI Out', 1, 0, 0)
2508
+ #-- (b'CoreMIDI', b'Launchpad X LPX DAW In', 0, 1, 0)
2509
+ #-- (b'CoreMIDI', b'Launchpad X LPX MIDI In', 0, 1, 0)
2510
+ #--
2511
+ #-- Linux [tm]
2512
+ #-- ('ALSA', 'Launchpad X MIDI 1', 0, 1, 0)
2513
+ #-- ('ALSA', 'Launchpad X MIDI 1', 1, 0, 0)
2514
+ #-- ('ALSA', 'Launchpad X MIDI 2', 0, 1, 0)
2515
+ #-- ('ALSA', 'Launchpad X MIDI 2', 1, 0, 0)
2516
+ #--
2517
+ #-- So the old strategy of simply looking for "LPX" will not work.
2518
+ #-- Workaround: If the user doesn't request a specific name, we'll just
2519
+ #-- search for "Launchpad X" and "LPX"...
2520
+
2497
2521
#-------------------------------------------------------------------------------------
2498
2522
# Overrides "LaunchpadPro" method
2499
- # TODO: Find a fix for the two MK3 MIDI devices
2500
- def Open ( self , number = 0 , name = "LPX" ):
2501
- retval = super ( LaunchpadLPX , self ).Open ( number = number , name = name )
2502
- if retval == True :
2503
- self .LedSetMode ( 1 )
2504
-
2505
- return retval
2523
+ def Open ( self , number = 0 , name = "AUTO" ):
2524
+ nameList = [ "Launchpad X" , "LPX" ]
2525
+ if name != "AUTO" :
2526
+ # mhh, better not this way
2527
+ # nameList.insert( 0, name )
2528
+ nameList = [ name ]
2529
+ for name in nameList :
2530
+ rval = super ( LaunchpadLPX , self ).Open ( number = number , name = name )
2531
+ if rval :
2532
+ self .LedSetMode ( 1 )
2533
+ return rval
2534
+ return False
2506
2535
2507
2536
2508
2537
#-------------------------------------------------------------------------------------
2509
2538
#-- Checks if a device exists, but does not open it.
2510
2539
#-- Does not check whether a device is in use or other, strange things...
2511
- #-- Uses search string "LPX", by default .
2540
+ #-- See notes in "Open()" above .
2512
2541
#-------------------------------------------------------------------------------------
2513
2542
# Overrides "LaunchpadBase" method
2514
- def Check ( self , number = 0 , name = "LPX" ):
2515
- return super ( LaunchpadLPX , self ).Check ( number = number , name = name )
2543
+ def Check ( self , number = 0 , name = "AUTO" ):
2544
+ nameList = [ "Launchpad X" , "LPX" ]
2545
+ if name != "AUTO" :
2546
+ # mhh, better not this way
2547
+ # nameList.insert( 0, name )
2548
+ nameList = [ name ]
2549
+ for name in nameList :
2550
+ rval = super ( LaunchpadLPX , self ).Check ( number = number , name = name )
2551
+ if rval :
2552
+ return rval
2553
+ return False
2516
2554
2517
2555
2518
2556
#-------------------------------------------------------------------------------------
0 commit comments