****** 28.10.2008: Eerste redaktie van de PIC specs voor Heli 30.10.2008: Midihub specs. adapted to implemented hardware. This PIC does'nt leave any pin unused. 11.11.2008: eerste versie van de firmware geprogrammeerd. 15.11.2008: Eerste grondige tests na debug van de hardware. 16.11.2008: dsPIC blown up by accident 17.11.2008: new dsPIC programmed 26.11.2008: hardware & firmware check midi channel : 8 (0-15) basisstemming sousafoon: 39 (Mi b) frekwentie = 77.8Hz PIC1: [midi-hub board.] *********************** 2 analog outs: X17-2: modulation level external input (alternatief voor dsPIC sturing) 16.11.2008: This is now mapped in midi controller 8. TO DO: The PWM value should follow the velo byte for any note ON in the range 101 to 108 (corresponding to the 7 possible valve combinations. On note off, the output should be 0. BUG 26.12.2008: works only as on/off with ctrl 8. X17-3: lights controller PWM, mapped on midi note 127 BUG 26.12.2008: we cannot get it to work. The hardware is o.k. 6 bits (standard weidmueller outputs) ventielen: v1 (middelste ventiel): -1 halve toon (@X11, 2-3) v2 (rechterventiel) : -2 halve tonen (@X12, 2-3) v3 (linkerventiel) : -4 halve tonen (@X15, 2-3) - bidirectional. Note range: ventiel lookup: [empirical] dit is de default. (kontroller 13, value: 0) De lookup kan gewijzigd worden met kontroller 13 (zie verder) konnektor X11 2-3 X12 2-3 X15 2-3 pic pins 16 15 21 22 14 11 details are in: heli_valves.txt Bij ontvangst van een note off commando binnen het tessituurbereik, moeten alle uitgangen nul worden. Bij ontvangst van noten buiten de tessituur moeten alle uitgangen eveneens nul worden. Bij ontvangst van midi kontroller 123 (all notes off) eveneens. op experimenteerveld: PIC pin 23: Yellow LED array on mouthpiece: mapped on midi note 120 (Note On/ Note Off) BUG: to be done 8 bits voor logos display (decoding in hardware) BUG: to be done Note/ventiel mapping stuurbaar via controller: Controller 13: 0 = standard mapping all bits = 0 1 = teoretical map (according to Tuba 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 = 2t ventiel on if set (V3) 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 the 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. Display functions: ****************** 2 4-bit nibbles worden gebruikt voor de aansturing van twee grote 7-segment displays. De funktionaliteit van deze displays wordt ingesteld met controller 14: value 0: de displays tonen de gegenereerde midi noot (msb - lsb) - dit is de default instelling. value 1: de displays tonen de waarde aangegeven met controller 15 (0-99) value 2: het msb display toont de waarde ingesteld met controller 26 (0-15) het lsb display toont de waarde ingesteld met controller 27 (0-15) value 3: de displays zijn gedoofd. (beide nibbles, alle bits hoog) In de hardware pasten we twee BCD naar 7-segment decoders toe. (identisch met ) PIC2: DS-PIC tone generator *************************** We gebruiken twee hoofd-outputs: PIC pinnen 26 en 24. De op te wekken golfvorm moet driehoekig zijn. Voor noten buiten het tessituurbereik moeten beide outputs altijd NUL zijn. Bij note-off, moeten beide outputs eveneens NUL zijn. Te genereren midi noten: 20 - 70 [0-96] 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. Controller 7 : sound color controller (PWM on Optor) [may be a hardware bug] Controller 17: amplitude begrenzing (max. bereik voor de velo's) Controller 18: Attack time Controller 19: Release time Controller 20: tuning : 0 to + 50 cents - default must be 440Hz to be done (26.12.2008): controller 1: amount of injected wind noise 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 ctrl7. gedurende 100ms zou erg goed zijn.). optional: wave- symmetry (onafhankelijk van toonhoogte) ctrl 1: amount of added noise. PIC-pinning en gebruik: pin 2,3,4,5: DIP switch, in te lezen voor midi kanaal (0-15) bij cold start. pin 2 = MSB, pin 5 = LSB Voor kanaal b8 (de normale instelling) staan de switches: OFF ON ON ON (in de ON stand, wordt de PIC pin naar massa geschakeld) 26.12.2008: not yet implemented. pin 6,7 : not used pin 11 : MIDI output TXD voor debugging pin 12 : TTL MIDI input RXD pin 14 : Rode LED naar massa voor debugging & light show on start-up BUG: switches on/off with the notes... pin 15 : not used (was: slow PWM voor amplitude en enveloppe van de externe input, now on hub board) pin 16 : not used pin 17,18 : programming connector pin 22 : PWM3: amplitude en enveloppe van de interne generator pin 23 : nc pin 24 : PWM2: faze 2 van de generator pin 25 : nc pin 26 : PWM1: faze 1 van de generator De op te wekken golfvorm moet een driehoeksgolf zijn. De schakeling werd op een experimenteerboard gemonteerd. Zie schema voor alle schakeldetails. ************************************************************************************ Technische hardware notas: - voedingsspanning bidirectionele elektromagneten ventielen: 24V - voedingsspanning displays: 24V - voedingsspanning analoge power op-amp:-28V/+28V symmetrisch. ************************************************************************************ Valve lookups: Heli valve combination lookup tables valves are code bit 0 = -1/2 valve, bit 1 = -1 valve, bit 2 = -2 valve. see document heli_valves.txt