You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(24) |
Aug
(17) |
Sep
(61) |
Oct
(7) |
Nov
(4) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(1) |
Feb
|
Mar
|
Apr
(3) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(33) |
Nov
|
Dec
(26) |
2005 |
Jan
(7) |
Feb
(13) |
Mar
(25) |
Apr
(3) |
May
(5) |
Jun
(57) |
Jul
|
Aug
(1) |
Sep
(46) |
Oct
(188) |
Nov
(108) |
Dec
|
2006 |
Jan
(311) |
Feb
(153) |
Mar
(17) |
Apr
(73) |
May
(178) |
Jun
(270) |
Jul
(174) |
Aug
(67) |
Sep
(101) |
Oct
(10) |
Nov
(8) |
Dec
(28) |
2007 |
Jan
(61) |
Feb
|
Mar
(630) |
Apr
(62) |
May
(72) |
Jun
(308) |
Jul
(217) |
Aug
(4) |
Sep
|
Oct
(4) |
Nov
(47) |
Dec
(6) |
2008 |
Jan
(74) |
Feb
(738) |
Mar
(603) |
Apr
(3) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(6) |
Oct
(2) |
Nov
|
Dec
|
2012 |
Jan
|
Feb
|
Mar
(5) |
Apr
(5) |
May
|
Jun
|
Jul
(1) |
Aug
(4) |
Sep
|
Oct
(1) |
Nov
(5) |
Dec
|
2013 |
Jan
(3) |
Feb
(5) |
Mar
(13) |
Apr
(18) |
May
(5) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(6) |
Nov
(1) |
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(11) |
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
From: Marcus A. <and...@us...> - 2014-08-12 21:54:59
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv9817 Modified Files: README Log Message: Tested on Windows. Index: README =================================================================== RCS file: /cvsroot/nmedit/patchauthor/README,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** README 17 Jul 2014 21:22:14 -0000 1.7 --- README 12 Aug 2014 21:54:56 -0000 1.8 *************** *** 43,48 **** You need Python 2.7[1], pygame[2], Setuptools[3], PyMeta2[4], ! Curses[5] and Patched[6]. Then it should work, but I haven't tried ! it. Let me know if it works for you. Start in a console with: C:\patchauthor> patched.py --- 43,47 ---- You need Python 2.7[1], pygame[2], Setuptools[3], PyMeta2[4], ! Curses[5] and Patched[6]. Start in a console with: C:\patchauthor> patched.py |
From: Marcus A. <and...@us...> - 2014-08-12 21:42:52
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv8773 Modified Files: log.py tabgui.py Log Message: History buffer. Windows signal fix. Index: log.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/log.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** log.py 11 Jul 2014 12:13:51 -0000 1.5 --- log.py 12 Aug 2014 21:42:50 -0000 1.6 *************** *** 2,10 **** import re import sys - import tabgui files = {} pattern = "none" ppattern = "none" def log_init(file): --- 2,10 ---- import re import sys files = {} pattern = "none" ppattern = "none" + display = None def log_init(file): *************** *** 12,21 **** log(file, "\n") def log(file, data): ! global pattern ! if re.search(pattern, file) != None: ! tabgui.log(data) ! elif re.search(ppattern, file) != None: ! tabgui.log(".") files[file].write(data) files[file].flush() --- 12,25 ---- log(file, "\n") + def log_display(d): + global display + display = d + def log(file, data): ! global pattern, display ! if re.search(pattern, file) != None and display != None: ! display.append_log(data) ! elif re.search(ppattern, file) != None and display != None: ! display.append_log(".") files[file].write(data) files[file].flush() Index: tabgui.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/tabgui.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** tabgui.py 30 Jul 2014 14:03:15 -0000 1.6 --- tabgui.py 12 Aug 2014 21:42:50 -0000 1.7 *************** *** 6,9 **** --- 6,11 ---- import os import terminal + from log import log_display, log_init, log + import sys locale.setlocale(locale.LC_ALL, '') *************** *** 18,21 **** --- 20,25 ---- tabs = dict(); visible_tab = None + history_pos = -1 + current_command = '' def term_resize(*args): *************** *** 36,40 **** (h, w) = logt.getmaxyx() for i in range(0, h-(height-2)): ! log('') logt.resize(height-2, width) tabs['log'] = (logt, 0, 0) --- 40,44 ---- (h, w) = logt.getmaxyx() for i in range(0, h-(height-2)): ! append_log('') logt.resize(height-2, width) tabs['log'] = (logt, 0, 0) *************** *** 46,50 **** global screen, height, width, cwin, cbox, lwin, visible_tab screen = stdscr ! signal.signal(signal.SIGWINCH, term_resize) (width, height) = terminal.getTerminalSize() print str(height) + " " + str(width) --- 50,55 ---- global screen, height, width, cwin, cbox, lwin, visible_tab screen = stdscr ! if hasattr(signal, 'SIGWINCH'): ! signal.signal(signal.SIGWINCH, term_resize) (width, height) = terminal.getTerminalSize() print str(height) + " " + str(width) *************** *** 59,70 **** lwin.scrollok(1) lwin.idlok(1) ! log('--- LOG ---') runnable() def start(runnable): curses.wrapper(build, runnable) def input_validator(ch): ! global height if ch == 542: move(0, -10) --- 64,92 ---- lwin.scrollok(1) lwin.idlok(1) ! append_log('--- LOG ---') runnable() def start(runnable): + log_display(sys.modules[__name__]) + log_init('history.log') curses.wrapper(build, runnable) + def write_cmd(line): + global cwin + cwin.move(0, 0) + for ch in line: + try: + cwin.addch(ch) + except curses.error: + pass + (y, x) = cwin.getyx() + cwin.move(y, max(0, x-1)) + (y, x) = cwin.getmaxyx() + for i in range(0, x): + cwin.delch() + cwin.refresh() + def input_validator(ch): ! global height, history_pos, cbox, cwin, current_command if ch == 542: move(0, -10) *************** *** 85,92 **** move(-(height-3), 0) return False if ch == ord('\t'): show_next() return False ! #log(str(ch)) return ch --- 107,140 ---- move(-(height-3), 0) return False + if ch == curses.KEY_UP: + if history_pos == -1: + current_command = cbox.gather() + history_pos = history_pos + 1 + line_pos = 0 + for line in reversed(open("history.log").readlines()): + if line_pos == history_pos: + write_cmd(line) + line_pos = line_pos + 1 + if history_pos >= line_pos: + history_pos = line_pos - 1 + return False + if ch == curses.KEY_DOWN: + history_pos = history_pos - 1 + if history_pos < -1: + history_pos = -1 + if history_pos == -1: + write_cmd(current_command) + else: + line_pos = 0 + for line in reversed(open("history.log").readlines()): + if line_pos == history_pos: + write_cmd(line) + break + line_pos = line_pos + 1 + return False if ch == ord('\t'): show_next() return False ! #append_log(str(ch)) return ch *************** *** 94,98 **** global cwin, cbox cwin.clear() ! return cbox.edit(input_validator) def update(content, h, w, tab): --- 142,148 ---- global cwin, cbox cwin.clear() ! command = cbox.edit(input_validator) ! log('history.log', command + '\n') ! return command def update(content, h, w, tab): *************** *** 111,115 **** move(dy, dx, tab) ! def log(content): global lwin, tabs, visible_tab if lwin == None: --- 161,165 ---- move(dy, dx, tab) ! def append_log(content): global lwin, tabs, visible_tab if lwin == None: |
From: Marcus A. <and...@us...> - 2014-07-30 14:03:21
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv16853 Modified Files: command.py help.view tabgui.py Log Message: Navigation changes. Doc updates. Index: command.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/command.py,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** command.py 13 Jul 2014 17:52:23 -0000 1.27 --- command.py 30 Jul 2014 14:03:15 -0000 1.28 *************** *** 119,123 **** | "clear" spaces clear | "help" ! -> (['render(helpview.build("help", model, {}), "help")']) | anything*:a -> (['log("modular.log", "UNKNOWN COMMAND: {}")'.format(''.join(a))]) --- 119,123 ---- | "clear" spaces clear | "help" ! -> (['render(helpview.build("info", model, {}), "info")']) | anything*:a -> (['log("modular.log", "UNKNOWN COMMAND: {}")'.format(''.join(a))]) Index: tabgui.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/tabgui.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** tabgui.py 16 Jul 2014 19:26:35 -0000 1.5 --- tabgui.py 30 Jul 2014 14:03:15 -0000 1.6 *************** *** 66,84 **** def input_validator(ch): ! if ch == curses.KEY_LEFT: move(0, -10) return False ! if ch == curses.KEY_RIGHT: move(0, 10) return False ! if ch == curses.KEY_UP: move(-10, 0) return False ! if ch == curses.KEY_DOWN: move(10, 0) return False if ch == ord('\t'): show_next() return False return ch --- 66,92 ---- def input_validator(ch): ! global height ! if ch == 542: move(0, -10) return False ! if ch == 557: move(0, 10) return False ! if ch == 563: move(-10, 0) return False ! if ch == 522: move(10, 0) return False + if ch == curses.KEY_NPAGE: + move(height-3, 0) + return False + if ch == curses.KEY_PPAGE: + move(-(height-3), 0) + return False if ch == ord('\t'): show_next() return False + #log(str(ch)) return ch Index: help.view =================================================================== RCS file: /cvsroot/nmedit/patchauthor/help.view,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** help.view 26 Oct 2013 19:09:17 -0000 1.1 --- help.view 30 Jul 2014 14:03:15 -0000 1.2 *************** *** 1,6 **** help = ! edit show bank load store new export import1 voices add remove connect ! disconnect rename set assign clear edit = --- 1,15 ---- + info = + (' ' ' -~: HOW TO USE PATCHED :~- ' ' ') + tabgui help edit show bank load store new export import1 voices add remove + connect disconnect rename set assign clear + + tabgui = + (' ' 'TAB -- Cycle through screens. ' + 'ALT-ARROWS -- Scroll visible screen. ' + 'PGUP, PGDN -- Scroll visible screen. ' ' ') + help = ! (' ' 'help -- Show this screen. ' ' ') edit = |
From: Marcus A. <and...@us...> - 2014-07-27 11:25:49
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv32591 Modified Files: modular.protocol patch.protocol Log Message: Different messages to set parameter and receive parameter change. Index: modular.protocol =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.protocol,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** modular.protocol 11 Jul 2014 12:13:51 -0000 1.25 --- modular.protocol 27 Jul 2014 11:25:47 -0000 1.26 *************** *** 38,41 **** --- 38,50 ---- ]; + ParameterChanged + 0x33:7 0x14:5 slot:2 0x06:7 + pid:7 0x40:7 section:7 + indx:7 parameter:7 value:7 checksum:7 + @[ + 'update parameter set value={} where slot={} and section={} and indx={} and ord={}'.format(value, slot, section, indx, parameter), + '#show' + ]; + ACK36 0x33:7 0x16:5 slot:2 0x06:7 Index: patch.protocol =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patch.protocol,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** patch.protocol 27 Jul 2014 11:15:20 -0000 1.18 --- patch.protocol 27 Jul 2014 11:25:47 -0000 1.19 *************** *** 17,21 **** SetParameter ! 0x33:7 0x14:5 slot:2 0x06:7 pid:7 0x40:7 section:7 indx:7 parameter:7 value:7 checksum:7 --- 17,21 ---- SetParameter ! 0x33:7 0x13:5 slot:2 0x06:7 pid:7 0x40:7 section:7 indx:7 parameter:7 value:7 checksum:7 |
From: Marcus A. <and...@us...> - 2014-07-27 11:15:23
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv31996 Modified Files: model.py modular.py patch.protocol patch.view patched.py Log Message: No model logging. Fixed SetParameter message. Minor layout changes. Display help at startup. Log Mixcode to mixcode.log. Index: patch.view =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patch.view,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** patch.view 18 Jul 2014 10:11:21 -0000 1.3 --- patch.view 27 Jul 2014 11:15:20 -0000 1.4 *************** *** 171,175 **** [ { panel * "select {activeslot} as [slot], 2 as [section]" [ WSPACE morphs ] [ WSPACE knobs ] NEWLINE [ WSPACE controls ] } ! { { panel DOT } * "select [slot], [section] from module where slot={activeslot} and section <> 2 group by section order by section desc" } ] --- 171,175 ---- [ { panel * "select {activeslot} as [slot], 2 as [section]" [ WSPACE morphs ] [ WSPACE knobs ] NEWLINE [ WSPACE controls ] } ! { { panel BQ } * "select [slot], [section] from module where slot={activeslot} and section <> 2 group by section order by section desc" } ] Index: patched.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patched.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** patched.py 16 Jul 2014 19:26:35 -0000 1.9 --- patched.py 27 Jul 2014 11:15:20 -0000 1.10 *************** *** 17,21 **** if len(model.query("select * from synth")) > 0: # Fetch patch in slot A ! modular.eval_mixcode(["#edit 0"]) # Run command loop cmd = tabgui.read_command().strip() --- 17,21 ---- if len(model.query("select * from synth")) > 0: # Fetch patch in slot A ! modular.eval_mixcode(["#help", "#edit 0"]) # Run command loop cmd = tabgui.read_command().strip() Index: model.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/model.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** model.py 5 Apr 2013 18:26:27 -0000 1.9 --- model.py 27 Jul 2014 11:15:20 -0000 1.10 *************** *** 31,35 **** while self.running: sql, r = q.get(block = True) ! log("model.log", "> " + sql + "\n") try: result = c.execute(sql).fetchall() --- 31,35 ---- while self.running: sql, r = q.get(block = True) ! #log("model.log", "> " + sql + "\n") try: result = c.execute(sql).fetchall() *************** *** 38,42 **** print "SQL error:", sys.exc_info()[0] result = [] ! log("model.log", "< " + str(result) + "\n") r.put(result, block = False) --- 38,42 ---- print "SQL error:", sys.exc_info()[0] result = [] ! #log("model.log", "< " + str(result) + "\n") r.put(result, block = False) Index: patch.protocol =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patch.protocol,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** patch.protocol 8 May 2013 17:29:32 -0000 1.17 --- patch.protocol 27 Jul 2014 11:15:20 -0000 1.18 *************** *** 17,21 **** SetParameter ! 0x33:7 0x13:5 slot:2 0x06:7 pid:7 0x40:7 section:7 indx:7 parameter:7 value:7 checksum:7 --- 17,21 ---- SetParameter ! 0x33:7 0x14:5 slot:2 0x06:7 pid:7 0x40:7 section:7 indx:7 parameter:7 value:7 checksum:7 Index: modular.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.py,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -d -r1.44 -r1.45 *** modular.py 16 Jul 2014 19:26:35 -0000 1.44 --- modular.py 27 Jul 2014 11:15:20 -0000 1.45 *************** *** 71,74 **** --- 71,75 ---- # Init command log log_init("modular.log") + log_init("mixcode.log") # MIDI driver, assigned in init() *************** *** 159,163 **** def eval_mixcode(actions): if (len(actions) > 0): ! log("modular.log", '\n'.join(actions)) program = '\n'.join(map(command.parse, actions)) if len(program) > 0: --- 160,164 ---- def eval_mixcode(actions): if (len(actions) > 0): ! log("mixcode.log", '\n'.join(actions)) program = '\n'.join(map(command.parse, actions)) if len(program) > 0: |
From: Marcus A. <and...@us...> - 2014-07-18 10:11:23
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv14736 Modified Files: patch.view Log Message: Screen space optimization. Index: patch.view =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patch.view,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** patch.view 17 Jul 2014 21:22:14 -0000 1.2 --- patch.view 18 Jul 2014 10:11:21 -0000 1.3 *************** *** 168,174 **** patch = - NEWLINE [ slottabs * "select [slot], caption as [slotname] from slot, map where map.name='slot' and map.value=slot order by slot" ] - DOT [ { panel * "select {activeslot} as [slot], 2 as [section]" [ WSPACE morphs ] [ WSPACE knobs ] NEWLINE [ WSPACE controls ] } --- 168,172 ---- *************** *** 177,179 **** view = ! patch * "select slot as [activeslot] from active" --- 175,177 ---- view = ! [ patch * "select slot as [activeslot] from active" (' ') ] |
From: Marcus A. <and...@us...> - 2014-07-17 21:22:17
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv28806 Modified Files: README patch.view Log Message: Layout changes with morphs and controls in a column. Index: README =================================================================== RCS file: /cvsroot/nmedit/patchauthor/README,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** README 16 Jul 2014 19:16:40 -0000 1.6 --- README 17 Jul 2014 21:22:14 -0000 1.7 *************** *** 42,48 **** ---------------------- ! You need Python 2.7[1], pygame[2], Setuptools[3], PyMeta2[4] Curses[5] ! and Patched[6]. Then it should work, but I haven't tried it. Let me ! know if it works for you. Start in a console with: C:\patchauthor> patched.py --- 42,48 ---- ---------------------- ! You need Python 2.7[1], pygame[2], Setuptools[3], PyMeta2[4], ! Curses[5] and Patched[6]. Then it should work, but I haven't tried ! it. Let me know if it works for you. Start in a console with: C:\patchauthor> patched.py Index: patch.view =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patch.view,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** patch.view 24 Apr 2013 15:20:11 -0000 1.1 --- patch.view 17 Jul 2014 21:22:14 -0000 1.2 *************** *** 123,130 **** panel = ! [ WSPACE [ column WSPACE ]*Columns ! [ morphs knobs WSPACE controls ] * "select 1 as [nop] where {section}=2" ! ] ! DOT knobs = --- 123,127 ---- panel = ! [ WSPACE [ column WSPACE ]*Columns ] knobs = *************** *** 159,165 **** morphs = ! [ [ { ('m{morph} ({caption}) ' '-' ' ') morphmaps } WSPACE ] * "select [morph], [caption] from morph, map where morph.slot={activeslot} and map.name='morphkeyboard' and map.value=morph.keyboard" - ] slottabs = --- 156,161 ---- morphs = ! [ { ('m{morph} ({caption}) ' '-' ' ') morphmaps NEWLINE } ] * "select [morph], [caption] from morph, map where morph.slot={activeslot} and map.name='morphkeyboard' and map.value=morph.keyboard" slottabs = *************** *** 175,180 **** [ slottabs * "select [slot], caption as [slotname] from slot, map where map.name='slot' and map.value=slot order by slot" ] DOT ! [ ! { panel * "select [slot], [section] from module where slot={activeslot} group by section order by section desc" } ] --- 171,177 ---- [ slottabs * "select [slot], caption as [slotname] from slot, map where map.name='slot' and map.value=slot order by slot" ] DOT ! [ { panel * "select {activeslot} as [slot], 2 as [section]" ! [ WSPACE morphs ] [ WSPACE knobs ] NEWLINE [ WSPACE controls ] } ! { { panel DOT } * "select [slot], [section] from module where slot={activeslot} and section <> 2 group by section order by section desc" } ] |
From: Marcus A. <and...@us...> - 2014-07-16 19:26:37
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv26087 Modified Files: modular.py patched.py tabgui.py Log Message: Quit cleanly when no midi available. Index: patched.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patched.py,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** patched.py 16 Jul 2014 19:16:40 -0000 1.8 --- patched.py 16 Jul 2014 19:26:35 -0000 1.9 *************** *** 24,28 **** cmd = tabgui.read_command().strip() break - modular.stop() if len(sysex.Inputs()) == 0: --- 24,27 ---- *************** *** 30,31 **** --- 29,31 ---- else: tabgui.start(run) + modular.stop() Index: tabgui.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/tabgui.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** tabgui.py 16 Jul 2014 19:16:40 -0000 1.4 --- tabgui.py 16 Jul 2014 19:26:35 -0000 1.5 *************** *** 105,108 **** --- 105,110 ---- def log(content): global lwin, tabs, visible_tab + if lwin == None: + return (pad, dy, dx) = tabs['log'] (h, w) = pad.getmaxyx() *************** *** 135,139 **** (pad, y, x) = tabs[tab] (h, w) = pad.getmaxyx() - #print "{} {} {} {} {} {}".format(y, x, height-2, width, min(height-2, h-y)-1, min(width, w-x)-1) pad.refresh(y, x, 0, 0, height-3, width-1) cwin.refresh() --- 137,140 ---- Index: modular.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.py,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** modular.py 16 Jul 2014 19:16:40 -0000 1.43 --- modular.py 16 Jul 2014 19:26:35 -0000 1.44 *************** *** 192,194 **** model.model.stop() model.query("") - log("modular.log", "Threads stopped") --- 192,193 ---- |
From: Marcus A. <and...@us...> - 2014-07-16 19:16:42
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv25488 Modified Files: README modular.py patched.py tabgui.py Log Message: Windows adaptations. Index: README =================================================================== RCS file: /cvsroot/nmedit/patchauthor/README,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** README 13 May 2013 14:47:57 -0000 1.5 --- README 16 Jul 2014 19:16:40 -0000 1.6 *************** *** 42,48 **** ---------------------- ! You need Python 2.7[1], pygame[2], Setuptools[3], PyMeta2[4] and ! Patched[5]. Then it should work, but I haven't tried it. Let me know ! if it works for you. Start in a console with: C:\patchauthor> patched.py --- 42,48 ---- ---------------------- ! You need Python 2.7[1], pygame[2], Setuptools[3], PyMeta2[4] Curses[5] ! and Patched[6]. Then it should work, but I haven't tried it. Let me ! know if it works for you. Start in a console with: C:\patchauthor> patched.py *************** *** 52,56 **** [3] https://pypi.python.org/pypi/setuptools [4] http://www.allbuttonspressed.com/projects/pymeta ! [5] http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar --- 52,57 ---- [3] https://pypi.python.org/pypi/setuptools [4] http://www.allbuttonspressed.com/projects/pymeta ! [5] http://www.lfd.uci.edu/~gohlke/pythonlibs/#curses ! [6] http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar *************** *** 58,65 **** ------------------ ! You need Python 2.7[1], pygame[2], Setuptools[3], PyMeta2[4] and ! Patched[5]. Then it should work, but I haven't been able to install ! pygame with pyportmidi support. Let me know if it works for you. Start ! in a terminal with: $ python patched.py --- 59,66 ---- ------------------ ! You need Python 2.7[1], pygame[2], Setuptools[3], PyMeta2[4], ! Curses[5] and Patched[6]. Then it should work, but I haven't been able ! to install pygame with pyportmidi support. Let me know if it works for ! you. Start in a terminal with: $ python patched.py *************** *** 69,71 **** [3] https://pypi.python.org/pypi/setuptools [4] http://www.allbuttonspressed.com/projects/pymeta ! [5] http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar --- 70,73 ---- [3] https://pypi.python.org/pypi/setuptools [4] http://www.allbuttonspressed.com/projects/pymeta ! [5] ! [6] http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar Index: patched.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patched.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** patched.py 16 Jul 2014 10:09:36 -0000 1.7 --- patched.py 16 Jul 2014 19:16:40 -0000 1.8 *************** *** 26,28 **** modular.stop() ! tabgui.start(run) --- 26,31 ---- modular.stop() ! if len(sysex.Inputs()) == 0: ! print "No MIDI input ports found." ! else: ! tabgui.start(run) Index: tabgui.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/tabgui.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** tabgui.py 13 Jul 2014 17:52:23 -0000 1.3 --- tabgui.py 16 Jul 2014 19:16:40 -0000 1.4 *************** *** 5,11 **** import signal import os ! import struct ! from fcntl import ioctl ! from termios import TIOCGWINSZ locale.setlocale(locale.LC_ALL, '') --- 5,9 ---- import signal import os ! import terminal locale.setlocale(locale.LC_ALL, '') *************** *** 21,36 **** visible_tab = None - def getheightwidth(): - try: - return int(os.environ["LINES"]), int(os.environ["COLUMNS"]) - except KeyError: - height, width = struct.unpack( - "hhhh", ioctl(0, TIOCGWINSZ ,"\000"*8))[0:2] - if not height: return 25, 80 - return height, width - def term_resize(*args): global screen, height, width, cwin, lwin, tabs ! (height, width) = getheightwidth() curses.resizeterm(height, width) screen.refresh() --- 19,25 ---- visible_tab = None def term_resize(*args): global screen, height, width, cwin, lwin, tabs ! (width, height) = terminal.getTerminalSize() curses.resizeterm(height, width) screen.refresh() *************** *** 58,62 **** screen = stdscr signal.signal(signal.SIGWINCH, term_resize) ! (height, width) = getheightwidth() curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_RED) cwin = curses.newwin(1, width, height-2, 0) --- 47,52 ---- screen = stdscr signal.signal(signal.SIGWINCH, term_resize) ! (width, height) = terminal.getTerminalSize() ! print str(height) + " " + str(width) curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_RED) cwin = curses.newwin(1, width, height-2, 0) Index: modular.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.py,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** modular.py 13 Jul 2014 17:52:23 -0000 1.42 --- modular.py 16 Jul 2014 19:16:40 -0000 1.43 *************** *** 188,192 **** def stop(): ! sx.stop() model.model.stop() model.query("") --- 188,193 ---- def stop(): ! if sx != None: ! sx.stop() model.model.stop() model.query("") |
From: Marcus A. <and...@us...> - 2014-07-16 10:09:39
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv20761 Modified Files: patched.py Log Message: Make it possible to quit. Index: patched.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patched.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** patched.py 13 Jul 2014 17:52:23 -0000 1.6 --- patched.py 16 Jul 2014 10:09:36 -0000 1.7 *************** *** 22,26 **** while cmd != 'quit' and cmd != 'exit': modular.eval_mixcode(["#" + cmd]) ! cmd = tabgui.read_command() break modular.stop() --- 22,26 ---- while cmd != 'quit' and cmd != 'exit': modular.eval_mixcode(["#" + cmd]) ! cmd = tabgui.read_command().strip() break modular.stop() |
From: Marcus A. <and...@us...> - 2014-07-13 17:52:25
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv1784 Modified Files: cli.py command.py modular.py patched.py patchfile.py tabgui.py Log Message: Renamed cmd2 to eval_mixcode. Index: patchfile.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patchfile.py,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** patchfile.py 22 Oct 2013 17:32:55 -0000 1.11 --- patchfile.py 13 Jul 2014 17:52:23 -0000 1.12 *************** *** 306,309 **** code = code[0:4] + ["first = 0"] + code[4:] code = code[:-2] + ["last = 1"] + code[-2:] ! code = code + ["cmd2(['#edit {}'.format(slot)])"] return code --- 306,309 ---- code = code[0:4] + ["first = 0"] + code[4:] code = code[:-2] + ["last = 1"] + code[-2:] ! code = code + ["eval_mixcode(['#edit {}'.format(slot)])"] return code Index: command.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/command.py,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** command.py 11 Jul 2014 12:13:51 -0000 1.26 --- command.py 13 Jul 2014 17:52:23 -0000 1.27 *************** *** 56,60 **** rx(bs)""" ! cmd = """cmd2(['#{}'])""" # (indent, query, vars, bindings) --- 56,60 ---- rx(bs)""" ! cmd = """eval_mixcode(['#{}'])""" # (indent, query, vars, bindings) Index: modular.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.py,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** modular.py 12 Jul 2014 07:49:23 -0000 1.41 --- modular.py 13 Jul 2014 17:52:23 -0000 1.42 *************** *** 146,154 **** # ack - Enqueue an ack # wack - Wait for and dequeue an ack ! # # stepPosition and continueWithPatchList. # - # Access to output views. - # # Accepts SQL insert, update, delete, select # using [x] for assignment and {y} for substitution --- 146,154 ---- # ack - Enqueue an ack # wack - Wait for and dequeue an ack ! # render - Output to tabgui. ! # eval_mixcode - Recursive evaluation. ! # # stepPosition and continueWithPatchList. # # Accepts SQL insert, update, delete, select # using [x] for assignment and {y} for substitution *************** *** 157,161 **** # Accepts user commands with prefix '#'. ! def cmd2(actions): if (len(actions) > 0): log("modular.log", '\n'.join(actions)) --- 157,161 ---- # Accepts user commands with prefix '#'. ! def eval_mixcode(actions): if (len(actions) > 0): log("modular.log", '\n'.join(actions)) *************** *** 170,174 **** def rx(bitstream): message = modularprotocol.parse(bitstream) ! cmd2(message['actions']) # --- 170,174 ---- def rx(bitstream): message = modularprotocol.parse(bitstream) ! eval_mixcode(message['actions']) # Index: cli.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/cli.py,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** cli.py 22 Oct 2013 17:32:55 -0000 1.23 --- cli.py 13 Jul 2014 17:52:23 -0000 1.24 *************** *** 38,42 **** def default(self, line): ! self.modular.cmd2(["#" + line.strip()]) def do_select(self, line): --- 38,42 ---- def default(self, line): ! self.modular.eval_mixcode(["#" + line.strip()]) def do_select(self, line): Index: tabgui.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/tabgui.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** tabgui.py 12 Jul 2014 07:49:23 -0000 1.2 --- tabgui.py 13 Jul 2014 17:52:23 -0000 1.3 *************** *** 44,53 **** lwin.refresh() # 'log' tab should always fill the sceen ! (log, y, x) = tabs['log'] ! (h, w) = log.getmaxyx() for i in range(0, h-(height-2)): ! append('', 'log') ! log.resize(height-2, width) ! tabs['log'] = (log, 0, 0) # let the tabs adjust to the new size for tab in tabs.keys(): --- 44,53 ---- lwin.refresh() # 'log' tab should always fill the sceen ! (logt, y, x) = tabs['log'] ! (h, w) = logt.getmaxyx() for i in range(0, h-(height-2)): ! log('') ! logt.resize(height-2, width) ! tabs['log'] = (logt, 0, 0) # let the tabs adjust to the new size for tab in tabs.keys(): Index: patched.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patched.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** patched.py 12 Jul 2014 07:49:23 -0000 1.5 --- patched.py 13 Jul 2014 17:52:23 -0000 1.6 *************** *** 13,25 **** for port in sysex.Inputs(): modular.midi(port) ! modular.cmd2(["tx('IAmPC', [0, 3, 3])", "wack(1)"]) # Check if synth found if len(model.query("select * from synth")) > 0: # Fetch patch in slot A ! modular.cmd2(["#edit 0"]) # Run command loop cmd = tabgui.read_command().strip() while cmd != 'quit' and cmd != 'exit': ! modular.cmd2(["#" + cmd]) cmd = tabgui.read_command() break --- 13,25 ---- for port in sysex.Inputs(): modular.midi(port) ! modular.eval_mixcode(["tx('IAmPC', [0, 3, 3])", "wack(1)"]) # Check if synth found if len(model.query("select * from synth")) > 0: # Fetch patch in slot A ! modular.eval_mixcode(["#edit 0"]) # Run command loop cmd = tabgui.read_command().strip() while cmd != 'quit' and cmd != 'exit': ! modular.eval_mixcode(["#" + cmd]) cmd = tabgui.read_command() break |
From: Marcus A. <and...@us...> - 2014-07-12 07:49:26
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv2104 Modified Files: modular.py patched.py tabgui.py Log Message: Quit works sometimes. Index: patched.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patched.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** patched.py 11 Jul 2014 12:13:51 -0000 1.4 --- patched.py 12 Jul 2014 07:49:23 -0000 1.5 *************** *** 19,26 **** modular.cmd2(["#edit 0"]) # Run command loop ! cmd = tabgui.read_command() while cmd != 'quit' and cmd != 'exit': ! modular.cmd2(["#" + cmd.strip()]) cmd = tabgui.read_command() modular.stop() --- 19,27 ---- modular.cmd2(["#edit 0"]) # Run command loop ! cmd = tabgui.read_command().strip() while cmd != 'quit' and cmd != 'exit': ! modular.cmd2(["#" + cmd]) cmd = tabgui.read_command() + break modular.stop() Index: tabgui.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/tabgui.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** tabgui.py 11 Jul 2014 12:13:51 -0000 1.1 --- tabgui.py 12 Jul 2014 07:49:23 -0000 1.2 *************** *** 41,45 **** # small log window should match widow width lwin.resize(1, width) ! lwin.mvwin(heiht-1, 0) lwin.refresh() # 'log' tab should always fill the sceen --- 41,45 ---- # small log window should match widow width lwin.resize(1, width) ! lwin.mvwin(height-1, 0) lwin.refresh() # 'log' tab should always fill the sceen *************** *** 99,103 **** def update(content, h, w, tab): ! global tabs if tabs.has_key(tab): (pad, dy, dx) = tabs[tab] --- 99,103 ---- def update(content, h, w, tab): ! global tabs, height, width if tabs.has_key(tab): (pad, dy, dx) = tabs[tab] *************** *** 106,110 **** dy = 0 dx = 0 ! pad = curses.newpad(h, w) pad.scrollok(1) pad.idlok(1) --- 106,110 ---- dy = 0 dx = 0 ! pad = curses.newpad(max(h, height-2), max(w, width)) pad.scrollok(1) pad.idlok(1) Index: modular.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.py,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** modular.py 11 Jul 2014 12:13:51 -0000 1.40 --- modular.py 12 Jul 2014 07:49:23 -0000 1.41 *************** *** 135,139 **** def render(c, tab): ! tabgui.update(view.dump(c), view.height(c), view.width(c), tab) tabgui.show(tab) --- 135,139 ---- def render(c, tab): ! tabgui.update(view.dump(c), view.height(c)+1, view.width(c)+1, tab) tabgui.show(tab) *************** *** 158,161 **** --- 158,163 ---- def cmd2(actions): + if (len(actions) > 0): + log("modular.log", '\n'.join(actions)) program = '\n'.join(map(command.parse, actions)) if len(program) > 0: *************** *** 189,190 **** --- 191,193 ---- model.model.stop() model.query("") + log("modular.log", "Threads stopped") |
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv22844 Modified Files: command.py log.py modular.protocol modular.py patched.py protocol.py sysex.py view.py Added Files: tabgui.py Log Message: Begin working on a curses interface. Index: command.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/command.py,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** command.py 25 Nov 2013 10:02:45 -0000 1.25 --- command.py 11 Jul 2014 12:13:51 -0000 1.26 *************** *** 71,75 **** # ! # Grammar for CLI commands commandgrammar = """ --- 71,75 ---- # ! # Grammar for Mixcode commandgrammar = """ *************** *** 118,124 **** | "assign" spaces assign | "clear" spaces clear | anything*:a ! -> (['view.render(helpview.build("help", model, {{}}), 0, {})'.format(termwidth()), ! 'print', 'print "UNKNOWN COMMAND: {}"'.format(''.join(a))]) edit --- 118,125 ---- | "assign" spaces assign | "clear" spaces clear + | "help" + -> (['render(helpview.build("help", model, {}), "help")']) | anything*:a ! -> (['log("modular.log", "UNKNOWN COMMAND: {}")'.format(''.join(a))]) edit *************** *** 130,134 **** show = ~anything ! -> (['view.render(patchview.build("view", model, {{}}), 0, {})'.format(termwidth())]) bank --- 131,135 ---- show = ~anything ! -> (['render(patchview.build("view", model, {}), "patch")']) bank Index: modular.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.py,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** modular.py 26 Oct 2013 19:09:17 -0000 1.39 --- modular.py 11 Jul 2014 12:13:51 -0000 1.40 *************** *** 10,13 **** --- 10,14 ---- import terminal import os + import tabgui # Used by patch.protocol to convert a nord modular string to a python string *************** *** 127,134 **** tx('GetPatchList', [0, bank, position, 0]) else: ! view.render(bankview.build("view", model, {'bankid':firstbank}), 0, terminal.getTerminalSize()[0]) firstbank = -1 # # Interpret a list of Mixcode statements. # --- 128,142 ---- tx('GetPatchList', [0, bank, position, 0]) else: ! render(bankview.build("view", model, {'bankid':firstbank}), 'bank') firstbank = -1 # + # Output data to gui + + def render(c, tab): + tabgui.update(view.dump(c), view.height(c), view.width(c), tab) + tabgui.show(tab) + + # # Interpret a list of Mixcode statements. # Index: modular.protocol =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.protocol,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** modular.protocol 8 May 2013 17:29:32 -0000 1.24 --- modular.protocol 11 Jul 2014 12:13:51 -0000 1.25 *************** *** 18,22 **** serial:21 deviceId:7 @[ ! "print 'Modular {} model {} v{}.{} connected.'".format(serial, deviceId, versionHigh, versionLow), "insert into synth (serial) values ({})".format(serial), "ack({})".format(serial) --- 18,22 ---- serial:21 deviceId:7 @[ ! "log('modular.log', 'Modular {} model {} v{}.{} connected.')".format(serial, deviceId, versionHigh, versionLow), "insert into synth (serial) values ({})".format(serial), "ack({})".format(serial) *************** *** 27,31 **** pid:7 0x7e:7 code:7 checksum:7 @[ ! "print 'MODULAR PROTOCOL ERROR: {}'".format(code), "ack({})".format(pid) ]; --- 27,31 ---- pid:7 0x7e:7 code:7 checksum:7 @[ ! "log('modular.log', 'MODULAR PROTOCOL ERROR: {}')".format(code), "ack({})".format(pid) ]; Index: log.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/log.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** log.py 22 Oct 2013 17:32:55 -0000 1.4 --- log.py 11 Jul 2014 12:13:51 -0000 1.5 *************** *** 2,5 **** --- 2,6 ---- import re import sys + import tabgui files = {} *************** *** 14,21 **** global pattern if re.search(pattern, file) != None: ! print data elif re.search(ppattern, file) != None: ! print ".", ! sys.stdout.flush() files[file].write(data) files[file].flush() --- 15,21 ---- global pattern if re.search(pattern, file) != None: ! tabgui.log(data) elif re.search(ppattern, file) != None: ! tabgui.log(".") files[file].write(data) files[file].flush() --- NEW FILE: tabgui.py --- import locale import curses import curses.textpad import signal import os import struct from fcntl import ioctl from termios import TIOCGWINSZ locale.setlocale(locale.LC_ALL, '') code = locale.getpreferredencoding() screen = None height = 0 width = 0 cwin = None cbox = None lwin = None tabs = dict(); visible_tab = None def getheightwidth(): try: return int(os.environ["LINES"]), int(os.environ["COLUMNS"]) except KeyError: height, width = struct.unpack( "hhhh", ioctl(0, TIOCGWINSZ ,"\000"*8))[0:2] if not height: return 25, 80 return height, width def term_resize(*args): global screen, height, width, cwin, lwin, tabs (height, width) = getheightwidth() curses.resizeterm(height, width) screen.refresh() # command input should match window width cwin.resize(1, width); cwin.mvwin(height-2, 0) cwin.refresh() # small log window should match widow width lwin.resize(1, width) lwin.mvwin(heiht-1, 0) lwin.refresh() # 'log' tab should always fill the sceen (log, y, x) = tabs['log'] (h, w) = log.getmaxyx() for i in range(0, h-(height-2)): append('', 'log') log.resize(height-2, width) tabs['log'] = (log, 0, 0) # let the tabs adjust to the new size for tab in tabs.keys(): move(0, 0, tab) def build(stdscr, runnable): global screen, height, width, cwin, cbox, lwin, visible_tab screen = stdscr signal.signal(signal.SIGWINCH, term_resize) (height, width) = getheightwidth() curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_RED) cwin = curses.newwin(1, width, height-2, 0) cwin.bkgd(' ', curses.color_pair(1)) cbox = curses.textpad.Textbox(cwin); cwin.refresh() update('', height-2, width, 'log') visible_tab = 'log' lwin = curses.newwin(1, width, height-1, 0) lwin.scrollok(1) lwin.idlok(1) log('--- LOG ---') runnable() def start(runnable): curses.wrapper(build, runnable) def input_validator(ch): if ch == curses.KEY_LEFT: move(0, -10) return False if ch == curses.KEY_RIGHT: move(0, 10) return False if ch == curses.KEY_UP: move(-10, 0) return False if ch == curses.KEY_DOWN: move(10, 0) return False if ch == ord('\t'): show_next() return False return ch def read_command(): global cwin, cbox cwin.clear() return cbox.edit(input_validator) def update(content, h, w, tab): global tabs if tabs.has_key(tab): (pad, dy, dx) = tabs[tab] del pad else: dy = 0 dx = 0 pad = curses.newpad(h, w) pad.scrollok(1) pad.idlok(1) pad.addstr(0, 0, content) tabs[tab] = (pad, 0, 0) move(dy, dx, tab) def log(content): global lwin, tabs, visible_tab (pad, dy, dx) = tabs['log'] (h, w) = pad.getmaxyx() pad.addstr(h-1, w-1, '\n' + content) if 'log' == visible_tab: show('log') (h, w) = lwin.getmaxyx() lwin.addstr(h-1, w-1, '\n' + content) lwin.refresh() def move(dy, dx, tab = None): global tabs, height, width, visible_tab if tab == None: tab = visible_tab if tabs.has_key(tab): (pad, y, x) = tabs[tab] (h, w) = pad.getmaxyx() x = max(0, min(w - width, x + dx)) y = max(0, min(h - (height-2), y + dy)) tabs[tab] = (pad, y, x) if tab == visible_tab: show(tab) def show(tab = None): global tabs, height, width, cwin, visible_tab if tab == None: tab = visible_tab visible_tab = tab if tabs.has_key(tab): (pad, y, x) = tabs[tab] (h, w) = pad.getmaxyx() #print "{} {} {} {} {} {}".format(y, x, height-2, width, min(height-2, h-y)-1, min(width, w-x)-1) pad.refresh(y, x, 0, 0, height-3, width-1) cwin.refresh() def show_next(): global tabs, visible_tab keys = tabs.keys() next_tab = keys[0] tab_before = keys[0] for i in range(1, len(keys)): if tab_before == visible_tab: next_tab = keys[i] break else: tab_before = keys[i] show(next_tab) Index: protocol.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/protocol.py,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** protocol.py 8 May 2013 17:29:32 -0000 1.22 --- protocol.py 11 Jul 2014 12:13:51 -0000 1.23 *************** *** 341,347 **** return self.parser.parse(sysex) except: ! print "unknown rx: " + str(hexlist(stream2list(sysex, 7))) ! print sysex ! return {'actions':[]} def generate(self, message, data, params=[]): --- 341,345 ---- return self.parser.parse(sysex) except: ! return {'actions':['log("modular.log", "unknown rx: {}")'.format(str(hexlist(stream2list(sysex, 7))))]} def generate(self, message, data, params=[]): Index: view.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/view.py,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** view.py 26 Oct 2013 19:09:17 -0000 1.14 --- view.py 11 Jul 2014 12:13:52 -0000 1.15 *************** *** 147,150 **** --- 147,153 ---- return result + def height(c): + return len(c) + def new(): return [" $"] Index: patched.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patched.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** patched.py 22 Oct 2013 17:32:55 -0000 1.3 --- patched.py 11 Jul 2014 12:13:51 -0000 1.4 *************** *** 2,22 **** import sysex import modular - import cli import os import model import log ! #log.verbose("modular") ! log.progress("modular") ! for port in sysex.Inputs(): ! modular.midi(port) ! modular.cmd2(["tx('IAmPC', [0, 3, 3])", "wack(1)"]) ! # Check if synth found ! if len(model.query("select * from synth")) > 0: ! # Fetch patch in slot A ! modular.cmd2(["#edit 0"]) ! # Run command loop ! cli.cli(modular).cmdloop() ! modular.stop() --- 2,27 ---- import sysex import modular import os import model import log + import tabgui ! log.verbose("modular") ! #log.progress("modular") ! def run(): ! for port in sysex.Inputs(): ! modular.midi(port) ! modular.cmd2(["tx('IAmPC', [0, 3, 3])", "wack(1)"]) ! # Check if synth found ! if len(model.query("select * from synth")) > 0: ! # Fetch patch in slot A ! modular.cmd2(["#edit 0"]) ! # Run command loop ! cmd = tabgui.read_command() ! while cmd != 'quit' and cmd != 'exit': ! modular.cmd2(["#" + cmd.strip()]) ! cmd = tabgui.read_command() ! modular.stop() ! tabgui.start(run) Index: sysex.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/sysex.py,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** sysex.py 30 Apr 2013 22:35:32 -0000 1.11 --- sysex.py 11 Jul 2014 12:13:51 -0000 1.12 *************** *** 39,46 **** if string.find(name, dev) != -1: if inp and i: ! print "MIDI IN :", name return int(loop) if outp and o: ! print "MIDI OUT:", name return int(loop) return -1 --- 39,46 ---- if string.find(name, dev) != -1: if inp and i: ! log("sysex.log", "MIDI IN :" + name) return int(loop) if outp and o: ! log("sysex.log", "MIDI OUT:" + name) return int(loop) return -1 *************** *** 48,56 **** def __init__(self, dev, rx): threading.Thread.__init__(self) self.rx = rx self.outp = pypm.Output(self.findDevice(dev, 0, 1), int(100)) self.inp = pypm.Input(self.findDevice(dev, 1, 0)) self.running = 1 - log_init("sysex.log") self.start() --- 48,56 ---- def __init__(self, dev, rx): threading.Thread.__init__(self) + log_init("sysex.log") self.rx = rx self.outp = pypm.Output(self.findDevice(dev, 0, 1), int(100)) self.inp = pypm.Input(self.findDevice(dev, 1, 0)) self.running = 1 self.start() |
From: Marcus A. <and...@us...> - 2013-11-25 10:02:47
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv29622 Modified Files: command.py Log Message: Fixed parameter-morph assignment. Index: command.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/command.py,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** command.py 26 Oct 2013 19:09:17 -0000 1.24 --- command.py 25 Nov 2013 10:02:45 -0000 1.25 *************** *** 203,208 **** txrx.format('AssignControl', [active('slot'), active('pid'), p[0], p[1], p[2], c, 0])]) | parameter:p spaces morph:m spaces range:r ! -> (cmd.format('clear m{}{}.p{}'.format(p[0], p[1], p[2])), ! [txrx.format('AssignMorph', [active('slot'), active('pid'), p[0], p[1], p[2], m[2], r[0], r[1], 0])]) | parameter:p spaces morph:m -> (cmd.format('clear m{}{}.p{}'.format(p[0], p[1], p[2])), --- 203,208 ---- txrx.format('AssignControl', [active('slot'), active('pid'), p[0], p[1], p[2], c, 0])]) | parameter:p spaces morph:m spaces range:r ! -> ([cmd.format('clear m{}{}.p{}'.format(p[0], p[1], p[2])), ! txrx.format('AssignMorph', [active('slot'), active('pid'), p[0], p[1], p[2], m[2], r[0], r[1], 0])]) | parameter:p spaces morph:m -> (cmd.format('clear m{}{}.p{}'.format(p[0], p[1], p[2])), *************** *** 250,255 **** range ! = '-' number:r -> (r, 1) ! | number:r -> (r, 0) value :p --- 250,255 ---- range ! = '-' number:r -> (r, 1) ! | '+'? number:r -> (r, 0) value :p |
From: Marcus A. <and...@us...> - 2013-10-26 19:09:20
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv31295 Modified Files: command.py modular.py view.py Added Files: help.view Log Message: Help redesign. Index: view.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/view.py,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** view.py 23 Apr 2013 18:31:30 -0000 1.13 --- view.py 26 Oct 2013 19:09:17 -0000 1.14 *************** *** 60,64 **** = ' ' | '\\t' | '\\r'? '\\n' -> () name ! = name:n (letter | '.' | '-' | '_'):l -> (n + l) | letter:l -> (l) stringpart --- 60,64 ---- = ' ' | '\\t' | '\\r'? '\\n' -> () name ! = name:n (letter | digit | '.' | '-' | '_'):l -> (n + l) | letter:l -> (l) stringpart --- NEW FILE: help.view --- help = edit show bank load store new export import1 voices add remove connect disconnect rename set assign clear edit = (' ' 'edit <slot> -- Select which slot to edit. ' ' ') slot show = (' ' 'show -- Display the current patch. ' ' ') bank = (' ' 'bank <bank> -- Display content of memory bank. ' ' ') bankno import1 = (' ' 'import <file> -- Load patch from file. ' ' ') file export = (' ' 'export <file> -- Save patch to file. ' ' ') file load = (' ' 'load <location> -- Load patch from memory location. ' ' ') location store = (' ' 'store <location> -- Store patch in memory location. ' ' ') location new = (' ' 'new -- Load an empty patch. ' ' ') voices = (' ' 'voices <nvoices> -- Set number of voices for patch. ' ' ') nvoices add = (' ' 'add <type> <section> <x> <y> <name> -- Add module to patch. ' ' ') type section x y name remove = (' ' 'remove <module> -- Remove module from patch. ' ' ') module connect = (' ' 'connect <input>|<output> <input> -- Connect cable. ' ' ') input output disconnect = (' ' 'disconnect <input>|<output> <input> -- Disconnect cable. ' ' ') input output rename = (' ' 'rename <module> <name> -- Change module name. ' ' ') module name (' ' 'rename <patchname> -- Change patch name. ' ' ') patchname set = (' ' 'set <morph>|<parameter> <value> -- Set parameter/morph value. ' ' ') morph parameter value (' ' 'set range <parameter> <range> -- Set parameter morph range. ' ' ') parameter range assign = (' ' 'assign <knob>|<control> <morph>|<parameter> -- Connect knob/control to parameter/morph. ' ' ') knob control morph parameter (' ' 'assign <parameter> <morph> [<range>] -- Put parameter in morph group. ' ' ') parameter morph range (' ' 'assign <morph> <keyboard> -- Set morph group mode. ' ' ') morph keyboard clear = (' ' 'clear <knob>|<control> -- Disconnect knob/control. ' ' ') knob control (' ' 'clear <parameter> -- Remove parameter from any morph group. ' ' ') parameter (' ' 'clear <morph> -- Clear morph group mode. ' ' ') morph slot = (' <slot> = 0 - 3, a - d, A - D ' ' ') bankno = (' <bank> = 1 - 9 ' ' ') file = (' <file> = e.g. monster.pch, "mon ster.pch" ' ' ') location = (' <location> = 101 - 199, 201 - 999 ' ' ') nvoices = (' <nvoices> = 1 - 32 ' ' ') type = (' <type> = 1 - 127 ' ' ') section = (' <section> = 0, 1, p, c, poly, common ' ' ') x = (' <x> = 0 - 127 ' ' ') y = (' <y> = 0 - 127 ' ' ') name = (' <name> = e.g. MyModule, "My Module" ' ' ') module = (' <module> = e.g. mp1, mp2, mp127, mc1, mc2, mc127 ' ' ') input = (' <input> = e.g. mp1.i0, mp2.i1, mc1.i2, mc2.i3 ' ' ') output = (' <output> = e.g. mp1.o0, mp2.o1, mc1.o2, mc2.o3 ' ' ') patchname = (' <patchname> = e.g. MyPatch, "My Patch" ' ' ') morph = (' <morph> = m0 - m3, mm1.p0 - mm1.p3 ' ' ') parameter = (' <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3 ' ' ') value = (' <value> = 0 - 127 ' ' ') range = (' <range> = -127 - 127 ' ' ') knob = (' <knob> = k1 - k18, pedal, after touch, on/off switch ' ' ') control = (' <control> = c0 - c127 ' ' ') keyboard = (' <keyboard> = 0 - 2, none, velocity, note ' ' ') Index: command.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/command.py,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** command.py 22 Oct 2013 17:32:55 -0000 1.23 --- command.py 26 Oct 2013 19:09:17 -0000 1.24 *************** *** 119,140 **** | "clear" spaces clear | anything*:a ! -> (['print "UNKNOWN COMMAND: {}"'.format(''.join(a)), ! cmd.format('edit'), ! cmd.format('show x'), ! cmd.format('bank'), ! cmd.format('load'), ! cmd.format('store'), ! cmd.format('new x'), ! cmd.format('export'), ! cmd.format('import'), ! cmd.format('voices'), ! cmd.format('add'), ! cmd.format('remove'), ! cmd.format('connect'), ! cmd.format('disconnect'), ! cmd.format('rename'), ! cmd.format('set'), ! cmd.format('assign'), ! cmd.format('clear')]) edit --- 119,124 ---- | "clear" spaces clear | anything*:a ! -> (['view.render(helpview.build("help", model, {{}}), 0, {})'.format(termwidth()), ! 'print', 'print "UNKNOWN COMMAND: {}"'.format(''.join(a))]) edit *************** *** 143,169 **** "pid = wack()", "tx('GetPatchPart2', [{}, pid, 0x20, 0x28, 0])".format(s)]) - | anything* - -> (['print "edit <slot>"', - 'print " <slot> = 0 - 3, a - d, A - D"']) show = ~anything -> (['view.render(patchview.build("view", model, {{}}), 0, {})'.format(termwidth())]) - | anything* - -> (['print "show"']) bank = bankid:b -> (["tx('GetPatchList', [0, {}, 0, 0])".format(b)]) - | anything* - -> (['print "bank <bank>"', - 'print " <bank> = 1 - 9"']) import = name:n -> (loadfile(n)) - | anything* - -> (['print "import <file>"', - 'print " <file> = e.g. monster.pch, \\\\"mon ster.pch\\\\""']) export --- 127,142 ---- *************** *** 173,179 **** 'f.write(view.dump(pch))', 'f.close()']) - | anything* - -> (['print "export <file>"', - 'print " <file> = e.g. monster.pch, \\\\"mon ster.pch\\\\""']) load --- 146,149 ---- *************** *** 182,188 **** "wack()", cmd.format('edit {}'.format(active('slot')))]) - | anything* - -> (['print "load <location>"', - 'print " <location> = 101 - 199, 201 - 999"']) store --- 152,155 ---- *************** *** 190,227 **** -> (["tx('StorePatch', [{}, {}, {}, {}, 0])".format(active('slot'), active('slot'), l[0], l[1]), "wack()"]) - | anything* - -> (['print "store <location>"', - 'print " <location> = 101 - 199, 201 - 999"']) new = ~anything -> ([cmd.format('import new.pch')]) - | anything* - -> (['print "new"']) voices = vcount:v -> (["tx('Voices', [{}, {}, {}, 0])".format(active('slot'), active('slot'), v)]) - | anything* - -> (['print "voices <voices>"', - 'print " <voices> = 1 - 32"']) add = type:t spaces section:s spaces number:x spaces number:y spaces name:n -> ([txrx.format('Patch', [1, 1, active('slot'), 0, active('pid'), 48, t, s, nextindx(s), x, y] + nmstring(n) + [s, s, nextindx(s), t] + defaultValues(t, 'parametertype') + [s, nextindx(s), len(defaultValues(t, 'customtype'))] + defaultValues(t, 'customtype') + [s, nextindx(s)] + nmstring(n) + [0])]) - | anything* - -> (['print "add <type> <section> <x> <y> <name>"', - 'print " <type> = 1 - 127"', - 'print " <section> = 0, 1, p, c, poly, common"', - 'print " <x> = 0 - 127"', - 'print " <y> = 0 - 127"', - 'print " <name> = e.g. MyModule, \\\\"My Module\\\\""']) remove = module:m -> ([txrx.format('Remove', [active('slot'), active('pid'), m[0], m[1], 0])]) - | anything* - -> (['print "remove <module>"', - 'print " <module> = e.g. mp1, mp2, mp127, mc1, mc2, mc127"']) connect --- 157,176 ---- *************** *** 229,244 **** -> ([cmd.format('disconnect m{}{}.{}{} m{}{}.i{}'.format(s[0], s[1], s[3], s[2], i[0], i[1], i[2])), txrx.format('Connect', [active('slot'), active('pid'), s[0], 0, s[1], s[3], s[2], i[1], i[2], 0])]) - | anything* - -> (['print "connect {<input>|<output>} <input>"', - 'print " <input> = e.g. mp1.i0, mp2.i1, mc1.i2, mc2.i3"', - 'print " <output> = e.g. mp1.o0, mp2.o1, mc1.o2, mc2.o3"']) disconnect = socket:s spaces input:i ?(s[0] == i[0]) -> ([txrx.format('Disconnect', [active('slot'), active('pid'), s[0], s[1], s[3], s[2], i[1], i[2], 0])]) - | anything* - -> (['print "disconnect {<input>|<output>} <input>"', - 'print " <input> = e.g. mp1.i0, mp2.i1, mc1.i2, mc2.i3"', - 'print " <output> = e.g. mp1.o0, mp2.o1, mc1.o2, mc2.o3"']) rename --- 178,185 ---- *************** *** 247,256 **** | name:n -> ([txrx.format('RenamePatch', [active('slot'), active('pid')] + nmstring(n) + [0])]) - | anything* - -> (['print "rename <module> <name>"', - 'print " <module> = e.g. mp1, mp2, mp127, mc1, mc2, mc127"', - 'print " <name> = e.g. MyModule, \\\\"My Module\\\\""', - 'print "rename <patchname>"', - 'print " <patchname> = e.g. MyPatch, \\\\"My Patch\\\\""']) set --- 188,191 ---- *************** *** 259,270 **** | "range" spaces parameter:p spaces range:r -> ([txrx.format('SetMorphRange', [active('slot'), active('pid'), p[0], p[1], p[2], r[0], r[1], 0])]) - | anything* - -> (['print "set {<morph>|<parameter>} <value>"', - 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"', - 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', - 'print " <value> = 0 - 127"', - 'print "set range <parameter> <range>"', - 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', - 'print " <range> = -127 - 127"']) assign --- 194,197 ---- *************** *** 283,300 **** | morph:m spaces keyboard:k -> ([txarx.format('AssignKeyboard', [active('slot'), active('pid'), m[2], k, 0])]) - | anything* - -> (['print "assign {<knob>|<control>} {<morph>|<parameter>}"', - 'print " <knob> = k1 - k18, pedal, after touch, on/off switch"', - 'print " <control> = c0 - c127"', - 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"', - 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', - 'print " <value> = 0 - 127"', - 'print "assign <parameter> <morph> [<range>]"', - 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', - 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"', - 'print " <range> = -127 - 127"', - 'print "assign <morph> <keyboard>"', - 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"', - 'print " <keyboard> = 0 - 2, none, velocity, note"']) clear --- 210,213 ---- *************** *** 307,318 **** | morph:m -> ([cmd.format('assign m{} 0'.format(m[2]))]) - | anything* - -> (['print "clear {<knob>|<control>}"', - 'print " <knob> = k1 - k18, pedal, after touch, on/off switch"', - 'print " <control> = c0 - c127"', - 'print "clear <parameter>"', - 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', - 'print "clear <morph>"', - 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"']) slot --- 220,223 ---- Index: modular.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.py,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** modular.py 22 Oct 2013 17:32:55 -0000 1.38 --- modular.py 26 Oct 2013 19:09:17 -0000 1.39 *************** *** 65,68 **** --- 65,71 ---- bankview = view.View("bank.view") + # Create the layout engine for the help text + helpview = view.View("help.view") + # Init command log log_init("modular.log") |
From: Marcus A. <and...@us...> - 2013-10-22 17:32:58
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv6913 Modified Files: cli.py command.py log.py modular.py patched.py patchfile.py Removed Files: mixcode.py Log Message: Integrate mixcode compiler into command compiler. Index: cli.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/cli.py,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** cli.py 19 Oct 2013 13:18:09 -0000 1.22 --- cli.py 22 Oct 2013 17:32:55 -0000 1.23 *************** *** 38,43 **** def default(self, line): ! self.modular.cmd2(["#" + line]) def do_select(self, line): ! print model.query('select ' + line) --- 38,43 ---- def default(self, line): ! self.modular.cmd2(["#" + line.strip()]) def do_select(self, line): ! print model.query('select ' + line.strip()) Index: patchfile.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patchfile.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** patchfile.py 15 Apr 2013 19:08:01 -0000 1.10 --- patchfile.py 22 Oct 2013 17:32:55 -0000 1.11 *************** *** 7,11 **** def tx(data): return ["tx('Patch', [last, first, slot, 1] + {} + [0])".format(data), ! "print wack(3)"] # --- 7,11 ---- def tx(data): return ["tx('Patch', [last, first, slot, 1] + {} + [0])".format(data), ! "wack(3)"] # Index: command.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/command.py,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** command.py 19 Oct 2013 13:18:09 -0000 1.22 --- command.py 22 Oct 2013 17:32:55 -0000 1.23 *************** *** 14,17 **** --- 14,23 ---- # + # Get terminal width + + def termwidth(): + return terminal.getTerminalSize()[0] + + # # Lookup default values for module parameters *************** *** 50,53 **** --- 56,73 ---- rx(bs)""" + cmd = """cmd2(['#{}'])""" + + # (indent, query, vars, bindings) + foreach = """{0}for ({3},) in model.query("{1}".format({2})):""" + + # (indent, query, vars) + update = """{0}model.query("{1}".format({2}))""" + + # + # Split up multi line strings in separate lines. + + def split(l): + return [i for x in l for i in x.split('\n')] + # # Grammar for CLI commands *************** *** 55,59 **** commandgrammar = """ ! grammar = spaces command:c spaces end -> (c) command --- 75,102 ---- commandgrammar = """ ! grammar ! = ' '*:s ~~("insert" | "update" | "delete") query:q end ! -> (update.format(''.join(s), q[0], ','.join(q[1]))) ! | ' '*:s ~~("select") query:q end ! -> (foreach.format(''.join(s), q[0], ','.join(q[1]), ','.join(q[2]))) ! | ' '*:s '#' command:c end ! -> (''.join(s) + ('\\n'+''.join(s)).join(split(c))) ! | anything*:a end ! -> (''.join(a)) ! query ! = query:q querypart:p ! -> (q[0] + p[0], q[1] + p[1], q[2] + p[2]) ! | querypart:p ! -> (p) ! querypart ! = '{' name:n '}' ! -> ('{}', [n], []) ! | '[' name:n ']' ! -> (n, [], [n]) ! | anything:a ! -> (a, [], []) ! name ! = name:n letter:l -> (n + l) ! | letter:l -> (l) command *************** *** 77,97 **** | anything*:a -> (['print "UNKNOWN COMMAND: {}"'.format(''.join(a)), ! '#edit', ! '#show x', ! '#bank', ! '#load', ! '#store', ! '#new x', ! '#export', ! '#import', ! '#voices', ! '#add', ! '#remove', ! '#connect', ! '#disconnect', ! '#rename', ! '#set', ! '#assign', ! '#clear']) edit --- 120,140 ---- | anything*:a -> (['print "UNKNOWN COMMAND: {}"'.format(''.join(a)), ! cmd.format('edit'), ! cmd.format('show x'), ! cmd.format('bank'), ! cmd.format('load'), ! cmd.format('store'), ! cmd.format('new x'), ! cmd.format('export'), ! cmd.format('import'), ! cmd.format('voices'), ! cmd.format('add'), ! cmd.format('remove'), ! cmd.format('connect'), ! cmd.format('disconnect'), ! cmd.format('rename'), ! cmd.format('set'), ! cmd.format('assign'), ! cmd.format('clear')]) edit *************** *** 101,112 **** "tx('GetPatchPart2', [{}, pid, 0x20, 0x28, 0])".format(s)]) | anything* ! -> (['print "usage: edit <slot>"', 'print " <slot> = 0 - 3, a - d, A - D"']) show = ~anything ! -> (['view.render(patchview.build("view", model, {{}}), 0, {})'.format(termwidth)]) | anything* ! -> (['print "usage: show"']) bank --- 144,155 ---- "tx('GetPatchPart2', [{}, pid, 0x20, 0x28, 0])".format(s)]) | anything* ! -> (['print "edit <slot>"', 'print " <slot> = 0 - 3, a - d, A - D"']) show = ~anything ! -> (['view.render(patchview.build("view", model, {{}}), 0, {})'.format(termwidth())]) | anything* ! -> (['print "show"']) bank *************** *** 114,118 **** -> (["tx('GetPatchList', [0, {}, 0, 0])".format(b)]) | anything* ! -> (['print "usage: bank <bank>"', 'print " <bank> = 1 - 9"']) --- 157,161 ---- -> (["tx('GetPatchList', [0, {}, 0, 0])".format(b)]) | anything* ! -> (['print "bank <bank>"', 'print " <bank> = 1 - 9"']) *************** *** 121,125 **** -> (loadfile(n)) | anything* ! -> (['print "usage: import <file>"', 'print " <file> = e.g. monster.pch, \\\\"mon ster.pch\\\\""']) --- 164,168 ---- -> (loadfile(n)) | anything* ! -> (['print "import <file>"', 'print " <file> = e.g. monster.pch, \\\\"mon ster.pch\\\\""']) *************** *** 131,135 **** 'f.close()']) | anything* ! -> (['print "usage: export <file>"', 'print " <file> = e.g. monster.pch, \\\\"mon ster.pch\\\\""']) --- 174,178 ---- 'f.close()']) | anything* ! -> (['print "export <file>"', 'print " <file> = e.g. monster.pch, \\\\"mon ster.pch\\\\""']) *************** *** 138,144 **** -> (["tx('FetchPatch', [{}, {}, {}, {}, 0])".format(active('slot'), active('slot'), l[0], l[1]), "wack()", ! "#edit {}".format(active('slot'))]) | anything* ! -> (['print "usage: load <location>"', 'print " <location> = 101 - 199, 201 - 999"']) --- 181,187 ---- -> (["tx('FetchPatch', [{}, {}, {}, {}, 0])".format(active('slot'), active('slot'), l[0], l[1]), "wack()", ! cmd.format('edit {}'.format(active('slot')))]) | anything* ! -> (['print "load <location>"', 'print " <location> = 101 - 199, 201 - 999"']) *************** *** 148,159 **** "wack()"]) | anything* ! -> (['print "usage: store <location>"', 'print " <location> = 101 - 199, 201 - 999"']) new = ~anything ! -> (["#import new.pch"]) | anything* ! -> (['print "usage: new"']) voices --- 191,202 ---- "wack()"]) | anything* ! -> (['print "store <location>"', 'print " <location> = 101 - 199, 201 - 999"']) new = ~anything ! -> ([cmd.format('import new.pch')]) | anything* ! -> (['print "new"']) voices *************** *** 161,165 **** -> (["tx('Voices', [{}, {}, {}, 0])".format(active('slot'), active('slot'), v)]) | anything* ! -> (['print "usage: voices <voices>"', 'print " <voices> = 1 - 32"']) --- 204,208 ---- -> (["tx('Voices', [{}, {}, {}, 0])".format(active('slot'), active('slot'), v)]) | anything* ! -> (['print "voices <voices>"', 'print " <voices> = 1 - 32"']) *************** *** 168,172 **** -> ([txrx.format('Patch', [1, 1, active('slot'), 0, active('pid'), 48, t, s, nextindx(s), x, y] + nmstring(n) + [s, s, nextindx(s), t] + defaultValues(t, 'parametertype') + [s, nextindx(s), len(defaultValues(t, 'customtype'))] + defaultValues(t, 'customtype') + [s, nextindx(s)] + nmstring(n) + [0])]) | anything* ! -> (['print "usage: add <type> <section> <x> <y> <name>"', 'print " <type> = 1 - 127"', 'print " <section> = 0, 1, p, c, poly, common"', --- 211,215 ---- -> ([txrx.format('Patch', [1, 1, active('slot'), 0, active('pid'), 48, t, s, nextindx(s), x, y] + nmstring(n) + [s, s, nextindx(s), t] + defaultValues(t, 'parametertype') + [s, nextindx(s), len(defaultValues(t, 'customtype'))] + defaultValues(t, 'customtype') + [s, nextindx(s)] + nmstring(n) + [0])]) | anything* ! -> (['print "add <type> <section> <x> <y> <name>"', 'print " <type> = 1 - 127"', 'print " <section> = 0, 1, p, c, poly, common"', *************** *** 179,191 **** -> ([txrx.format('Remove', [active('slot'), active('pid'), m[0], m[1], 0])]) | anything* ! -> (['print "usage: remove <module>"', 'print " <module> = e.g. mp1, mp2, mp127, mc1, mc2, mc127"']) connect = socket:s spaces input:i ?(s[0] == i[0]) ! -> (["#disconnect m{}{}.{}{} m{}{}.i{}".format(s[0], s[1], s[3], s[2], i[0], i[1], i[2]), txrx.format('Connect', [active('slot'), active('pid'), s[0], 0, s[1], s[3], s[2], i[1], i[2], 0])]) | anything* ! -> (['print "usage: connect {<input>|<output>} <input>"', 'print " <input> = e.g. mp1.i0, mp2.i1, mc1.i2, mc2.i3"', 'print " <output> = e.g. mp1.o0, mp2.o1, mc1.o2, mc2.o3"']) --- 222,234 ---- -> ([txrx.format('Remove', [active('slot'), active('pid'), m[0], m[1], 0])]) | anything* ! -> (['print "remove <module>"', 'print " <module> = e.g. mp1, mp2, mp127, mc1, mc2, mc127"']) connect = socket:s spaces input:i ?(s[0] == i[0]) ! -> ([cmd.format('disconnect m{}{}.{}{} m{}{}.i{}'.format(s[0], s[1], s[3], s[2], i[0], i[1], i[2])), txrx.format('Connect', [active('slot'), active('pid'), s[0], 0, s[1], s[3], s[2], i[1], i[2], 0])]) | anything* ! -> (['print "connect {<input>|<output>} <input>"', 'print " <input> = e.g. mp1.i0, mp2.i1, mc1.i2, mc2.i3"', 'print " <output> = e.g. mp1.o0, mp2.o1, mc1.o2, mc2.o3"']) *************** *** 195,199 **** -> ([txrx.format('Disconnect', [active('slot'), active('pid'), s[0], s[1], s[3], s[2], i[1], i[2], 0])]) | anything* ! -> (['print "usage: disconnect {<input>|<output>} <input>"', 'print " <input> = e.g. mp1.i0, mp2.i1, mc1.i2, mc2.i3"', 'print " <output> = e.g. mp1.o0, mp2.o1, mc1.o2, mc2.o3"']) --- 238,242 ---- -> ([txrx.format('Disconnect', [active('slot'), active('pid'), s[0], s[1], s[3], s[2], i[1], i[2], 0])]) | anything* ! -> (['print "disconnect {<input>|<output>} <input>"', 'print " <input> = e.g. mp1.i0, mp2.i1, mc1.i2, mc2.i3"', 'print " <output> = e.g. mp1.o0, mp2.o1, mc1.o2, mc2.o3"']) *************** *** 205,211 **** -> ([txrx.format('RenamePatch', [active('slot'), active('pid')] + nmstring(n) + [0])]) | anything* ! -> (['print "usage: rename <module> <name>"', 'print " <module> = e.g. mp1, mp2, mp127, mc1, mc2, mc127"', ! 'print " <name> = e.g. MyModule, \\\\"My Module\\\\""']) set --- 248,256 ---- -> ([txrx.format('RenamePatch', [active('slot'), active('pid')] + nmstring(n) + [0])]) | anything* ! -> (['print "rename <module> <name>"', 'print " <module> = e.g. mp1, mp2, mp127, mc1, mc2, mc127"', ! 'print " <name> = e.g. MyModule, \\\\"My Module\\\\""', ! 'print "rename <patchname>"', ! 'print " <patchname> = e.g. MyPatch, \\\\"My Patch\\\\""']) set *************** *** 215,223 **** -> ([txrx.format('SetMorphRange', [active('slot'), active('pid'), p[0], p[1], p[2], r[0], r[1], 0])]) | anything* ! -> (['print "usage: set {<morph>|<parameter>} <value>"', 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"', 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', 'print " <value> = 0 - 127"', ! 'print "usage: set range <parameter> <range>"', 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', 'print " <range> = -127 - 127"']) --- 260,268 ---- -> ([txrx.format('SetMorphRange', [active('slot'), active('pid'), p[0], p[1], p[2], r[0], r[1], 0])]) | anything* ! -> (['print "set {<morph>|<parameter>} <value>"', 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"', 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', 'print " <value> = 0 - 127"', ! 'print "set range <parameter> <range>"', 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', 'print " <range> = -127 - 127"']) *************** *** 225,243 **** assign = knob:k spaces (morph | parameter):p ! -> (["#clear k{}".format(k+1), txrx.format('AssignKnob', [active('slot'), active('pid'), p[1], p[2], p[0], k, 0])]) | control:c spaces (morph | parameter):p ! -> (["#clear c{}".format(c), txrx.format('AssignControl', [active('slot'), active('pid'), p[0], p[1], p[2], c, 0])]) | parameter:p spaces morph:m spaces range:r ! -> ("#clear m{}{}.p{}".format(p[0], p[1], p[2]), [txrx.format('AssignMorph', [active('slot'), active('pid'), p[0], p[1], p[2], m[2], r[0], r[1], 0])]) | parameter:p spaces morph:m ! -> ("#clear m{}{}.p{}".format(p[0], p[1], p[2]), [txrx.format('AssignMorph', [active('slot'), active('pid'), p[0], p[1], p[2], m[2], 0, 0, 0])]) | morph:m spaces keyboard:k -> ([txarx.format('AssignKeyboard', [active('slot'), active('pid'), m[2], k, 0])]) | anything* ! -> (['print "usage: assign {<knob>|<control>} {<morph>|<parameter>}"', 'print " <knob> = k1 - k18, pedal, after touch, on/off switch"', 'print " <control> = c0 - c127"', --- 270,288 ---- assign = knob:k spaces (morph | parameter):p ! -> ([cmd.format('clear k{}'.format(k+1)), txrx.format('AssignKnob', [active('slot'), active('pid'), p[1], p[2], p[0], k, 0])]) | control:c spaces (morph | parameter):p ! -> ([cmd.format('clear c{}'.format(c)), txrx.format('AssignControl', [active('slot'), active('pid'), p[0], p[1], p[2], c, 0])]) | parameter:p spaces morph:m spaces range:r ! -> (cmd.format('clear m{}{}.p{}'.format(p[0], p[1], p[2])), [txrx.format('AssignMorph', [active('slot'), active('pid'), p[0], p[1], p[2], m[2], r[0], r[1], 0])]) | parameter:p spaces morph:m ! -> (cmd.format('clear m{}{}.p{}'.format(p[0], p[1], p[2])), [txrx.format('AssignMorph', [active('slot'), active('pid'), p[0], p[1], p[2], m[2], 0, 0, 0])]) | morph:m spaces keyboard:k -> ([txarx.format('AssignKeyboard', [active('slot'), active('pid'), m[2], k, 0])]) | anything* ! -> (['print "assign {<knob>|<control>} {<morph>|<parameter>}"', 'print " <knob> = k1 - k18, pedal, after touch, on/off switch"', 'print " <control> = c0 - c127"', *************** *** 245,253 **** 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', 'print " <value> = 0 - 127"', ! 'print "usage: assign <parameter> <morph> [<range>]"', 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"', 'print " <range> = -127 - 127"', ! 'print "usage: assign <morph> <keyboard>"', 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"', 'print " <keyboard> = 0 - 2, none, velocity, note"']) --- 290,298 ---- 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', 'print " <value> = 0 - 127"', ! 'print "assign <parameter> <morph> [<range>]"', 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"', 'print " <range> = -127 - 127"', ! 'print "assign <morph> <keyboard>"', 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"', 'print " <keyboard> = 0 - 2, none, velocity, note"']) *************** *** 261,272 **** -> ([txrx.format('ClearMorph', [active('slot'), active('pid'), p[0], p[1], p[2], 0])]) | morph:m ! -> (["#assign m{} 0".format(m[2])]) | anything* ! -> (['print "usage: clear {<knob>|<control>}"', 'print " <knob> = k1 - k18, pedal, after touch, on/off switch"', 'print " <control> = c0 - c127"', ! 'print "usage: clear <parameter>"', 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', ! 'print "usage: clear <morph>"', 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"']) --- 306,317 ---- -> ([txrx.format('ClearMorph', [active('slot'), active('pid'), p[0], p[1], p[2], 0])]) | morph:m ! -> ([cmd.format('assign m{} 0'.format(m[2]))]) | anything* ! -> (['print "clear {<knob>|<control>}"', 'print " <knob> = k1 - k18, pedal, after touch, on/off switch"', 'print " <control> = c0 - c127"', ! 'print "clear <parameter>"', 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', ! 'print "clear <morph>"', 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"']) *************** *** 346,351 **** """ def parse(cmd): ! parser = OMeta.makeGrammar(commandgrammar, {'nmstring':nmstring, 'defaultValues':defaultValues, 'nextindx':nextindx, 'active':active, 'txrx':txrx, 'txarx':txarx, 'termwidth':terminal.getTerminalSize()[0], 'loadfile':patchfile.load}) return parser.parse(cmd) - --- 391,397 ---- """ + parser = OMeta.makeGrammar(commandgrammar, {'nmstring':nmstring, 'defaultValues':defaultValues, 'nextindx':nextindx, 'active':active, 'txrx':txrx, 'txarx':txarx, 'foreach':foreach, 'update':update, 'cmd':cmd, 'split':split, 'termwidth':termwidth, 'loadfile':patchfile.load}) + def parse(cmd): ! global parser return parser.parse(cmd) --- mixcode.py DELETED --- Index: modular.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.py,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** modular.py 14 Oct 2013 18:40:35 -0000 1.37 --- modular.py 22 Oct 2013 17:32:55 -0000 1.38 *************** *** 5,9 **** from bitstream import stream2list, list2stream, hexlist import view - import mixcode import Queue from log import log_init, log --- 5,8 ---- *************** *** 145,152 **** # of python local variables. # ! # Accepts command.py commands with prefix '#'. def cmd2(actions): ! program = '\n'.join(map(mixcode.compile, actions)) if len(program) > 0: log("modular.log", program + '\n') --- 144,151 ---- # of python local variables. # ! # Accepts user commands with prefix '#'. def cmd2(actions): ! program = '\n'.join(map(command.parse, actions)) if len(program) > 0: log("modular.log", program + '\n') Index: log.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/log.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** log.py 14 Oct 2013 18:40:34 -0000 1.3 --- log.py 22 Oct 2013 17:32:55 -0000 1.4 *************** *** 1,7 **** --- 1,9 ---- import re + import sys files = {} pattern = "none" + ppattern = "none" def log_init(file): *************** *** 13,16 **** --- 15,21 ---- if re.search(pattern, file) != None: print data + elif re.search(ppattern, file) != None: + print ".", + sys.stdout.flush() files[file].write(data) files[file].flush() *************** *** 19,20 **** --- 24,29 ---- global pattern pattern = p + + def progress(p): + global ppattern + ppattern = p Index: patched.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patched.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** patched.py 14 Oct 2013 18:40:35 -0000 1.2 --- patched.py 22 Oct 2013 17:32:55 -0000 1.3 *************** *** 7,11 **** import log ! log.verbose("modular") for port in sysex.Inputs(): --- 7,12 ---- import log ! #log.verbose("modular") ! log.progress("modular") for port in sysex.Inputs(): |
From: Marcus A. <and...@us...> - 2013-10-19 13:18:12
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv6731 Modified Files: cli.py command.py Log Message: Usage instruction per command. Index: cli.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/cli.py,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** cli.py 19 Oct 2013 08:01:25 -0000 1.21 --- cli.py 19 Oct 2013 13:18:09 -0000 1.22 *************** *** 40,46 **** self.modular.cmd2(["#" + line]) - def do_commands(self, line): - self.modular.cmd2(["#" + line]) - def do_select(self, line): print model.query('select ' + line) --- 40,43 ---- Index: command.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/command.py,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** command.py 19 Oct 2013 08:01:25 -0000 1.21 --- command.py 19 Oct 2013 13:18:09 -0000 1.22 *************** *** 63,68 **** | "load" spaces load | "store" spaces store ! | "new" ! -> (["#import new.pch"]) | "export" spaces export | "import" spaces import --- 63,67 ---- | "load" spaces load | "store" spaces store ! | "new" spaces new | "export" spaces export | "import" spaces import *************** *** 76,126 **** | "assign" spaces assign | "clear" spaces clear - | "commands" - -> (['print "edit <slot>"', - 'print "show"', - 'print "bank <bank>"', - 'print "load <location>"', - 'print "store <location>"', - 'print "new"', - 'print "export <file>"', - 'print "import <file>"', - 'print "voices <voices>"', - 'print "add <type> <section> <x> <y> <name>"', - 'print "remove <module>"', - 'print "connect {<input>|<output>} <input>"', - 'print "disconnect {<input>|<output>} <input>"', - 'print "rename <module> <name>"', - 'print "set {<morph>|<parameter>} <value>"', - 'print "set range <parameter> <range>"', - 'print "assign {<knob>|<control>} {<morph>|<parameter>}"', - 'print "assign <parameter> <morph> [<range>]"', - 'print "assign <morph> <keyboard>"', - 'print "clear {<knob>|<control>}"', - 'print "clear <parameter>"', - 'print "clear <morph>"', - 'print', - 'print "<slot> = 0, 1, 2, 3, a, b, c, d, A, B, C, D"', - 'print "<bank> = 1, 2, 3, 4, 5, 6, 7, 8, 9"', - 'print "<location> = 101, 102, 555, 999"', - 'print "<file> = monster.pch, \\\\"mon ster.pch\\\\""', - 'print "<voices> = 1, 2, 32"', - 'print "<type> = 1, 2, 3, 118, 127"', - 'print "<section> = 0, 1, p, c"', - 'print "<x> = 0, 1, 2, 127"', - 'print "<y> = 0, 1, 2, 127"', - 'print "<name> = MyModule, \\\\"My Module\\\\""', - 'print "<module> = mp1, mp2, mp127, mc1, mc2, mc127"', - 'print "<input> = mp1.i0, mp2.i1, mc1.i2, mc2.i3"', - 'print "<output> = mp1.o0, mp2.o1, mc1.o2, mc2.o3"', - 'print "<morph> = m0, m1, m2, m3, mm1.p0, mm1.p1, mm1.p2, mm1.p3"', - 'print "<parameter> = mp1.p0, mp2.p1, mc3.p2, mc4.p3"', - 'print "<range> = -127, -126, -1, 0, 1, 2, 126, 127"', - 'print "<knob> = k1, k2, k18, pedal, after touch, on/off switch"', - 'print "<control> = c0, c1, c2, c127"', - 'print "<keyboard> = 0, 1, 2, none, velocity, note"', - ]) | anything*:a -> (['print "UNKNOWN COMMAND: {}"'.format(''.join(a)), ! '#commands']) edit --- 75,97 ---- | "assign" spaces assign | "clear" spaces clear | anything*:a -> (['print "UNKNOWN COMMAND: {}"'.format(''.join(a)), ! '#edit', ! '#show x', ! '#bank', ! '#load', ! '#store', ! '#new x', ! '#export', ! '#import', ! '#voices', ! '#add', ! '#remove', ! '#connect', ! '#disconnect', ! '#rename', ! '#set', ! '#assign', ! '#clear']) edit *************** *** 129,144 **** "pid = wack()", "tx('GetPatchPart2', [{}, pid, 0x20, 0x28, 0])".format(s)]) show ! = -> (['view.render(patchview.build("view", model, {{}}), 0, {})'.format(termwidth)]) bank = bankid:b -> (["tx('GetPatchList', [0, {}, 0, 0])".format(b)]) import = name:n -> (loadfile(n)) export --- 100,126 ---- "pid = wack()", "tx('GetPatchPart2', [{}, pid, 0x20, 0x28, 0])".format(s)]) + | anything* + -> (['print "usage: edit <slot>"', + 'print " <slot> = 0 - 3, a - d, A - D"']) show ! = ~anything -> (['view.render(patchview.build("view", model, {{}}), 0, {})'.format(termwidth)]) + | anything* + -> (['print "usage: show"']) bank = bankid:b -> (["tx('GetPatchList', [0, {}, 0, 0])".format(b)]) + | anything* + -> (['print "usage: bank <bank>"', + 'print " <bank> = 1 - 9"']) import = name:n -> (loadfile(n)) + | anything* + -> (['print "usage: import <file>"', + 'print " <file> = e.g. monster.pch, \\\\"mon ster.pch\\\\""']) export *************** *** 148,151 **** --- 130,136 ---- 'f.write(view.dump(pch))', 'f.close()']) + | anything* + -> (['print "usage: export <file>"', + 'print " <file> = e.g. monster.pch, \\\\"mon ster.pch\\\\""']) load *************** *** 154,157 **** --- 139,145 ---- "wack()", "#edit {}".format(active('slot'))]) + | anything* + -> (['print "usage: load <location>"', + 'print " <location> = 101 - 199, 201 - 999"']) store *************** *** 159,174 **** --- 147,184 ---- -> (["tx('StorePatch', [{}, {}, {}, {}, 0])".format(active('slot'), active('slot'), l[0], l[1]), "wack()"]) + | anything* + -> (['print "usage: store <location>"', + 'print " <location> = 101 - 199, 201 - 999"']) + + new + = ~anything + -> (["#import new.pch"]) + | anything* + -> (['print "usage: new"']) voices = vcount:v -> (["tx('Voices', [{}, {}, {}, 0])".format(active('slot'), active('slot'), v)]) + | anything* + -> (['print "usage: voices <voices>"', + 'print " <voices> = 1 - 32"']) add = type:t spaces section:s spaces number:x spaces number:y spaces name:n -> ([txrx.format('Patch', [1, 1, active('slot'), 0, active('pid'), 48, t, s, nextindx(s), x, y] + nmstring(n) + [s, s, nextindx(s), t] + defaultValues(t, 'parametertype') + [s, nextindx(s), len(defaultValues(t, 'customtype'))] + defaultValues(t, 'customtype') + [s, nextindx(s)] + nmstring(n) + [0])]) + | anything* + -> (['print "usage: add <type> <section> <x> <y> <name>"', + 'print " <type> = 1 - 127"', + 'print " <section> = 0, 1, p, c, poly, common"', + 'print " <x> = 0 - 127"', + 'print " <y> = 0 - 127"', + 'print " <name> = e.g. MyModule, \\\\"My Module\\\\""']) remove = module:m -> ([txrx.format('Remove', [active('slot'), active('pid'), m[0], m[1], 0])]) + | anything* + -> (['print "usage: remove <module>"', + 'print " <module> = e.g. mp1, mp2, mp127, mc1, mc2, mc127"']) connect *************** *** 176,183 **** --- 186,201 ---- -> (["#disconnect m{}{}.{}{} m{}{}.i{}".format(s[0], s[1], s[3], s[2], i[0], i[1], i[2]), txrx.format('Connect', [active('slot'), active('pid'), s[0], 0, s[1], s[3], s[2], i[1], i[2], 0])]) + | anything* + -> (['print "usage: connect {<input>|<output>} <input>"', + 'print " <input> = e.g. mp1.i0, mp2.i1, mc1.i2, mc2.i3"', + 'print " <output> = e.g. mp1.o0, mp2.o1, mc1.o2, mc2.o3"']) disconnect = socket:s spaces input:i ?(s[0] == i[0]) -> ([txrx.format('Disconnect', [active('slot'), active('pid'), s[0], s[1], s[3], s[2], i[1], i[2], 0])]) + | anything* + -> (['print "usage: disconnect {<input>|<output>} <input>"', + 'print " <input> = e.g. mp1.i0, mp2.i1, mc1.i2, mc2.i3"', + 'print " <output> = e.g. mp1.o0, mp2.o1, mc1.o2, mc2.o3"']) rename *************** *** 186,189 **** --- 204,211 ---- | name:n -> ([txrx.format('RenamePatch', [active('slot'), active('pid')] + nmstring(n) + [0])]) + | anything* + -> (['print "usage: rename <module> <name>"', + 'print " <module> = e.g. mp1, mp2, mp127, mc1, mc2, mc127"', + 'print " <name> = e.g. MyModule, \\\\"My Module\\\\""']) set *************** *** 192,195 **** --- 214,225 ---- | "range" spaces parameter:p spaces range:r -> ([txrx.format('SetMorphRange', [active('slot'), active('pid'), p[0], p[1], p[2], r[0], r[1], 0])]) + | anything* + -> (['print "usage: set {<morph>|<parameter>} <value>"', + 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"', + 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', + 'print " <value> = 0 - 127"', + 'print "usage: set range <parameter> <range>"', + 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', + 'print " <range> = -127 - 127"']) assign *************** *** 208,211 **** --- 238,255 ---- | morph:m spaces keyboard:k -> ([txarx.format('AssignKeyboard', [active('slot'), active('pid'), m[2], k, 0])]) + | anything* + -> (['print "usage: assign {<knob>|<control>} {<morph>|<parameter>}"', + 'print " <knob> = k1 - k18, pedal, after touch, on/off switch"', + 'print " <control> = c0 - c127"', + 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"', + 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', + 'print " <value> = 0 - 127"', + 'print "usage: assign <parameter> <morph> [<range>]"', + 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', + 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"', + 'print " <range> = -127 - 127"', + 'print "usage: assign <morph> <keyboard>"', + 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"', + 'print " <keyboard> = 0 - 2, none, velocity, note"']) clear *************** *** 218,221 **** --- 262,273 ---- | morph:m -> (["#assign m{} 0".format(m[2])]) + | anything* + -> (['print "usage: clear {<knob>|<control>}"', + 'print " <knob> = k1 - k18, pedal, after touch, on/off switch"', + 'print " <control> = c0 - c127"', + 'print "usage: clear <parameter>"', + 'print " <parameter> = e.g. mp1.p0, mp2.p1, mc3.p2, mc4.p3"', + 'print "usage: clear <morph>"', + 'print " <morph> = m0 - m3, mm1.p0 - mm1.p3"']) slot *************** *** 282,287 **** name ! = '"' (~'"' anything)*:s '"' -> (''.join(s)) ! | (letter | digit | '.' | '-' | '_')*:s -> (''.join(s)) vcount --- 334,339 ---- name ! = '"' (~'"' anything)+:s '"' -> (''.join(s)) ! | (letter | digit | '.' | '-' | '_')+:s -> (''.join(s)) vcount |
From: Marcus A. <and...@us...> - 2013-10-19 08:01:28
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv8673 Modified Files: cli.py command.py Log Message: Command syntax overview added. Index: cli.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/cli.py,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** cli.py 8 May 2013 17:29:31 -0000 1.20 --- cli.py 19 Oct 2013 08:01:25 -0000 1.21 *************** *** 40,43 **** --- 40,46 ---- self.modular.cmd2(["#" + line]) + def do_commands(self, line): + self.modular.cmd2(["#" + line]) + def do_select(self, line): print model.query('select ' + line) Index: command.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/command.py,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** command.py 14 Oct 2013 18:40:34 -0000 1.20 --- command.py 19 Oct 2013 08:01:25 -0000 1.21 *************** *** 76,81 **** | "assign" spaces assign | "clear" spaces clear | anything*:a ! -> (['print "UNKNOWN COMMAND: {}"'.format(''.join(a))]) edit --- 76,126 ---- | "assign" spaces assign | "clear" spaces clear + | "commands" + -> (['print "edit <slot>"', + 'print "show"', + 'print "bank <bank>"', + 'print "load <location>"', + 'print "store <location>"', + 'print "new"', + 'print "export <file>"', + 'print "import <file>"', + 'print "voices <voices>"', + 'print "add <type> <section> <x> <y> <name>"', + 'print "remove <module>"', + 'print "connect {<input>|<output>} <input>"', + 'print "disconnect {<input>|<output>} <input>"', + 'print "rename <module> <name>"', + 'print "set {<morph>|<parameter>} <value>"', + 'print "set range <parameter> <range>"', + 'print "assign {<knob>|<control>} {<morph>|<parameter>}"', + 'print "assign <parameter> <morph> [<range>]"', + 'print "assign <morph> <keyboard>"', + 'print "clear {<knob>|<control>}"', + 'print "clear <parameter>"', + 'print "clear <morph>"', + 'print', + 'print "<slot> = 0, 1, 2, 3, a, b, c, d, A, B, C, D"', + 'print "<bank> = 1, 2, 3, 4, 5, 6, 7, 8, 9"', + 'print "<location> = 101, 102, 555, 999"', + 'print "<file> = monster.pch, \\\\"mon ster.pch\\\\""', + 'print "<voices> = 1, 2, 32"', + 'print "<type> = 1, 2, 3, 118, 127"', + 'print "<section> = 0, 1, p, c"', + 'print "<x> = 0, 1, 2, 127"', + 'print "<y> = 0, 1, 2, 127"', + 'print "<name> = MyModule, \\\\"My Module\\\\""', + 'print "<module> = mp1, mp2, mp127, mc1, mc2, mc127"', + 'print "<input> = mp1.i0, mp2.i1, mc1.i2, mc2.i3"', + 'print "<output> = mp1.o0, mp2.o1, mc1.o2, mc2.o3"', + 'print "<morph> = m0, m1, m2, m3, mm1.p0, mm1.p1, mm1.p2, mm1.p3"', + 'print "<parameter> = mp1.p0, mp2.p1, mc3.p2, mc4.p3"', + 'print "<range> = -127, -126, -1, 0, 1, 2, 126, 127"', + 'print "<knob> = k1, k2, k18, pedal, after touch, on/off switch"', + 'print "<control> = c0, c1, c2, c127"', + 'print "<keyboard> = 0, 1, 2, none, velocity, note"', + ]) | anything*:a ! -> (['print "UNKNOWN COMMAND: {}"'.format(''.join(a)), ! '#commands']) edit *************** *** 155,162 **** -> (["#clear c{}".format(c), txrx.format('AssignControl', [active('slot'), active('pid'), p[0], p[1], p[2], c, 0])]) ! | morph:m spaces parameter:p spaces range:r -> ("#clear m{}{}.p{}".format(p[0], p[1], p[2]), [txrx.format('AssignMorph', [active('slot'), active('pid'), p[0], p[1], p[2], m[2], r[0], r[1], 0])]) ! | morph:m spaces parameter:p -> ("#clear m{}{}.p{}".format(p[0], p[1], p[2]), [txrx.format('AssignMorph', [active('slot'), active('pid'), p[0], p[1], p[2], m[2], 0, 0, 0])]) --- 200,207 ---- -> (["#clear c{}".format(c), txrx.format('AssignControl', [active('slot'), active('pid'), p[0], p[1], p[2], c, 0])]) ! | parameter:p spaces morph:m spaces range:r -> ("#clear m{}{}.p{}".format(p[0], p[1], p[2]), [txrx.format('AssignMorph', [active('slot'), active('pid'), p[0], p[1], p[2], m[2], r[0], r[1], 0])]) ! | parameter:p spaces morph:m -> ("#clear m{}{}.p{}".format(p[0], p[1], p[2]), [txrx.format('AssignMorph', [active('slot'), active('pid'), p[0], p[1], p[2], m[2], 0, 0, 0])]) |
From: Marcus A. <and...@us...> - 2013-10-14 18:40:38
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv25710 Modified Files: command.py log.py modular.py patched.py terminal.py Log Message: Some naming and loggin fixes. Index: command.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/command.py,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** command.py 8 May 2013 17:29:31 -0000 1.19 --- command.py 14 Oct 2013 18:40:34 -0000 1.20 *************** *** 67,70 **** --- 67,71 ---- | "export" spaces export | "import" spaces import + | "voices" spaces voices | "add" spaces add | "remove" spaces remove *************** *** 104,117 **** load ! = memory:m ! -> (["tx('FetchPatch', [{}, {}, {}, {}, 0])".format(active('slot'), active('slot'), m[0], m[1]), "wack()", "#edit {}".format(active('slot'))]) store ! = memory:m ! -> (["tx('StorePatch', [{}, {}, {}, {}, 0])".format(active('slot'), active('slot'), m[0], m[1]), "wack()"]) add = type:t spaces section:s spaces number:x spaces number:y spaces name:n --- 105,122 ---- load ! = location:l ! -> (["tx('FetchPatch', [{}, {}, {}, {}, 0])".format(active('slot'), active('slot'), l[0], l[1]), "wack()", "#edit {}".format(active('slot'))]) store ! = location:l ! -> (["tx('StorePatch', [{}, {}, {}, {}, 0])".format(active('slot'), active('slot'), l[0], l[1]), "wack()"]) + voices + = vcount:v + -> (["tx('Voices', [{}, {}, {}, 0])".format(active('slot'), active('slot'), v)]) + add = type:t spaces section:s spaces number:x spaces number:y spaces name:n *************** *** 226,230 **** = digit:b ?(b != "0") -> (int(b)-1) ! memory = bankid:b digit:p1 digit:p0 -> (b, int(p1)*10+int(p0)-1) | digit:p1 digit:p0 -> (0, int(p1)*10+int(p0)-1) --- 231,235 ---- = digit:b ?(b != "0") -> (int(b)-1) ! location = bankid:b digit:p1 digit:p0 -> (b, int(p1)*10+int(p0)-1) | digit:p1 digit:p0 -> (0, int(p1)*10+int(p0)-1) *************** *** 235,238 **** --- 240,246 ---- | (letter | digit | '.' | '-' | '_')*:s -> (''.join(s)) + vcount + = number:n ?(n > 0 and n < 33) -> (n-1) + number = number:n digit:d -> (n*10+int(d)) Index: patched.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patched.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** patched.py 23 Apr 2013 19:08:27 -0000 1.1 --- patched.py 14 Oct 2013 18:40:35 -0000 1.2 *************** *** 5,8 **** --- 5,11 ---- import os import model + import log + + log.verbose("modular") for port in sysex.Inputs(): Index: log.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/log.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** log.py 13 May 2013 14:47:57 -0000 1.2 --- log.py 14 Oct 2013 18:40:34 -0000 1.3 *************** *** 1,4 **** --- 1,7 ---- + import re + files = {} + pattern = "none" def log_init(file): *************** *** 7,10 **** --- 10,20 ---- def log(file, data): + global pattern + if re.search(pattern, file) != None: + print data files[file].write(data) files[file].flush() + + def verbose(p): + global pattern + pattern = p Index: terminal.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/terminal.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** terminal.py 12 Apr 2013 21:23:40 -0000 1.1 --- terminal.py 14 Oct 2013 18:40:35 -0000 1.2 *************** *** 1,2 **** --- 1,3 ---- + """ getTerminalSize() - get width and height of console *************** *** 85,90 **** return None return int(cr[1]), int(cr[0]) - - if __name__ == "__main__": - sizex,sizey=getTerminalSize() - print 'width =',sizex,'height =',sizey --- 86,87 ---- Index: modular.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.py,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** modular.py 10 May 2013 06:12:17 -0000 1.36 --- modular.py 14 Oct 2013 18:40:35 -0000 1.37 *************** *** 10,13 **** --- 10,14 ---- import command import terminal + import os # Used by patch.protocol to convert a nord modular string to a python string *************** *** 100,104 **** n = (n + 6) % 7 data = data[:-7] + list2stream([sum % 128], 7) - print "tx: " + str(hexlist(stream2list(data, 7))) sx.tx(data) return data --- 101,104 ---- *************** *** 151,155 **** if len(program) > 0: log("modular.log", program + '\n') - print program exec program --- 151,154 ---- |
From: Marcus A. <and...@us...> - 2013-10-14 18:37:25
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv25457 Modified Files: bank.view modular.model Log Message: Code compaction by abstraction. Index: bank.view =================================================================== RCS file: /cvsroot/nmedit/patchauthor/bank.view,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** bank.view 8 May 2013 17:29:31 -0000 1.1 --- bank.view 14 Oct 2013 18:37:22 -0000 1.2 *************** *** 10,23 **** view = [ { pos ! * "select b.caption as [bank], p.value as [posid], p.caption as [position] from map b, map p where b.name='bank' and b.value={bankid} and p.name='position' and p.value >= 0 and p.value < 25 order by posid" ! } ! { pos ! * "select b.caption as [bank], p.value as [posid], p.caption as [position] from map b, map p where b.name='bank' and b.value={bankid} and p.name='position' and p.value >= 25 and p.value < 50 order by posid" ! } ! { pos ! * "select b.caption as [bank], p.value as [posid], p.caption as [position] from map b, map p where b.name='bank' and b.value={bankid} and p.name='position' and p.value >= 50 and p.value < 75 order by posid" ! } ! { pos ! * "select b.caption as [bank], p.value as [posid], p.caption as [position] from map b, map p where b.name='bank' and b.value={bankid} and p.name='position' and p.value >= 75 and p.value < 100 order by posid" ! } ] --- 10,14 ---- view = [ { pos ! * "select b.caption as [bank], p.value as [posid], p.caption as [position] from map b, map p where b.name='bank' and b.value={bankid} and p.name='position' and p.value >= {start} and p.value < {end} order by posid" ! } * "select [start], [end] from bankcolumn order by start" ] Index: modular.model =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.model,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** modular.model 8 May 2013 17:29:31 -0000 1.17 --- modular.model 14 Oct 2013 18:37:22 -0000 1.18 *************** *** 42,45 **** --- 42,47 ---- memory (bank number, position number, name text) + bankcolumn (start number, end number) + map (name text, value number, caption text) *************** *** 53,56 **** --- 55,60 ---- slot x:range(0,4) + bankcolumn x:[0,25,50,75] x+25 + map 'identity' x:range(0,128) str(x) |
From: Marcus A. <and...@us...> - 2013-05-13 14:47:59
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv13401 Modified Files: log.py README Log Message: Log updates and installation instructions. Index: README =================================================================== RCS file: /cvsroot/nmedit/patchauthor/README,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** README 10 May 2013 06:12:17 -0000 1.4 --- README 13 May 2013 14:47:57 -0000 1.5 *************** *** 20,29 **** --------------------- ! You need Python 2.7, libportmidi, pyportmidi, PyMeta2[1] and ! Patched[2]. # sudo apt-get install curl python python-pypm ! Download PyMeta2[1] and follow the installation instructions. # curl http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar >patchauthor.tar.gz --- 20,31 ---- --------------------- ! You need Python 2.7, libportmidi, pyportmidi, Setuptools[1], ! PyMeta2[2] and Patched[3]. # sudo apt-get install curl python python-pypm ! Download Setuptools[1] and run the file. ! ! Download PyMeta2[2] and follow the installation instructions. # curl http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar >patchauthor.tar.gz *************** *** 32,37 **** # python patched.py ! [1] http://www.allbuttonspressed.com/projects/pymeta ! [2] http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar --- 34,40 ---- # python patched.py ! [1] https://pypi.python.org/pypi/setuptools ! [2] http://www.allbuttonspressed.com/projects/pymeta ! [3] http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar *************** *** 39,48 **** ---------------------- ! You need Python 2.7, libportmidi, pyportmidi, PyMeta2[1] and ! Patched[2]. Then it should work, but I haven't tried it. Let me know ! if it works for you. ! [1] http://www.allbuttonspressed.com/projects/pymeta ! [2] http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar --- 42,56 ---- ---------------------- ! You need Python 2.7[1], pygame[2], Setuptools[3], PyMeta2[4] and ! Patched[5]. Then it should work, but I haven't tried it. Let me know ! if it works for you. Start in a console with: ! C:\patchauthor> patched.py ! ! [1] http://www.python.org/getit/ ! [2] http://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame ! [3] https://pypi.python.org/pypi/setuptools ! [4] http://www.allbuttonspressed.com/projects/pymeta ! [5] http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar *************** *** 50,57 **** ------------------ ! You need Python 2.7, libportmidi, pyportmidi, PyMeta2[1] and ! Patched[2]. Then it should work, but I haven't tried it. Let me know ! if it works for you. ! [1] http://www.allbuttonspressed.com/projects/pymeta ! [2] http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar --- 58,71 ---- ------------------ ! You need Python 2.7[1], pygame[2], Setuptools[3], PyMeta2[4] and ! Patched[5]. Then it should work, but I haven't been able to install ! pygame with pyportmidi support. Let me know if it works for you. Start ! in a terminal with: ! $ python patched.py ! ! [1] http://www.python.org/getit/ ! [2] http://www.pygame.org/download.shtml ! [3] https://pypi.python.org/pypi/setuptools ! [4] http://www.allbuttonspressed.com/projects/pymeta ! [5] http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar Index: log.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/log.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** log.py 5 Apr 2013 18:26:27 -0000 1.1 --- log.py 13 May 2013 14:47:57 -0000 1.2 *************** *** 1,10 **** def log_init(file): ! log = open(file, "w") ! log.write("\n") ! log.close() def log(file, data): ! log = open(file, "aw") ! log.write(data) ! log.close() --- 1,10 ---- + files = {} + def log_init(file): ! files[file] = open(file, "w") ! log(file, "\n") def log(file, data): ! files[file].write(data) ! files[file].flush() |
From: Marcus A. <and...@us...> - 2013-05-10 06:12:20
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv13924 Modified Files: README modular.py Log Message: Documentation. Index: README =================================================================== RCS file: /cvsroot/nmedit/patchauthor/README,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** README 25 Apr 2013 14:54:39 -0000 1.3 --- README 10 May 2013 06:12:17 -0000 1.4 *************** *** 20,26 **** --------------------- # sudo apt-get install curl python python-pypm ! Download http://www.allbuttonspressed.com/projects/pymeta and follow the installation instructions. # curl http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar >patchauthor.tar.gz --- 20,29 ---- --------------------- + You need Python 2.7, libportmidi, pyportmidi, PyMeta2[1] and + Patched[2]. + # sudo apt-get install curl python python-pypm ! Download PyMeta2[1] and follow the installation instructions. # curl http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar >patchauthor.tar.gz *************** *** 29,38 **** --- 32,57 ---- # python patched.py + [1] http://www.allbuttonspressed.com/projects/pymeta + [2] http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar + Installation - Windows ---------------------- + You need Python 2.7, libportmidi, pyportmidi, PyMeta2[1] and + Patched[2]. Then it should work, but I haven't tried it. Let me know + if it works for you. + + [1] http://www.allbuttonspressed.com/projects/pymeta + [2] http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar + Installation - OSX ------------------ + You need Python 2.7, libportmidi, pyportmidi, PyMeta2[1] and + Patched[2]. Then it should work, but I haven't tried it. Let me know + if it works for you. + + [1] http://www.allbuttonspressed.com/projects/pymeta + [2] http://nmedit.cvs.sourceforge.net/viewvc/nmedit/patchauthor/?view=tar Index: modular.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.py,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** modular.py 8 May 2013 17:29:32 -0000 1.35 --- modular.py 10 May 2013 06:12:17 -0000 1.36 *************** *** 129,133 **** # ! # Interpret a list of mixcode statements. # # Available python functions: --- 129,133 ---- # ! # Interpret a list of Mixcode statements. # # Available python functions: *************** *** 137,140 **** --- 137,144 ---- # wack - Wait for and dequeue an ack # + # stepPosition and continueWithPatchList. + # + # Access to output views. + # # Accepts SQL insert, update, delete, select # using [x] for assignment and {y} for substitution |
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv7177 Modified Files: cli.py command.py modular.model modular.protocol modular.py patch.protocol protocol.py Added Files: bank.view Log Message: Patch bank listing. Index: modular.model =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.model,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** modular.model 12 Apr 2013 21:23:40 -0000 1.16 --- modular.model 8 May 2013 17:29:31 -0000 1.17 *************** *** 1,12 **** ! moduletype (ord number, name string, cardinality number, modulesection number, cycles real, progmem real, xmem real, ymem real, zeropage real, dynmem real, height number) ! parametertype (moduletype number, ord number, name string, min number, max number, map string) ! customtype (moduletype number, ord number, name string, min number, max number, map string) ! sockettype (moduletype number, isOutput number, ord number, name string, signaltype string) ! patch (slot number, pid number, krangemin number, krangemax number, vrangemin number, vrangemax number, brange number, ptime number, portamento number, pedalMode number, voices number, unknown2 number, sspos number, octave number, red number, blue number, yellow number, gray number, green number, purple number, white number, cretrigger number, pretrigger number, unknown3 number, unknown4 number, name string) module (slot number, section number, moduletype number, indx number, xpos number, ypos number) --- 1,12 ---- ! moduletype (ord number, name text, cardinality number, modulesection number, cycles real, progmem real, xmem real, ymem real, zeropage real, dynmem real, height number) ! parametertype (moduletype number, ord number, name text, min number, max number, map text) ! customtype (moduletype number, ord number, name text, min number, max number, map text) ! sockettype (moduletype number, isOutput number, ord number, name text, signaltype text) ! patch (slot number, pid number, krangemin number, krangemax number, vrangemin number, vrangemax number, brange number, ptime number, portamento number, pedalMode number, voices number, unknown2 number, sspos number, octave number, red number, blue number, yellow number, gray number, green number, purple number, white number, cretrigger number, pretrigger number, unknown3 number, unknown4 number, name text) module (slot number, section number, moduletype number, indx number, xpos number, ypos number) *************** *** 24,28 **** control (slot number, id number, section number, indx number, parameter number) ! name (slot number, section number, indx number, name string) note (slot number, value number, attack number, release number) --- 24,28 ---- control (slot number, id number, section number, indx number, parameter number) ! name (slot number, section number, indx number, name text) note (slot number, value number, attack number, release number) *************** *** 30,38 **** custom (slot number, section number, indx number, ord number, value number) ! section (prefix string, section number) slot (slot number) ! socket (prefix string, isOutput number) active (slot number) --- 30,38 ---- custom (slot number, section number, indx number, ord number, value number) ! section (prefix text, section number) slot (slot number) ! socket (prefix text, isOutput number) active (slot number) *************** *** 40,44 **** synth (serial number) ! map (name string, value number, caption string) section 'c' 0 --- 40,46 ---- synth (serial number) ! memory (bank number, position number, name text) ! ! map (name text, value number, caption text) section 'c' 0 *************** *** 64,70 **** map 'knob' 20 'on/off switch' ! map 'control' x:range(0,121) str(x) map 'control' 1 'Mod. wheel' map 'control' 2 'Breath' map 'control' 4 'Expr. pedal' map 'control' 5 'Port. time' --- 66,73 ---- map 'knob' 20 'on/off switch' ! map 'control' 0 '0' map 'control' 1 'Mod. wheel' map 'control' 2 'Breath' + map 'control' 3 '3' map 'control' 4 'Expr. pedal' map 'control' 5 'Port. time' *************** *** 72,81 **** --- 75,88 ---- map 'control' 7 'Volume' map 'control' 8 'Balance' + map 'control' 9 '9' map 'control' 10 'Pan' map 'control' 11 'Expression' + map 'control' x:range(12,65) str(x) map 'control' 65 'Portamento' map 'control' 66 'Sostenuto' map 'control' 67 'Soft pedal' + map 'control' 68 '68' map 'control' 69 'Hold 2' + map 'control' x:range(70,91) str(x) map 'control' 91 'Ext. eff. depth' map 'control' 92 'Tremolo depth' *************** *** 85,88 **** --- 92,96 ---- map 'control' 96 'Data inc.' map 'control' 97 'Data dec.' + map 'control' x:range(97,121) str(x) map 'slot' 0 'A' *************** *** 91,94 **** --- 99,106 ---- map 'slot' 3 'D' + map 'bank' x:range(0,9) str(x+1) + + map 'position' x:range(0,99) '{0:02}'.format(x+1) + map 'onoff' x:[0,1] ['on','off'][x] Index: command.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/command.py,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** command.py 1 May 2013 06:10:53 -0000 1.18 --- command.py 8 May 2013 17:29:31 -0000 1.19 *************** *** 60,65 **** --- 60,68 ---- = "edit" spaces edit | "show" spaces show + | "bank" spaces bank | "load" spaces load | "store" spaces store + | "new" + -> (["#import new.pch"]) | "export" spaces export | "import" spaces import *************** *** 85,88 **** --- 88,95 ---- -> (['view.render(patchview.build("view", model, {{}}), 0, {})'.format(termwidth)]) + bank + = bankid:b + -> (["tx('GetPatchList', [0, {}, 0, 0])".format(b)]) + import = name:n *************** *** 216,223 **** = 'c' number:c -> (c) memory ! = digit:b digit:p1 digit:p0 -> (int(b)-1, int(p1)*10+int(p0)-1) ! | digit:p1 digit:p0 -> (0 , int(p1)*10+int(p0)-1) ! | digit:p0 -> (0 , int(p0)-1) name --- 223,233 ---- = 'c' number:c -> (c) + bankid + = digit:b ?(b != "0") -> (int(b)-1) + memory ! = bankid:b digit:p1 digit:p0 -> (b, int(p1)*10+int(p0)-1) ! | digit:p1 digit:p0 -> (0, int(p1)*10+int(p0)-1) ! | digit:p0 -> (0, int(p0)-1) name --- NEW FILE: bank.view --- pos = [ ('{bank}{position} ' ' ') ('{name} ' ' ') * "select [name] from memory where bank={bankid} and position={posid}" ('<empty> ' ' ') * "select 1 as [nop] from map left join memory on memory.bank={bankid} and memory.position=map.value where map.name='position' and map.value={posid} and memory.name is null" ] view = [ { pos * "select b.caption as [bank], p.value as [posid], p.caption as [position] from map b, map p where b.name='bank' and b.value={bankid} and p.name='position' and p.value >= 0 and p.value < 25 order by posid" } { pos * "select b.caption as [bank], p.value as [posid], p.caption as [position] from map b, map p where b.name='bank' and b.value={bankid} and p.name='position' and p.value >= 25 and p.value < 50 order by posid" } { pos * "select b.caption as [bank], p.value as [posid], p.caption as [position] from map b, map p where b.name='bank' and b.value={bankid} and p.name='position' and p.value >= 50 and p.value < 75 order by posid" } { pos * "select b.caption as [bank], p.value as [posid], p.caption as [position] from map b, map p where b.name='bank' and b.value={bankid} and p.name='position' and p.value >= 75 and p.value < 100 order by posid" } ] Index: modular.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.py,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** modular.py 1 May 2013 06:10:53 -0000 1.34 --- modular.py 8 May 2013 17:29:32 -0000 1.35 *************** *** 9,12 **** --- 9,13 ---- from log import log_init, log import command + import terminal # Used by patch.protocol to convert a nord modular string to a python string *************** *** 37,40 **** --- 38,45 ---- return step - inc + # Used to convert list of characters to a string suitable for SQL. + def sqlstring(chrs): + return ''.join([chrn(y) for y in chrs]).replace("'", "''") + # Functions used by patch.protocol parsercontext = { *************** *** 42,45 **** --- 47,51 ---- 'paramQueries': paramQueries, 's': s, + 'sqlstring': sqlstring, } *************** *** 50,54 **** modularprotocol = protocol.Protocol(["modular.protocol", "patch.protocol", "patch2.protocol"], parsercontext, ["host.protocol", "patch.protocol"]) ! # Create the layout engine for the user interface patchview = view.View("patch.view") --- 56,60 ---- modularprotocol = protocol.Protocol(["modular.protocol", "patch.protocol", "patch2.protocol"], parsercontext, ["host.protocol", "patch.protocol"]) ! # Create the layout engine for the patch view patchview = view.View("patch.view") *************** *** 56,59 **** --- 62,68 ---- patchfileview = view.View("patchfile.view") + # Create the layout engine for the memory bank view + bankview = view.View("bank.view") + # Init command log log_init("modular.log") *************** *** 96,99 **** --- 105,132 ---- # + # Used by memory bank download to track current memory position + + firstbank = -1 + + def stepPosition(bank, position, n): + global firstbank + if firstbank == -1: + firstbank = bank + position = position + n + if position > 98: + bank = bank + 1 + position = 0 + bankswitch = 1 + return (bank, position) + + def continueWithPatchList(bank, position): + global firstbank + if firstbank == bank: + tx('GetPatchList', [0, bank, position, 0]) + else: + view.render(bankview.build("view", model, {'bankid':firstbank}), 0, terminal.getTerminalSize()[0]) + firstbank = -1 + + # # Interpret a list of mixcode statements. # Index: modular.protocol =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.protocol,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** modular.protocol 30 Apr 2013 22:35:32 -0000 1.23 --- modular.protocol 8 May 2013 17:29:32 -0000 1.24 *************** *** 60,61 **** --- 60,116 ---- "ack({})".format(pid) ]; + + PatchList + 0x33:7 0x16:5 slot:2 0x06:7 + pid:7 0x02:4 variant:2 0x01:1 pid2:7 + unknown1:7 unknown2:7 unknown3:7 + parts:PatchListPart* + last:PatchListEnd + checksum:7; + + -PatchListPart + code:7 content:PatchListContent(code); + + -PatchListContent(1) + position:7 + @[ + "(bank, position) = stepPosition(bank, {}, 0)".format(position) + ]; + + -PatchListContent(2) + 0:0 + @[ + "delete from memory where bank={bank} and position={position}", + "(bank, position) = stepPosition(bank, position, 1)" + ]; + + -PatchListContent(3) + bank:7 position:7 + @[ + "(bank, position) = stepPosition({}, {}, 0)".format(bank, position) + ]; + + -PatchListContent(:first) + rest:7*15/0 + @[ + "delete from memory where bank={bank} and position={position}", + "insert into memory (bank, position, name) values ({{bank}}, {{position}}, '{}')".format(sqlstring([first]+rest)), + "(bank, position) = stepPosition(bank, position, 1)" + ]; + + -PatchListEnd + code:7 last:PatchListEnd(code); + + -PatchListEnd(4) + 0:0 + @[ + "(bank, position) = stepPosition(10, 0, 0)", + "continueWithPatchList(bank, position)" + ]; + + -PatchListEnd(5) + 0:0 + @[ + "continueWithPatchList(bank, position)" + ]; + Index: patch.protocol =================================================================== RCS file: /cvsroot/nmedit/patchauthor/patch.protocol,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** patch.protocol 30 Apr 2013 22:35:32 -0000 1.16 --- patch.protocol 8 May 2013 17:29:32 -0000 1.17 *************** *** 4,8 **** pid:7 0x27:7 name:7*16/0 checksum:7 @[ ! "update patch set name='{}' where slot={} and pid={}".format(''.join([chrn(y) for y in name]), slot, pid). '#show' ]; --- 4,8 ---- pid:7 0x27:7 name:7*16/0 checksum:7 @[ ! "update patch set name='{}' where slot={} and pid={}".format(sqlstring(name), slot, pid), '#show' ]; *************** *** 12,16 **** pid:7 0x33:7 section:7 indx:7 name:7*16/0 checksum:7 @[ ! "update name set name='{}' where slot={} and section={} and indx={}".format(''.join([chrn(y) for y in name]), slot, section, indx), '#show' ]; --- 12,16 ---- pid:7 0x33:7 section:7 indx:7 name:7*16/0 checksum:7 @[ ! "update name set name='{}' where slot={} and section={} and indx={}".format(sqlstring(name), slot, section, indx), '#show' ]; *************** *** 149,153 **** 'insert into active (slot) values ({})'.format(slot), 'delete from patch where slot={}'.format(slot), ! "insert into patch (slot, pid, krangemin, krangemax, vrangemin, vrangemax, brange, ptime, portamento, pedalMode, voices, unknown2, sspos, octave, red, blue, yellow, gray, green, purple, white, cretrigger, pretrigger, unknown3, unknown4, name) values ({}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, '{}')".format(slot, pid, krangemin, krangemax, vrangemin, vrangemax, brange, ptime, portamento, pedalMode, voices, unknown2, sspos, octave, red, blue, yellow, gray, green, purple, white, cretrigger, pretrigger, unknown3, unknown4, ''.join([chrn(y) for y in name])), "tx('GetPatchPart2', [{}, {}, 0x4b, 0x01, 0])".format(slot, pid) ]; --- 149,153 ---- 'insert into active (slot) values ({})'.format(slot), 'delete from patch where slot={}'.format(slot), ! "insert into patch (slot, pid, krangemin, krangemax, vrangemin, vrangemax, brange, ptime, portamento, pedalMode, voices, unknown2, sspos, octave, red, blue, yellow, gray, green, purple, white, cretrigger, pretrigger, unknown3, unknown4, name) values ({}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, '{}')".format(slot, pid, krangemin, krangemax, vrangemin, vrangemax, brange, ptime, portamento, pedalMode, voices, unknown2, sspos, octave, red, blue, yellow, gray, green, purple, white, cretrigger, pretrigger, unknown3, unknown4, sqlstring(name)), "tx('GetPatchPart2', [{}, {}, 0x4b, 0x01, 0])".format(slot, pid) ]; *************** *** 270,274 **** indx:8 name:8*16/0 @[ ! "insert into name (slot, section, indx, name) values (-1,-1,{},'{}')".format(indx, ''.join([chrn(y) for y in name])) ]; --- 270,274 ---- indx:8 name:8*16/0 @[ ! "insert into name (slot, section, indx, name) values (-1,-1,{},'{}')".format(indx, sqlstring(name)) ]; Index: cli.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/cli.py,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** cli.py 1 May 2013 06:15:11 -0000 1.19 --- cli.py 8 May 2013 17:29:31 -0000 1.20 *************** *** 7,10 **** --- 7,11 ---- modular = 0 + prompt = "# " def __init__(self, modular): *************** *** 36,84 **** pass ! def do_edit(self, line): ! self.modular.cmd2(["#" + "edit " + line]) def do_select(self, line): print model.query('select ' + line) - - def do_show(self, line): - self.modular.cmd2(["#" + "show " + line]) - - def do_new(self, line): - self.modular.cmd2(["#import new.pch"]) - - def do_load(self, line): - self.modular.cmd2(["#" + "load " + line]) - - def do_store(self, line): - self.modular.cmd2(["#" + "store " + line]) - - def do_export(self, line): - self.modular.cmd2(["#" + "export " + line]) - - def do_import(self, line): - self.modular.cmd2(["#" + "import " + line]) - - def do_add(self, line): - self.modular.cmd2(["#" + "add " + line]) - - def do_remove(self, line): - self.modular.cmd2(["#" + "remove " + line]) - - def do_connect(self, line): - self.modular.cmd2(["#" + "connect " + line]) - - def do_disconnect(self, line): - self.modular.cmd2(["#" + "disconnect " + line]) - - def do_rename(self, line): - self.modular.cmd2(["#" + "rename " + line]) - - def do_set(self, line): - self.modular.cmd2(["#" + "set " + line]) - - def do_assign(self, line): - self.modular.cmd2(["#" + "assign " + line]) - - def do_clear(self, line): - self.modular.cmd2(["#" + "clear " + line]) --- 37,43 ---- pass ! def default(self, line): ! self.modular.cmd2(["#" + line]) def do_select(self, line): print model.query('select ' + line) Index: protocol.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/protocol.py,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** protocol.py 31 Mar 2013 21:11:44 -0000 1.21 --- protocol.py 8 May 2013 17:29:32 -0000 1.22 *************** *** 141,144 **** --- 141,146 ---- | name:v ':' name:p '(' args:t ')' -> (["{}({}):{}".format(p, t, v), v + "['actions']", v + "['consumed']", "('{}',{})".format(v, v)]) + | name:v ':' name:p '*' + -> (["{}*:{}".format(p, v), "reduce(addActions, {}, [])".format(v), "reduce(addConsumed, {}, 0)".format(v), "('{}',{})".format(v, v)]) | name:v ':' name:p -> (["{}:{}".format(p, v), v + "['actions']", v + "['consumed']", "('{}',{})".format(v, v)]) *************** *** 162,165 **** --- 164,177 ---- """ + # + # Parser helper functions + + def addActions(a, b): + return a + b['actions'] + + def addConsumed(a, b): + return a + b['consumed'] + + # Common rules required to parse a message in bitstream format parsercommongrammar = """ *************** *** 312,315 **** --- 324,329 ---- grammar = file(grammarfilename).read() parsergrammar = parsercommongrammar + grammar + parsercontext['addActions'] = addActions + parsercontext['addConsumed'] = addConsumed self.parser = OMeta.makeGrammar(parsergrammar, parsercontext) |
From: Marcus A. <and...@us...> - 2013-05-01 06:15:13
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv5512 Modified Files: cli.py Log Message: new should now use import. Index: cli.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/cli.py,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** cli.py 1 May 2013 06:10:53 -0000 1.18 --- cli.py 1 May 2013 06:15:11 -0000 1.19 *************** *** 46,50 **** def do_new(self, line): ! self.modular.cmd2(["#load new.pch"]) def do_load(self, line): --- 46,50 ---- def do_new(self, line): ! self.modular.cmd2(["#import new.pch"]) def do_load(self, line): |
From: Marcus A. <and...@us...> - 2013-05-01 06:10:55
|
Update of /cvsroot/nmedit/patchauthor In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv5038 Modified Files: cli.py command.py modular.py Log Message: Use load/store export/import to match synth buttons. Index: cli.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/cli.py,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** cli.py 30 Apr 2013 22:35:31 -0000 1.17 --- cli.py 1 May 2013 06:10:53 -0000 1.18 *************** *** 51,63 **** self.modular.cmd2(["#" + "load " + line]) - def do_save(self, line): - self.modular.cmd2(["#" + "save " + line]) - - def do_fetch(self, line): - self.modular.cmd2(["#" + "fetch " + line]) - def do_store(self, line): self.modular.cmd2(["#" + "store " + line]) def do_add(self, line): self.modular.cmd2(["#" + "add " + line]) --- 51,63 ---- self.modular.cmd2(["#" + "load " + line]) def do_store(self, line): self.modular.cmd2(["#" + "store " + line]) + def do_export(self, line): + self.modular.cmd2(["#" + "export " + line]) + + def do_import(self, line): + self.modular.cmd2(["#" + "import " + line]) + def do_add(self, line): self.modular.cmd2(["#" + "add " + line]) Index: command.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/command.py,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** command.py 30 Apr 2013 22:35:31 -0000 1.17 --- command.py 1 May 2013 06:10:53 -0000 1.18 *************** *** 61,67 **** | "show" spaces show | "load" spaces load - | "save" spaces save - | "fetch" spaces fetch | "store" spaces store | "add" spaces add | "remove" spaces remove --- 61,67 ---- | "show" spaces show | "load" spaces load | "store" spaces store + | "export" spaces export + | "import" spaces import | "add" spaces add | "remove" spaces remove *************** *** 85,97 **** -> (['view.render(patchview.build("view", model, {{}}), 0, {})'.format(termwidth)]) ! load = name:n ! -> (patchload(n)) ! save = name:n ! -> (["save('{}')".format(n)]) ! fetch = memory:m -> (["tx('FetchPatch', [{}, {}, {}, {}, 0])".format(active('slot'), active('slot'), m[0], m[1]), --- 85,100 ---- -> (['view.render(patchview.build("view", model, {{}}), 0, {})'.format(termwidth)]) ! import = name:n ! -> (loadfile(n)) ! export = name:n ! -> (['pch = patchfileview.build("patch", model, {{"slot":{}}})'.format(active('slot')), ! 'f = open("{}", "w")'.format(n), ! 'f.write(view.dump(pch))', ! 'f.close()']) ! load = memory:m -> (["tx('FetchPatch', [{}, {}, {}, {}, 0])".format(active('slot'), active('slot'), m[0], m[1]), *************** *** 229,233 **** def parse(cmd): ! parser = OMeta.makeGrammar(commandgrammar, {'nmstring':nmstring, 'defaultValues':defaultValues, 'nextindx':nextindx, 'active':active, 'txrx':txrx, 'txarx':txarx, 'termwidth':terminal.getTerminalSize()[0], 'patchload':patchfile.load}) return parser.parse(cmd) --- 232,236 ---- def parse(cmd): ! parser = OMeta.makeGrammar(commandgrammar, {'nmstring':nmstring, 'defaultValues':defaultValues, 'nextindx':nextindx, 'active':active, 'txrx':txrx, 'txarx':txarx, 'termwidth':terminal.getTerminalSize()[0], 'loadfile':patchfile.load}) return parser.parse(cmd) Index: modular.py =================================================================== RCS file: /cvsroot/nmedit/patchauthor/modular.py,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** modular.py 24 Apr 2013 15:20:11 -0000 1.33 --- modular.py 1 May 2013 06:10:53 -0000 1.34 *************** *** 96,109 **** # - # Synth functions - - def save(filename): - (slot,) = model.query("select slot from active")[0] - pch = patchfileview.build("patch", model, {'slot':slot}) - f = open(filename, "w") - f.write(view.dump(pch)) - f.close() - - # # Interpret a list of mixcode statements. # --- 96,99 ---- *************** *** 113,117 **** # ack - Enqueue an ack # wack - Wait for and dequeue an ack - # save - Save active slot to file # # Accepts SQL insert, update, delete, select --- 103,106 ---- |