diff options
Diffstat (limited to 'pd/src/notes.txt')
-rw-r--r-- | pd/src/notes.txt | 264 |
1 files changed, 264 insertions, 0 deletions
diff --git a/pd/src/notes.txt b/pd/src/notes.txt new file mode 100644 index 00000000..6a01dd0b --- /dev/null +++ b/pd/src/notes.txt @@ -0,0 +1,264 @@ +---------------- dolist -------------------- +++portno wierdness in gcc 3 worked around (Burton) +non-power-of-2 channel counts in ASIO (Olaf Matthes) +Bug, David McCallum, Jul. 13 -- find last error crashes + + +last-minute bug fixes: +add flag to select MIDI open to use select()? +check top-of-window problem in OSX +denormal protection + +doc: +fix readme file and recopy to web page (add to README in dist instructions) + +problems: +don't draw in/outlets on gui objects in graphs +Alsa degradation after several hours running on soundblaster +font size should depend on subpatch/abstraction +moving a bang toward top of window creates problem +figure out O_NDELAY for linux audio? +missed Thomas's multi-dialog trick??? +fix iemguis not to bash symbol names +check what happens when going back and forth between graph-on-parent +deal with spaces in iemgui labels and send/receive names +David McCallum, table crashes in 98? +font hack (pix@test.at, 30 Nov 2001 + perl -pi -e 's/-[*%a-z0-9-]*\*[*%a-z0-9-]*/fixed/' u_main.tk +get rid of messages causing renaming; try to prevent patches closing themselves. +Krzysztof's qlist_next reentrancy bug +dac~/ adc~/ block~ incompatibility +is ALSA really checking /proc!? +scofo reports error on reading score1.txt +data copy/paste doesn't check templates aren't changed +rfft~ loses nyquist bin -- see "to hell with it" comment in d_fft.c +soundfile writing gets wrong sample rate; see /* lie */ in d_soundfile.c + +data: +vget, vset traversal objects +cursor to show (x, y) location +better hit detection (getrect is too greedy) +click on points of plot +typing at drawnumbers +fix templates to be loaded on demand and belong to a globally known patch +test and debug list elements of templates +sublists should display on parent if desired? +sublists seem not to handle canvas allocation right (get.pd->pointer.pd bug) +scalar hook to catch the mouse +protect against "plots" going away while you drag on them + +features: +Pd to open html help on windows/mac +flag to hide array names +??? have a way to disambiguate externs from different libs??? +put serial object in main dist (see rat@telecoma, Apr. 25; winfried May 22) +if there's just one array, don't do stringent hit check. +netsend separate thread +netreceive (and netsend?) message to set port number +delete-in-rectangle message to Pds +pasting should look at current mouse location +"regular" numbers/symbols to do send/receive thing ala IEMGUI +make selecting text grab keyboard focus +think about x and y scale preservation when changing between graph and object +show outlines of objects even when graph is "open" +make graph labels persistent and add to dialog +array click protection (Krzysztof's suggestion) +Pd support for jack audio system: http://home.t-online.de/home/pdq808/jack-patch +offer audiooutdev 1,3 feature on Windows +Alsa in data late should carefuly reset DAC/ADC fill&empty pointers +increase MIDIQSIZE to at least 1024 in s_unix.c +add nonblock to linux open calls instead of using alarm +make a hook so objects can specify help windows to open (for scheme object) +graph_vis() to decorate graphs when they're toplevel (parent_glist == 0) +get graphs to expand to hold their contents +writing FLOAT wav files +make "table" rescalable vertically +-compat34 flag to save files so that 0.34 can read them +suita.chopin.edu.pl/~czaja/miXed/externs/xeq.html -- MIDI file reader +in glist_delete, consider why this can't be just "vis 0" -- why do we need it? +abstraction auto-reload +closebang +switching between dac and gettimeofday timing on dsp_start/stop +check that -blocksize really reflects in audiobuf calc for Hammerfall +-version to print version and exit; usage() also to print version +NT and OSX: opening HTML files? +message to change block~ sizes dynamically +MIDI file reading/writing? +makefile to have make install depend on make local. +borrow arrow keys from IEMLIB +pd messages to close and reopen sound driver +Float method for random +figure out list, message objects +separate control over alsaindev and alsaoutdev +pd -version +make "import"/export use IEMLIB objects +object to get/set table size; random; quantile +put in something for tilde order forcing +extensible "toolbar" so people can add external GUI objects +text cut and paste; see XStoreBytes +new objects: nexttick~, extend threshold~ and snapshot~ +allow spaces in paths +gem: try XSetBorderWidth, XMoveWindow, xcopyarea (/usr/share/doc/XF*) +dialog for audio and MIDI settings +prepend help to help filenames and add help search path +read/writesf~ for NT +variable send and receive -- check how max/MSP does it? +number boxes to darken for typing and/or received messages +delayed updates +invisible toplevels +dialog to change lib flag and path +fastedit moves +pique~ and fiddle~ unification (notice pique filtering is different!) +new message box look +figure out what to do when "pd sym" conflicts with window title as in Pluton? + + +LATER +Hammerfall adapt to ALSA ++~ 0 faster than +~ -- detect scalar input; also, order forcing inputs +bonk~ file path handling +unify arrays and garrays +dialog to give values of $1, ... for the canvas +bang at end of line~, tabwrite~, etc. +recording to part of a table +printout to main window +should sys_bail kill all "threads" on the way out? +check a_valid usage +allow backslashes (or else really disallow them) +icon & desktop integration +vreadsf~ +benchmarking +flash menu when accelerator hits? +fix edit mode menu item +"undo" +fancier text editing +tools (reassigns meaning of primary click) +get gui to notice early EOF +rewrite t_getbytes properly +obj_new should do a longjmp on out-of-memory + +--------------------- source notes -------------------------- + +0. structure definition roadmap. First, the containment tree of things +that can be sent messages ("pure data"). (note that t_object and t_text, +and t_graph and t_canvas, should be unified...) + +------------ BFFORE 0.35: --------- +m_pd.h t_pd anything with a class + t_gobj "graphic object" + t_text text object +g_canvas.h + t_glist list of graphic objects +g_canvas.c t_canvas Pd "document" + +------------ AFTER 0.35: --------- +m_pd.h t_pd anything with a class + t_gobj "graphic object" + t_text patchable object, AKA t_object +g_canvas.h t_glist list of graphic objects, AKA t_canvas + +... and other structures: +g_canvas.h t_selection -- linked list of gobjs + t_editor -- editor state, allocated for visible glists +m_imp.h t_methodentry -- method handler + t_widgetbehavior -- class-dependent editing behavior for gobjs + t_parentwidgetbehavior -- objects' behavior on parent window + t_class -- method definitions, instance size, flags, etc. + + +1. C coding style. The source should pass most "warnings" of C compilers +(-Wall on linux, for instance; see the makefile.) Some informalities +are intentional, for instance the loose use of function prototypes (see +below) and uncast conversions from longer to shorter numerical formats. +The code doesn't respect "const" yet. + +1.1. Prefixes in structure elements. The names of structure elements always +have a K&R-style prefix, as in ((t_atom)x)->a_type, where the "a_" prefix +indicates "atom." This is intended to enhance readability (although the +convention arose from a limitation of early C compilers.) Common prefixes are +"w_" (word), "a_" (atom), "s_" (symbol), "ob_" (object), "te_" (text object), +"g_" (graphical object), and "gl_" (glist, a list of graphical objects). Also, +global symbols sometimes get prefixes, as in "s_float" (the symbol whose string +is "float). Typedefs are prefixed by "t_". Most _private_ structures, i.e., +structures whose definitions appear in a ".c" file, are prefixed by "x_". + +1.2. Function arguments. Many functions take as their first +argument a pointer named "x", which is a pointer to a structure suggested +by the function prefix; e.g., canvas_dirty(x, n) where "x" points to a canvas +(t_canvas *x). + +1.3. Function Prototypes. Functions which are used in at least two different +files (besides where they originate) are prototyped in the appropriate include +file. Functions which are provided in one file and used in one other are +prototyped right where they are used. This is just to keep the size of the +".h" files down for readability's sake. + +1.4. Whacko private terminology. Some terms are lifted from other historically +relevant programs, notably "ugen" (which is just a tilde object; see d_ugen.c.) + +1.5. Spacing. Tabs are 8 spaces; indentation is 4 spaces. Indenting +curly brackets are by themselves on their own lines, as in: + + if (x) + { + x = 0; + } + +Lines should fit within 80 spaces. + +2. Max patch-level compatibility. "Import" and "Export" functions are +provided which aspire to strict compatibility with 0.26 patches (ISPW version), +but which don't get anywhere close to that yet. Where possible, features +appearing on the Mac will comeday also be provided; for instance, the connect +message on the Mac offers segmented patch cords; these will devolve into +straight lines in Pd. Many, many UI objects in Opcode Max will not appear in +Pd, at least at first. + +3. Compatibility with Max 0.26 "externs", i.e., source-level compatibility. Pd +objects follow the style of 0.26 objects as closely as possible, making +exceptions in cases where the 0.26 model is clearly deficient. These are: + +3.1. Anything involving the MacIntosh "Handle" data type is changed to use +char * or void * instead. + +3.2. Pd passes true single-precision floating-point arguments to methods; +Max uses double. +Typedefs are provided: + t_floatarg, t_intarg for arguments passed by the message system + t_float, t_int for the "word" union (in atoms, for example.) + +3.3. Badly-named entities got name changes: + + w_long --> w_int (in the "union word" structure) + +3.4. Many library functions are renamed and have different arguments; +I hope to provide an include file to alias them when compiling Max externs. + +4. Function name prefixes. +Many function names have prefixes which indicate what "package" they belong +to. The exceptions are: + typedmess, vmess, getfn, gensym (m_class.c) + getbytes, freebytes, resizebytes (m_memory.c) + post, error, bug (s_print.c) +which are all frequently called and which don't fit into simple categories. +Important packages are: +(pd-gui:) pdgui -- everything +(pd:) pd -- functions common to all "pd" objects + obj -- fuctions common to all "patchable" objects ala Max + sys -- "system" level functions + binbuf -- functions manipulating binbufs + class -- functions manipulating classes + (other) -- functions common to the named Pd class + +5. Source file prefixes. +PD: +s system interface +m message system +g graphics stuff +d DSP objects +x control objects +z other + +PD-GUI: +t TK front end + |