<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><span style="font-family:monospace,monospace">Hi list!<br><br>I'm Zhang Shaoqian, a student from National University of Singapore, and of<br>course very excited about the GSoC 2019 opportunity. Above all, thanks all for<br>Purr Data. As a self-proclaimed musician I find it absolutely beautiful and<br>empowering, and by reading the source code I come to understand the tremendous<br>endeavors put into this. Thank you.<br><br>Now a bit more about GSoC. Under the name nerrons and with this email address, I<br>have a few very elementary modifications merged into master (!257, !260 and<br>!270) since January, the last one about our building system (which "humans<br>cannot reason about", according to Jonathan). I've been thinking about how to<br>port K12 mode since I have more experience in the frontend. During the past few<br>weeks I've read all the nw.js code, a portion of the legacy TCL code and the C<br>code, and spent some time with the K12 mode of pd-l2ork on Linux. Here's my<br>observations and how I roughly plan to tackle the problem. In case this isn't</span></div><div><span style="font-family:monospace,monospace">readable, here's a Google Docs link to the same thing: <br></span></div><div><span style="font-family:monospace,monospace"><a href="https://tinyurl.com/pdk12plan">https://tinyurl.com/pdk12plan</a><br></span></div><div dir="ltr"><br><span style="font-family:monospace,monospace"></span></div><div dir="ltr"><span style="font-family:monospace,monospace">- Make all k12 abstractions usable again:<br>  - Good news! (heavily) modifying C code doesn't seem necessary, since all k12<br>    abstractions are built with existing objects. We don't even need to add the <br></span></div><div dir="ltr"><span style="font-family:monospace,monospace">    gui_ functions in pdgui.js. Actually I got K12 patches working already, <br></span></div><div dir="ltr"><span style="font-family:monospace,monospace">    link at the end.<br>  - Put the patches in the "extra" folder in the installation directory. Need to<br>    modify the build system for that.<br>  - Get the pretty pics working.<br>    - Update respective pd files in l2ork_addons/K12 with the correct paths of<br>      the icon and the gop background image.<br>    - Seems like absolute path is needed for the [image] in abstractions to find<br>      correct resources, otherwise it will look under the current working<br>      directory. Need to find a way to generate absolute path just like the old<br>      @pd_extra.<br>    - Adjust the layout in the gop area, so that the background image doesn't<br>      cover up inlets, outlets and the border of the gop area. Currently it<br>      looks a bit off after simply updating the path; Need to either automate<br>      this or manually do it.<br>  - Index help files for k12 abstractions. If we decide to keep popups in purr's<br>    k12 mode (while l2ork forbids popup), make sure they show up when right<br>    clicking on the abstraction and clicking help.<br>- Maintain a list of k12 abstractions with correct order, to be used in the k12<br>  frame later. We probably need another json file for this.<br>- Change menu bar items:<br>  - In File, add "show k12 demos"<br>  - Hide complicated menus, keep only File, Edit and Windows (cuz mac requires<br>    the "windows" menu, if I'm not wrong)<br>    - Remove find-related entries in Edit, and similarly anything related to find<br>- Display tooltips on the inlets and outlets of k12 abstractions. Should be<br>  simple using JS hover events.<br>- Add a k12 frame: a <div> besides the canvas's <svg>. Can be structured in an<br>  HTML file and styled with CSS Grid. Things to take care of:<br>  - Handling geometry:<br>    - Set a different minimum height and width of patch windows so k12 frame<br>      doesn't get cropped<br>    - Make sure geometry-related functions acknowledge the k12 frame,<br>      e.g. zooming, optical zoom, etc. If we put the k12 frame into the <body><br>      of pd_canvas.html I think it won't be frustrating.<br>  - Layout of the k12 frame:<br>    - A button that switches on/off edit mode and changes pic when switching<br>      (icons/edit.png & icons/perform.png).<br>    - Two tabs of control/sound categories (icons/data.png, data_on.png,<br>      sound.png, sound_on.png).<br>    - A bunch of buttons of k12 abstractions from the current category, listed<br>      in a predefined order.<br>  - Make sure we have tooltips for everything.<br>  - Add keyboard shortcuts.<br>  - (Nice-to-have) Make a toggle that switches the frame on/off. "display:none;"<br>    might prove useful here.<br>- Add a hidden preset_hub to all k12 canvases, using negative coords and<br>  %hidden%.<br>  - In frontend, prevent the PH from being seen or selected in any way (just<br>    don't include it in the DOM instead of using "display:none;", I guess?)<br>  - Make sure demos have nice presets.<br>  - Do enough testing and make sure preset_hub works as intended. (This seems<br>    like stating the obvious, but I think it's quite important, given that kids<br>    might mess around)<br>- (Optional) Hide the console by default. Nw.js should have APIs for this.<br><br>Please kindly point out if I missed out anything. I would really appreciate it<br>if I can get feedback on this "proposal-of-proposal" and then I'll start writing<br>the proper proposal, hopefully getting accepted, of course :-) Also, I managed<br>to make one of the K12 demos working with the latest Purr Data. I messed up the<br>sequencer so it sounds experimental, the borders of the abstractions aren't<br>displaying elegantly, there are two sets of images, but it works. Google Drive</span></div><div dir="ltr"><span style="font-family:monospace,monospace">link: <a href="https://tinyurl.com/pdk12demo">https://tinyurl.com/pdk12demo</a><br><br>Looking forward to hearing from you!<br><br>Cheers<br>Shaoqian<br></span></div></div></div></div>