todo... functions for standard env gets, like sample rate, clocktime, &c default knob value! Consistent header for generated files (with date, project/re-name, &c) YES build info.lua (needs instrument name in config) increment the build number YES name thing.device by instrument name in header.h, include a Master Table of vars, ranges, types... build directly into code project use maxRadius for boundaries on knobs maybe account for drop shadow on knob bounds output header.h files knobs YES buttons YES lamps YES meters YES faders jack isConnected YES audio in YES audio out YES cv in YES cv out YES specify knob numeric range linear or log numeric range YES normalize 0..1 usually YES addDecoration() to add something from parts library, but no name or functional. (actually need name, for placeholder, cable-point, &c) built-ins for usual types (hz, db, volts) (including musical note/midi note, if nearby) YES explicit xy coordinates allow duplicate knobs (control same parameter, generate legal output) YES get graphics to line up drive from separate XML file YES support cv-input trim knob support jbox.value_display YES add parts lists for folded front panel and folded back panel YES able to set name of the device YES print name of device on folded panel template YES express default routing and main ins/outs setStereoOuts(name1,name2) allow a silkscreen specified for use in the material (but still print out a reference image every time.) a GROUP property, to assign UI groupings YES separate out RackBuilder object from app that uses it. YES rb.addKnob, &c. YES rb.getMotherboardDef(), bit by bit. YES rb.doItAll(). Knob Default Value YES Select location for labeltape dots for trim knob. draw shaded area for rack-ears on back panels (or maybe all panels) tests maybe. mrm. Figure out a reasonable folder structure for this workflow. :/ YourSynthesizer/ OmRack/ buildIt.py Silkscreens/ *rackFrontOutlines.png <-- generated by buildIt *rackFrontFoldedOutlines.png *rackBackOutlines.png *rackBackFoldedOutlines.png rackFront.psd/png <-- used in GUI if present rackFrontFolded.psd/png <-- used in GUI if present rackBack.psd/png <-- used in GUI if present rackBackFolded.psd/png <-- used in GUI if present also: rackFront_shininess.psd/png <-- used if present, &c YourSynthe.xcodeproj GUI/ *resources/, Output/, <-- rendered by RED *info.lua *motherboard_def.lua *OmRack.h *Resources/English/texts.lua ----- Questions Batch: 1. SDK Secrecy Is it ok to discuss the nature of building Rack Extensions publically? A blog post describing the process or caveats? 2. Good Mac for development? Fello Devs -- I have a 2006 Mac Pro Tower. It... doesn't work for RED. But my late-2008 Macbook Pro works *great* for development, RED runs beautifully. But I want to get modern. Does a modern 13" Retina Mac or Macbook Air work ok with RED? I was worried about the Intel 4000HD graphics... Anyone use those? 3. Allowed on Folded Panels What's allowed on folded panels? No jacks or trim knobs. Required bypass & patch-browser, and cable-hole. Are knobs allowed? Meters? 4. Business Info Propellerhead, can you share any stats on Rack Extension Store visits, download numbers, conversion numbers, &c? 5. ReDesigner command-line? Can Render All be run from the command line? For a local build flow. ----- SDK features 2012.01.15 ideas Anything where the implementation is opaque and untestable, would be good to bring forward. In particular, things that are reported during the PH RE review process, but not visible during development. Not-writing silence: We can only implement this blindly. We can *hear* that silence comes out, inspect the code so that we think it takes the correct path, but not observe this behavior in the rack. Backwards-compatibility across versions: It would be useful to be able to have multiple versions of the same device in Recon at the same time, for A/B comparisons. Let Recon display or write the implementation sheet for a device (param names and ranges, & midi assignments). (Naturally, during development, I generate one, but Recon's view is definitive.) Audio Reset, developers have pointed out, it's unclear when this gets sent. Perhaps a button or menu item... ---- CHECKLIST * Does it look right, * Instantiate ** Is it in a mix track, hooked up playing stereo? * Set knobs & save ** Reload. has same sound as before? * Combine * Save Combinator.cmb ** Reload. has same sound as before? * Record * twiddle params and stuff ** Play back. captured? * Enable "record automation in note track" * Record * twiddle params and stuff ** Play back. captured? * Disconnect Left ** Did Right disconnect as well? (stereo pair) * Reconnect Left ** Did Right reconnect as well? * Select Instrument. Create an effect (DDL-1) ** Did effect insert between outputs and previous destination? * Select Instrument. Create Matrix sequencer ** Did CV Pitch and Gate get hooked up? * Set the tempo down to 1! ** Catches worst-case for audio buffers linke to tempo duration... * Set the tempo up to 500 ** coz you never know * CPU Load ** Suspicious spike from previous? * Copy and Paste device ** For oscillator, paste and see if still playing... * Duplicate device ** seems slightly different than paste... ---------------- COLLADA Always make triangles. for wbl3001, this command (2013-03-09): poly@omino-luxnet ~/Sites/src/RackExtensions: py Tools/RackColladaFixer.py ; cp Parts/junk/geometryJunk01.dae_fix Parts/Lamp_3k/geometries/Lamp_3k.dae width for shop page: 754 pixels wide picture image