Compare commits

..

18 Commits
v1.1 ... main

Author SHA1 Message Date
Thomas Herrmann
97043ad530 sdfgsfd 2022-05-13 23:58:35 +02:00
Thomas Herrmann
4dd36626a3 repacked mac version 2022-04-29 03:06:13 -07:00
Thomas Herrmann
bf7ec5aca6 Add ICON 2022-04-29 11:47:19 +02:00
Thomas Herrmann
9d8d251cc8 updated mac to 1.1.3 2022-04-27 12:00:38 -07:00
Thomas Herrmann
5ae8fd499b WIn version to 1.1.3 2022-04-27 20:47:10 +02:00
Thomas Herrmann
9c96d5a1d5 Update underbridge_lin
Patched to 1.1.3 16 patterns 9 bars
2022-04-26 23:03:48 +02:00
Thomas Herrmann
13bca03f78 16 patterns 9bars
V.1.1.3

May stop at pattern 15
2022-04-26 22:58:09 +02:00
Thomas Herrmann
0e5c609d03 Update underbridge_lin
linux version packaged with 1.1.2 fix for bar length
2022-04-26 14:01:42 +02:00
Thomas Herrmann
7fe2d4c3eb Fixed Bar limited, now 9 bars 2022-04-26 13:55:14 +02:00
Thomas Herrmann
2489f99b90 packaged mac version again 2022-04-20 07:46:29 -07:00
Thomas Herrmann
e96b01e772 mav version to 1.1.1. 2022-04-16 08:45:29 -07:00
Thomas Herrmann
8319f87ec5 Update underbridge.py 2022-04-15 18:35:02 +02:00
Thomas Herrmann
5794cc9a21 Close midi port after record 2022-04-15 18:24:52 +02:00
Thomas Herrmann
a4e87e4bbf Ch 8 fix for win exectuable V1.1.1 2022-04-15 17:09:08 +02:00
Thomas Herrmann
a162d06a62 Fixed Channel 8 bug 2022-04-15 17:02:47 +02:00
Thomas Herrmann
5141d3e324 Brought linux version to 1.1 2022-04-13 22:35:42 +02:00
Thomas Herrmann
f0c438d7fa update mac version 2022-04-13 10:40:00 -07:00
Thomas Herrmann
815354f4e6 mac-executable 2022-04-13 10:28:31 -07:00
12 changed files with 171 additions and 19 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

BIN
dist/underbridge vendored

Binary file not shown.

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>underbridge</string>
<key>CFBundleExecutable</key>
<string>underbridge</string>
<key>CFBundleIconFile</key>
<string>logo.ico</string>
<key>CFBundleIdentifier</key>
<string>underbridge</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>underbridge</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.0.0</string>
<key>NSHighResolutionCapable</key>
<true/>
</dict>
</plist>

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -0,0 +1,128 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>files</key>
<dict>
<key>Resources/logo.ico</key>
<data>
mtFuKBM0y8Zhgf0zPV3iiD5US1w=
</data>
</dict>
<key>files2</key>
<dict>
<key>Resources/logo.ico</key>
<dict>
<key>hash2</key>
<data>
QuvTuLzEUHh3cPgoVPNkcbQ5wWfEioohO8WxSTgroeM=
</data>
</dict>
</dict>
<key>rules</key>
<dict>
<key>^Resources/</key>
<true/>
<key>^Resources/.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^Resources/.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Resources/Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^version.plist$</key>
<true/>
</dict>
<key>rules2</key>
<dict>
<key>.*\.dSYM($|/)</key>
<dict>
<key>weight</key>
<real>11</real>
</dict>
<key>^(.*/)?\.DS_Store$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>2000</real>
</dict>
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
<dict>
<key>nested</key>
<true/>
<key>weight</key>
<real>10</real>
</dict>
<key>^.*</key>
<true/>
<key>^Info\.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^PkgInfo$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^Resources/</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^Resources/.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^Resources/.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Resources/Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^[^/]+$</key>
<dict>
<key>nested</key>
<true/>
<key>weight</key>
<real>10</real>
</dict>
<key>^embedded\.provisionprofile$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^version\.plist$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
</dict>
</dict>
</plist>

BIN
dist/underbridge.exe vendored

Binary file not shown.

BIN
dist/underbridge_lin vendored Executable file

Binary file not shown.

