****** 27.08.2007: first version - not yet ready 25.11.2007: Midi Hub board finalized and mounted. 27.11.2007: Valve data update 1 30.11.2007: PIC1 version 1 programmed 01.12.2007: PIC2 version 1 programmed 02.12.2007: PIC3 board finalized. Specs revized. 09.12.2007: bug reports made 22.12.2007: Updated. 30.10.2008: Revision of the hardware. Bug report. 01.11.2008: Sound hardware changed. Motor dropped. 09.11.2008: Bono ready. Modifications required in dsPIC firmware. 11.11.2008: dsPIC firmware updates. 20.09.2010: Midihub PIC: new firmware by gwr. 26.09.2010: Valveboard: new firmware by gwr. Now version 2.2 midi channel : 13 (0-15) basisstemming trombone: 34 (Si b) frekwentie = 58.2704734266Hz *************************** * PIC1: [midi-hub board.] * *************************** [Johannes Taelman version: functional until 19.09.2010]: 2 analog outs: 1 for motor control (PWM) : mapping op midi controller 1 (wind) X17 - 2 same coding as for 30.10.2008: Hardware disabled. 1 for later analog pwm expansion (windvalve) x-17-3 mapping op midi controller 2 09.12.07: Works as switch controller 66 (PIC1 mapping bug) repaired in the hardware such that it works. 6 bits (standard weidmueller outputs) 1 used as motor on off switch : X11-2 (mapping op midi controller 66) 09.12.07: does not work. Not mapped on lights neither 1 12V front lite - yellow : X11-3 mapping on note 84 4 lites : X12-2 mapping on note 85 - front lite X12-3 mapping on note 86 - back lite X15-2 mapping on note 87 - front left 4 yellow LED's X15-3 mapping on note 88 - front right 4 yellow LED's 30.10.2008: Bug: one of the LED strips seems not implemented!!! Solved in hardware. Pincode: 'bowi' 11.11.2008: This PIC needs an upgrade. Lites have to be remapped in the range 123-127. Otherwize there is an overlap with the dsPIC sound generator. 20.09.2010: Start coding of new firmware for this PIC. It seems it is now only used for lights... [ end Johannes Taelman Version] '--------------------------------------------------------------------------------------------------- [GWR version 20.09.2010:]--------------------------------------------------------------------------- Lites mapped on notes 120-127: X12 - RB0, RB1 (pic pins 21 and 22): LED strips over the trombone X15 - RC3, RC0 (pic pins 11 and 14): frontal LED's in groups of four. X11 - RC5, RC4 (pic pins 15 and 16): bright white LED spotlite X17 - RC1, RC2 (pic pins CCP2, CCP1) pwm outputs, pwm mapped on velo, not yet used but implemented in the firmware. ****************************************** * PIC2: [pulse/hold board, 10 outputs] * ****************************************** [VERSION 1.0: coded by Johannes Taelman]----------------------------------------------------------- Note/ventiel mapping stuurbaar via controller: Controller 13: 0 = standard mapping all bits = 0 (see lookup in Bono_valves.txt) 1 = teoretical map (according to Trombone courses) bit 0 set 2 = mapping table 3 bit 1 set 3 = mapping table 4 bit 0 and 1 set bit2 = if set, user combinations for valves are enabled if bit2 is set and all lower bits are 0 then: bit3 = 1/2t ventiel on if set (v1) bit4 = 1t ventiel on if set (V2) bit5 = 1 1/2t ventiel on if set (V3) bit6 = 2 1/2t ventiel on if set (V4) Note: if controller 13 value >= 3, note on commands should not have any effect on the valve bits, since in that case the user is supposed to send the valve combinations prior to sending the note-on command. Also, different valve combinations can be sent whilst a note is sounding, leading to coloring effects and extended techniques. Note-off commands however should always zero all bit outputs for the valves. Hardware wiring: Board pulse-hold version1 (same as ) X3 = valve OFF solenoids X4 = valve ON solenoids X3, pin 1 = left valve pull 1 tone down valve off X4, pin 6 = left valve push 1 tone down valve ON (-2) X3, pin 2 = 2nd left valve pull 1/2 tone down valve OFF X4, pin 7 = 2nd left valve push 1/2 tone down valve ON (-1) X3, pin 3 = 3th left valve pull 1 1/2 tone down valve OFF X4, pin 8 = 3th left valve push 1 1/2 tone down valve ON (-3) X3, pin 5 = right valve pull 2 1/2 tone down valve OFF X4, pin 9 = right valve push 2 1/2 tone down valve ON (-5) X3, pin 4 = n.c. X4, pin 10 = n.c. Note: X3, pin 4 disabled so that we can use that pin on the PIC for our real time in circuit debugger! TO DO: ****** controller 25: duration of the velo pulse applied to all outputs. Default setting: 64 pulse duration range: 0-127ms. 01.12.2007: [temporary set to a constant value of ca. 20ms) Note-off moet alle velo's onderbreken en de hold's resetten. 09.12.2007: Bits swapped! ctrl. 14 seems not working now. ctrl.25 neither. We decided to drop 14 and rather implement 25 for compatibility with . Program change for lookups not tested yet. (lack of lookups) BUG: solenoids have to be powered during notes! Note-hold has to be implemented. When a note using the same valve combination is requested, the solenoids should remain powered but no velo-pulse should be applied. Hold only on X3, pin 10: lite on/off mapped on note 89. 11.11.2008: No longer required to implement a hold only on x3, pin 10. This PIC still needs a revision. [END VERSION 1.0]---------------------------------------------------------------------------------------- VERSION 2.0:--------------------------------------------------------------------------------------------- 21.09.2010: Firmware for this PIC completely rewritten by gwr. Controller 13 implemented: low nibble steers the valves. Controller 25 implemented: pulse duration for the valve activation Controller 66 implemented (on/off) Controller 123 implemented (all notes off) Program change can be used to select different valve lookup tables Timeout implemented such that the solenoids do not get hot when there is nothing playing. Hardware wiring: Board pulse-hold version1 (same as ) X3 = valve OFF solenoids X4 = valve ON solenoids X3, pin 1 = left valve pull 1 tone down valve off pic pin4(Hold) and pic pin3(Velo) , RA2 - RA1 X4, pin 6 = left valve push 1 tone down valve ON pic pin24(Hold) and pic pin23(velo), RB3 - RB2 (-2) X3, pin 2 = 2nd left valve pull 1/2 tone down valve OFF pic pin2(Hold) and pic pin5(velo) , RA0 - RA3 X4, pin 7 = 2nd left valve push 1/2 tone down valve ON pic pin22(Hold) and pic pin21(velo), RB1 - RB0 (-1) X3, pin 3 = 3th left valve pull 1 1/2 tone down valve OFF pic pin6(Hold) and Pic pin7(velo) , RA4 - RA5 X4, pin 8 = 3th left valve push 1 1/2 tone down valve ON pic pin16(Hold) and pic pin15(velo), RC5 - RC4 (-3) X3, pin 5 = right valve pull 2 1/2 tone down valve OFF pic pin26(Hold) and pic pin25(velo), RB5 - RB4 X4, pin 9 = right valve push 2 1/2 tone down valve ON pic pin11(Hold) and pic pin12(velo), RC0 - RC1 (-5) X3, pin 4 = n.c. (pic pin 28 and 27) RB7 - RB6 : programmer pins. X4, pin 10 = n.c.(pic pin 13 and 14) RC2 - RC3 can be used for debugging. Valve lookups: Bono valve combination lookup tables valves are code bit 0 = -1/2 valve, bit 1 = -1 valve, bit 2 = -1 1/2 valve, bit 3 = - 2 1/2 valve. see document bono_valves.txt 23.09.2010: Version 2.1 26.09.2010: Version 2.2 Project source code in \Logoswebsite\instrum_gwr\bono\picworks ************************************************************************************************************* * PIC3: DS-PIC tone generator dsPIC30F3010 * ************************************************************************************************************* Firmware coding: Johannes Taelman Dit is fundamenteel dezelfde kode als ontwikkeld voor . We gebruiken twee outputs: PIC pinnen 26 en 24. Voor noten buiten het tessituurbereik moeten beide outputs altijd NUL zijn. Wanneer controller 66 NUL is, mogen geen tonen gegenereerd worden. (O.K. - implemented) Bij note-off, moeten beide outputs eveneens NUL zijn. 09.12.2007: tested o.k. 30.10.2008: Oktaaffout: Bono speelt een oktaaf hoger dan de gevraagde midi noot. De tessituur moet dan wel naar onder toe uitgebreid worden met een oktaaf. Naar boven mag ook, al klinkt het erg artificieel. Glitches wegwerken bij note on en note off. 11.11.2008: dsPIC reprogrammed. note release implemented: controller 19. de default opstartwaarde is goed. kliks bij het inschakelen van de noten iets verzacht door aanpassing van de faze in de generatie van de tonen. Oktaveringsfout weggewerkt. Glitches weggewerkt. Te genereren midi noten: 0 - 94 Reagerend op midi note on + velo/ note off Pitchbend: te implementeren met een bereik van +/- een halve toon (kwarttoon ook aanvaardbaar) noteer: status (224+k), lsb, msb signed!!! msb >= 64 is dus een verhoging van de frekwentie met msb - 64 msb <64 is een verlaging met ABS(msb-64) De pitchbend waarde moet gereset worden bij elke nieuwe noot of note off. De pitchbend moeten kunnen werken tijdens het genereren van een noot. Daarmee kunnen we immers vibrato, slides e.d.m. implementeren in de muziek. Controller 7 : volume control. (PWM on pin 22) This steers the integrating optor attenuator. 09.12.2007: after taking pin 22 instead of the original 23, this works. However, smoothness of curve leaves to be desired. (dit is nieuw tegenover ) Deze controller moet worden gebruikt voor het flatterzunge effekt en voor snelle amplitude modulatie van de toon. Controller 17: amplitude begrenzing - attack value (max. bereik voor de velo's) (dit was bij de volume controller, nr.7) 8.11.2008: dit werkt o.k. Controller 18: Attack duration: Lijkt niet te werken... 8.11.2008: rescaling is zeker nodig hier Controller 19: Release duration: de default opstartwaarde is goed. Het sturen van deze controller is dus geen strikte vereiste. Controller 20: tuning : 0 to + 50 cents - default must be 440Hz 09.12.2007: works. For 440Hz, the controller must be set to 5. Value 127 rises the pitch a quartertone. 08.11.2008: Works very well. For A=440, must be set to 0. Parameters: amplitude: gemapt op midi-velocity (de default scaling moet afnemen met stijgende toonhoogte, a rato van -6dB per oktaaf, een implementatie met +6dB boven de amplitude instelling van ctrl 17. gedurende 100ms zou erg goed zijn.).(Dit is op 11.11.2008 nog niet geimplementeerd!) Te doen: ruiskomponent toevoegen in de generator. (evt. te implementeren als ctrl 1) Display functions: ****************** 2 4-bit nibbles worden gebrukt voor de aansturing van twee 7-segment displays. 09.12.2007: displays always show the playing midi note value. No note playing displays FF 30.10.2008: Checked. This works o.k. 11.11.2008: this still works fine. Not implemented yet: (we may never do this...) Prog.change 120: p, legato Prog.change 121: mf, legato Prog.change 122: f-ff, legato Prog. change 123: p, sfz Prog.change 124: mf, sfz Prog. change 125: f, sfz Prog. change 126: for later expansion Prog. change 127: no lookups . For measurement and research. ******************************************************************************************** * Technische hardware notas: * * - voedingsspanning bidirectionele elektromagneten ventielen: +/-12V (not stabilized) * * - voedingsspanning displays: 5V (available from HUB board) * * - voedingsspanning analoge power op-amp:-28V/+28V symmetrisch. * ********************************************************************************************