PIC Mapping for : [19.06.2005] for wiring details, refer to schematic on the website. [analoog aan Trump, Bourdonola, Piperola] PIC taakverdelingen zijn evenwel anders! PIC1: Note ON/Note OFF board PWM motor control sfz solenoids and controllers data-port: RB0-RB7 Port B van de PIC, alle bits geflipt: RB7 ==> D0 pic pin 28 RB6 ==> D1 pic pin 27 RB5 ==> D2 pic pin 26 RB4 ==> D3 pic pin 25 RB3 ==> D4 pic pin 24 RB2 ==> D5 pic pin 23 RB1 ==> D6 pic pin 22 RB0 ==> D7 pic pin 21 adressing strobe signals for the latches: Port C van de PIC: RC0 = Timer 1 output. Test LED op PIC board (zoals op het board) LED via 330 Ohm naar GND. pic pin 11 RC1 = A7, latch 7 notes 84-91 pic pin 12 RC2 = Motor PWM (0-5V out, inverted) pic pin 13 mapped on controller 7 (volume) [ scaling: for input value 100, motor frequency should equal 50Hz] RC3 = A8, latch 8 note 32, note 92-98 lights pic pin 14 RC4 = low bellow sfz magnet pic pin 15 (notes 36-59) RC5 = high bellow sfz magnet pic pin 16 (notes 60-91) Sfz Note Pulses on every note ON within range above, with its VELO value. sfz solenoid control (if enabled by the appropriate controller) repeated pulsing, should merely extend the pulse. pulse scaling: 4 - 64 ms Polarity depending on controller. Pulses also on reception of channel pressure commands. (cfr. midi implementation table) RC6 = nc - (TX) pic pin 17 RC7 = serial input for MIDI data pic pin 18 (zoals op alle andere boards) Port A van de PIC: RA0 = A1, latch 1 notes 36-43 pic pin 2 RA1 = A2, latch 2 notes 44-51 pic pin 3 RA2 = A3, latch 3 notes 52-59 pic pin 4 RA3 = A4, latch 4 notes 60-67 pic pin 5 RA4 = A5, latch 5 notes 68-75 pic pin 6 RA5 = A6, latch 6 notes 76-83 pic pin 7 GROUND: pic pin 19 pic pin 8 POSITIVE SUPPLY: pic pin 20 Software implementation: Channel = 1 (&H01) Note range: (note-on & note-off implemented): 31, 36-98 (note range 36-91, 92-98 not notes = lights and effects) notes out of the range should be rejected in the PIC software. The software should have an eigth byte array to store the contents of the latches: la(1) to la(8) On init, all strobe bits should be high and all notes switched to OFF. The note latches should be cleared. This should also happen on reception of an all-notes off command (176+ channel, 123, 0) : AllOff: FOR i = 1 to 8 la(i) = 1 RB = 0 la(i) = 0 ' 1 microsecond la(i) = 1 NEXT ************************************************************************************** PIC2: Pulse-board (Castagnets) 15- percussion devices, (notes 113-127, with velocity - no note off required) mapping: Notes 113-127 connected to weidmueller connector numbers 2-16: (pulse scaling, to be tested, tentative: 4ms - 24ms) All notes off should also be implemented here. ************************************************************************************** Volume controller: (PIC1) controller nr. 7 [176 + k, 7, data] channel 1 (counting from 0) The received value for this controller should be output as a repeated PWM signal on pin 13 (RC2) of the PIC. (Motor speed) For parameter value 0, the RC2 pin should be 0. (no PWM) For parameter value 127 ,RC2 should be 1. (no PWM) For Vox Humanola motor 0-10V dc control is used. (same controller as in Piperola). We use no buffering other than the power mosfet followed by an RC with time constant ca.10 seconds (100mF / 100k). Note that the PWM is inverted (since we use a Mosfet as buffer, operating as an inverter). Sforzando solenoids (bass=RC4): (notes 36 - 59), (trebble=RC5): (notes 60-91) Controller 10: 0 ===> NO sforzando 5 ===> velo sforzando using overpressure (solenoid at rest not activated) pulse length derived from velo on each reception of note on, the magnet should be activated 6 ===> velo sforzando using underpressure (solenoid at rest activated). pulse length derived from velo on each reception of note on, the magnet should be deactivated 9 ===> overpressure sfz., value derived from channel pressure message 10 ===> underpressure sfz., value derived from channel pressure message 16 ===> use solenoid as tremulant, frequency set with controller 11 Controller 11: tremolo speed (if controller 10 is set to 16) Frequency should be parameter value / 10. (this works for both sfz solenoids) Channel pressure: 208 + k, 1 databyte If this is received and controller 10, is set to 9 or 10, a pulse proportional to databyte should generated on RC4/RC5 if within the note range. The polarity depends on the value of controller 10: 9 or 10. The midi procedure should trap the velo value for notes on in the range 36-59 (for RC4) and 60-91 (for RC5). If the value of controller 10 is 5 or 6 set, this must generate a pulse on RC4. So: Ctrl 10 = 0 means no sforzando in use (RC4/ RC5 must be low) Ctrl 10 = 5 means sfz pulses derived from note-velo value (overpressure accents) Ctrl 10 = 6 means pulses derived from note-velo (underpressure accents) Ctrl 10 = 9 means sfz pulses derived from channel pressure value (overpressure accents) Ctrl 10 = 10 means pulses derived from channel pressure value (underpressure accents) Ctrl 10 = 16 means tremulant is active. This cancels all other modes. The tremulant frequency should now be set with controller 11.