BIN
logo.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -66,9 +66,9 @@ class Midirecorder:
Pattern = Radiobutton(lowerframe, text= 'Pattern', value = 3 , variable = self.mode_select, width = self.buttonsize_x, height = self.buttonsize_y, indicatoron = 0,bg= '#1b7d24' )
Pattern.select()
self.bar_input = Scale(upperframe, from_ = 1, to = 4, orient = HORIZONTAL, label="Nr. Bars", sliderlength= 10, length= 75, fg = 'white')
self.patterns_input = Scale(upperframe, from_ = 1, to = 10, orient = HORIZONTAL, label="Patterns",sliderlength= 10, length= 75, fg = 'white')
self.patterns_input.set(value=10)
self.bar_input = Scale(upperframe, from_ = 1, to = 9, orient = HORIZONTAL, label="Nr. Bars", sliderlength= 10, length= 75, fg = 'white')
self.patterns_input = Scale(upperframe, from_ = 1, to = 16, orient = HORIZONTAL, label="Patterns",sliderlength= 10, length= 75, fg = 'white')
self.patterns_input.set(value=16)
self.bpm_input = Entry(upperframe, width =10, text="BPM",bg= 'lightgrey', relief= FLAT)
self.bpm_input.insert(0, "BPM")
self.add_sec = Scale(upperframe, from_ = 0, to = 10, orient = HORIZONTAL, label="extra Sec", sliderlength= 10, length= 75, fg = 'white')
@ -133,7 +133,7 @@ class Midirecorder:
try:
self.op_device = list(filter(lambda x: 'OP-Z' in x, device_list))
self.op_device = self.op_device[0]
print (self.op_device)
#print (self.op_device)
self.displaymsg.set("OP-Z found")
except:
self.displaymsg.set("Can´t find OP-Z : MIDI Error.")
@ -196,7 +196,7 @@ class Midirecorder:
#global op_device
self.outport= mido.open_output(self.op_device)
#displaymsg.set("OP-Z MIDI not connected :(")
print(self.outport)
#print(self.outport)
def setProject(self,projnr):
msg= mido.Message('program_change',song= self.projnr, program = 1)
@ -204,19 +204,19 @@ class Midirecorder:
def muteAll(self):
checkbutton_name = 0
print(self.mute_list)
#print(self.mute_list)
for j in range (0,7):
for j in range (0,8):
self.mute_list[j] = 1
for i in range (1,6):
for i in range (1,7):
checkbutton_name = 'self.modifier{}_value'.format(i) #checkbutton 1- 6
self.mute_list[i+7] = eval(checkbutton_name).get() #9th position in mute list
for k in range (0,13):
for k in range (0,14):
msg = mido.Message('control_change',control= 53, channel= k, value= self.mute_list[k])
self.outport.send(msg)
print("Muted Channels",self.mute_list)
#print("Muted Channels",self.mute_list)
def setSolo(self,chn):
msg = mido.Message('control_change',control= 53, channel= chn, value=0)
@ -226,7 +226,7 @@ class Midirecorder:
msg = mido.Message('start')
self.outport.send(msg)
self.displaymsg.set("Playback started")
print("midi")
#print("midi")
def stop_MIDI(self):
msg = mido.Message('stop')
@ -278,16 +278,16 @@ class Midirecorder:
#print(projectpath)
def start_Rec(self):
print("record")
#print("record")
self.displaymsg.set("Recording...")
CHUNK = 128
FORMAT = pyaudio.paInt16
CHANNELS = 2
RECORD_SECONDS= self.loop_time
print("record")
#print("record")
WAVE_OUTPUT_FILENAME = self.name_input.get() + "_" + "track" + str(self.j+1) + ".wav"
print(WAVE_OUTPUT_FILENAME)
#print(WAVE_OUTPUT_FILENAME)
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
@ -297,7 +297,7 @@ class Midirecorder:
frames_per_buffer=CHUNK
)
print("* recording")
#print("* recording")
frames = []
self.start_MIDI()
@ -338,11 +338,10 @@ class Midirecorder:
for i in range (0,8):
pattern_limit = self.patterns_input.get()
if self.cancel == 1 or self.pattern_nr == pattern_limit:
if self.cancel == 1 or self.pattern_nr == pattern_limit:
break
#print("sequence started",i)
self.muteAll()
self.muteAll()
time.sleep(0.1)
self.setSolo(i)
#starting Midi during wave record for timing
@ -350,6 +349,7 @@ class Midirecorder:
self.stop_MIDI()
time.sleep(1)
self.unmuteAll()
time.sleep(1)
mode = self.mode_select.get()
if i == 7 and mode == 2:
@ -357,7 +357,7 @@ class Midirecorder:
time.sleep(5)
self.nextPattern()
self.pattern_nr += 1
if self.pattern_nr == 9 :
if self.pattern_nr == 15 :
self.pattern_nr = 0
self.sequenceMaster()
except: