**** 18.02.2005 - V000 19.10.2006 - V001 Siemens Sinamics motor controller ordered for motor control on PIC-specs. - second ideas 08.11.2006 - lookups checked against g_indep.dll where the lookup algorithms reside. 18.07.2007 - revision. Start new hardware design, using dsPIC 19.07.2007 - pic pinning toegevoegd voor midhub board rev 3. 20.07.2007 - display funkties toegevoegd in PIC2 (dsPIC) 25.07.2007 - Siemens motor controller programmed. 26.07.2007 - valve lookups added. 27.07.2007 - first programming session 28.07.2007 - update 04.08.2007 - update 05.08.2007 - update after reprogramming session for PIC1. 09.02.2020 - V002 start reconstruction after mouth driver failure midi channel : 14 (0-15) basisstemming sousafoon: 22 (Si b) frekwentie = 29.1352367133525Hz PIC1: [midi-hub board.] *********************** 2 analog outs: 1 for motor control (PWM) : mapping op midi controller 1 (wind) X17 - 2 1 used as motor on off switch : X17-3 (mapping op midi controller 66) 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: 0 - 47 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: so_valves.txt Bij ontvangst van een note off commando binnen het tessituurbereik (0-47), 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: 1 bit voor voetje (pulse output, with velo) (midi noot 48) - X16-6 pic pin 2 2 bits voor licht (midi noten 49-50) X16-1 en X16-2: pic pins 7 en 6 (ON/OFF) 1 bit voor logos display (midi noot 51) X16-3: pic pin 5 (ON/OFF) Note/ventiel mapping stuurbaar via controller: Controller 13: 0 = standard mapping (as implemented in GMT,2003) 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. Wind pressure lookups, via program change commands. (cfr. html so page on site) PIC2: DS-PIC tone generator *************************** We gebruiken twee outputs: PIC pinnen 26 en 24. Voor noten buiten het tessituurbereik (12-47) moeten beide outputs altijd NUL zijn. Wanneer controller 66 NUL is, mogen geen tonen gegenereerd worden. Bij note-off, moeten beide outputs eveneens NUL zijn. Te genereren midi noten: 0 - 47 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: amplitude begrenzing (max. bereik voor de velo's) Controller 18: Attack amplitude (kan ook op velo gemapt worden, wanneer ctrl 7 als volume controller werkt) Controller 20: tuning : 0 to + 50 cents - default must be 440Hz 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.). wave- symmetry (onafhankelijk van toonhoogte) Sys-ex programmeerbare lookups: noot: max.velo(amplitude): wave-symmetry: 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 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 16 (0-15) het lsb display toont de waarde ingesteld met controller 17 (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. ************************************************************************************ Technische hardware notas: - voedingsspanning bidirectionele elektromagneten ventielen: 24V - voedingsspanning displays: 24V - voedingsspanning analoge power op-amp:-17V/+17V symmetrisch. - voedingsspanning Logos display: 6V non stabilised. ************************************************************************************ Valve lookups: [as in the 2003 version of So] So valve combination lookup tables valves are code bit 0 = -1/2 valve, bit 1 = -1 valve, bit 2 = -2 valve. see document so_valves.txt lookups voor de program changes (after Kristof Lauwers): Prog.change 0: programmable mode with safe remapping of ranges 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 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.