Difference between revisions of "ER-STIX"
Jump to navigation
Jump to search
Blwikiadmin (talk | contribs) |
Blwikiadmin (talk | contribs) |
||
(49 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | [[FILE:ER-STIX_Front-Rear_720PX.jpg]] | ||
+ | |||
== Features == | == Features == | ||
* Similar to [https://mutable-instruments.net/modules/branches/manual/ Mutable Instruments Branches] | * Similar to [https://mutable-instruments.net/modules/branches/manual/ Mutable Instruments Branches] | ||
** Dual Bernoulli Gate | ** Dual Bernoulli Gate | ||
− | * Differences vs | + | * Differences vs Branches |
** Only has 1 GATE input | ** Only has 1 GATE input | ||
** No push buttons | ** No push buttons | ||
+ | *** Uses Pots to control mode - more modes than Branches | ||
** 0-5V input/outputs | ** 0-5V input/outputs | ||
* Built on [[ER-PROTO-02]] | * Built on [[ER-PROTO-02]] | ||
* [[Arduino Pro Mini]] | * [[Arduino Pro Mini]] | ||
+ | * Protection on all external jacks with Schottky diode clamps | ||
+ | * 10-pin Eurorack power | ||
+ | ** Uses +12V only | ||
=== Operation === | === Operation === | ||
Line 15: | Line 21: | ||
* RV1 controls OUT 1 | * RV1 controls OUT 1 | ||
* RV2 controls OUT 2 | * RV2 controls OUT 2 | ||
+ | * RV3 is mode control 1 | ||
+ | * RV4 is mode control 2 | ||
=== Arduino Pro Mini === | === Arduino Pro Mini === | ||
* Works with ATMega168 (or 328) | * Works with ATMega168 (or 328) | ||
+ | * Program from FTDI | ||
[[FILE:ArdruinoProMini-EBAY_PART-720px.png]] | [[FILE:ArdruinoProMini-EBAY_PART-720px.png]] | ||
− | [[file: | + | === Arduino Pins === |
+ | |||
+ | [[file:ER-STIX-Arduino.PNG]] | ||
== Controls == | == Controls == | ||
Line 30: | Line 41: | ||
** Inserting J3 jack disables RV1 | ** Inserting J3 jack disables RV1 | ||
* RV2 - Probabilistic ratio for Output 2 | * RV2 - Probabilistic ratio for Output 2 | ||
+ | ** Center = 50-50, CCW = Out1A on 100%, CW = 0% on OUT1B | ||
+ | ** Inserting J3 jack disables RV1 | ||
+ | * RV3 - OUT 1 Mode | ||
+ | ** 7-12 o'clock = Normal Mode drives only OUT1A or OUT1B | ||
+ | ** 12-5 o'clock = Drives both OUT1A and OUT1B | ||
+ | * RV4 - OUT 2 Mode | ||
+ | ** 7-12 o'clock = Normal Mode drives only OU21A or OUT2B | ||
+ | ** 12-5 o'clock = Drives both OUT2A and OUT2B | ||
== Jacks == | == Jacks == | ||
Line 37: | Line 56: | ||
* 0.6V threshold GATE input | * 0.6V threshold GATE input | ||
− | === J2 - Random % === | + | === J2 - OUT1 Random % === |
* 0-5V control input | * 0-5V control input | ||
Line 62: | Line 81: | ||
* Gate output 2 | * Gate output 2 | ||
* 0-5V digital output | * 0-5V digital output | ||
+ | |||
+ | == Schematic == | ||
+ | |||
+ | * [https://github.com/land-boards/lb-boards/blob/master/SYNTHS/ER-PROTO-02_SET/ER-PROTO-02_STIX/STIX_Schematic.pdf Schematic] | ||
== Software == | == Software == | ||
* Arduino IDE | * Arduino IDE | ||
− | * [https://github.com/land-boards/lb-Arduino-Code/blob/master/LBCards/SYNTHS/ER_STIX/ERSTIX_POTS_CHECK/ERSTIX_POTS_CHECK.ino Pot/GATEs Test] | + | |
− | ** Reads pots, write values to serial | + | === Pot/GATEs Test === |
− | + | ||
− | * [https://github.com/land-boards/lb-Arduino-Code/blob/master/LBCards/SYNTHS/ER_STIX/ERSTIX_V1/ERSTIX_V1.ino Simplest Version 1] | + | * [https://github.com/land-boards/lb-Arduino-Code/blob/master/LBCards/SYNTHS/ER_STIX/ERSTIX_POTS_CHECK/ERSTIX_POTS_CHECK.ino Pot/GATEs Test code GitHub] |
− | + | * Used for testing the hardware works | |
− | * [https://github.com/land-boards/lb-Arduino-Code/blob/master/LBCards/SYNTHS/ER_STIX/ERSTIX_V2/ERSTIX_V2.ino Still pretty simple - Version 2] | + | * Reads (4) pots and prints values to monitor, write values to serial |
− | + | * Toggles GATE outs - one at a time | |
− | + | * Tests RV1/J2 loopback | |
+ | |||
+ | === Simplest Version 1 === | ||
+ | |||
+ | * [https://github.com/land-boards/lb-Arduino-Code/blob/master/LBCards/SYNTHS/ER_STIX/ERSTIX_V1/ERSTIX_V1.ino Simplest Version 1 code GitHub] | ||
+ | * 2 pots, one for OUT1A/B, other for OUT2A/2B | ||
+ | |||
+ | === Still pretty simple - Version 2 === | ||
+ | |||
+ | * [https://github.com/land-boards/lb-Arduino-Code/blob/master/LBCards/SYNTHS/ER_STIX/ERSTIX_V2/ERSTIX_V2.ino Still pretty simple - Version 2 code GitHub] | ||
+ | * Adds (2) mode control knobs | ||
+ | * 7 o-clock = 12 o'clock = Normal mode | ||
* 12 o-clock - 5 o=clock = Send Outputs on both OUTxA and OUTxB | * 12 o-clock - 5 o=clock = Send Outputs on both OUTxA and OUTxB | ||
+ | * Measured GATE in to OUT latency < 20uS using digitalRead and digitalWrite | ||
+ | * Improved by [https://docs.arduino.cc/hacking/software/PortManipulation accessing the ports directly] | ||
+ | ** Measured at 2 uS | ||
+ | <pre> | ||
+ | Sketch uses 1990 bytes (13%) of program storage space. Maximum is 14336 bytes. | ||
+ | Global variables use 13 bytes (1%) of dynamic memory, leaving 1011 bytes for local variables. Maximum is 1024 bytes. | ||
+ | </pre> | ||
+ | |||
+ | === More modes - Version 3 === | ||
+ | |||
+ | * [https://github.com/land-boards/lb-Arduino-Code/blob/master/LBCards/SYNTHS/ER_STIX/ERSTIX_V3/ERSTIX_V3.ino 8 modes - Version 3 code GitHub] | ||
+ | * Modes set by RV3, RV4 | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Mode | ||
+ | ! RV3 | ||
+ | ! Dependency | ||
+ | ! RV4 | ||
+ | ! Operation | ||
+ | |- | ||
+ | | 0 | ||
+ | | 7-12 | ||
+ | | OUT1/OUT2 independent | ||
+ | | 7-9 | ||
+ | | Normal, coin toss output one of OUTxA, OUTxB | ||
+ | RV1 controls p() getting OUT1A vs OUT1B | ||
+ | RV2 controls p() getting OUT2A vs OUT2B | ||
+ | |- | ||
+ | | 1 | ||
+ | | 7-12 | ||
+ | | OUT1/OUT2 independent | ||
+ | | 9-12 | ||
+ | | Coin toss determines OUTxA, OUTxB independently | ||
+ | Toss the coin for each output independetly | ||
+ | RV1 controls p() OUT1A and p() OUT1B independently | ||
+ | RV2 controls p() OUT2A and p() OUT2B independently | ||
+ | |- | ||
+ | | 2 | ||
+ | | 7-12 | ||
+ | | OUT1/OUT2 independent | ||
+ | | 12-3 | ||
+ | | Ping pong A/B | ||
+ | RV! controls p() of switching to OUT1A > OUT1B, etc | ||
+ | RV2 controls p() of switching to OUT2A > OUT2B, etc | ||
+ | |- | ||
+ | | 3 | ||
+ | | 7-12 | ||
+ | | OUT1/OUT2 independent | ||
+ | | 3-5 | ||
+ | | Coin toss both on | ||
+ | RV1 controls p() of driving OUT1A and OUT1B | ||
+ | RV2 controls p() of driving OUT2A and OUT2B | ||
+ | |- | ||
+ | | 4 | ||
+ | | 12-5 | ||
+ | | OUT1/OUT2 dependent | ||
+ | | 7-9 | ||
+ | | Normal, coin toss one of OUT1A, OUT1B, OUT2A, OUT2B | ||
+ | OUT is randomly selected | ||
+ | RV1 controls p() sending OUTxY | ||
+ | RV2 is not used | ||
+ | |- | ||
+ | | 5 | ||
+ | | 12-5 | ||
+ | | OUT1/OUT2 dependent | ||
+ | | 9-12 | ||
+ | | Coin toss determines OUTxA, OUTxB dependently, drives both OUTxA/OUTxB | ||
+ | RV1 is p() of whether any gate goes out | ||
+ | RV2 us p() or selecting OUT1 vs OUT2 | ||
+ | |- | ||
+ | | 6 | ||
+ | | 12-5 | ||
+ | | OUT1/OUT2 dependent | ||
+ | | 12-3 | ||
+ | | Sequential OUT1A, OUT1B, OUT2A, OUT2B | ||
+ | RV!, RV2 control whether to step or not | ||
+ | CW on both stops stepping | ||
+ | CCW always step | ||
+ | |- | ||
+ | | 7 | ||
+ | | 12-5 | ||
+ | | OUT1/OUT2 dependent | ||
+ | | 3-5 | ||
+ | | All on | ||
+ | RV1 controls p() of driving OUT1A/OUT1B | ||
+ | RV2 controls p() of driving OUT2A/OUT2B | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | == Build == | ||
+ | |||
+ | * Built on [[ER-PROTO-02]] | ||
+ | |||
+ | [[FILE:ER-PROTO-02-DB_REAR_PWR.png]] | ||
+ | |||
+ | === Build Pictures === | ||
+ | |||
+ | [[file:ER-STIX_P1080922-720px.jpg]] | ||
+ | |||
+ | [[file:ER-STIX_P1080921_720PX.jpg]] | ||
+ | |||
+ | * Covered RV5, RV6 holes with black duct tape | ||
+ | * Labels are White on Black P-Touch labels | ||
+ | |||
+ | === Nets === | ||
+ | |||
+ | <pre> | ||
+ | (nets | ||
+ | (net (code "1") (name "+5V") | ||
+ | (node (ref "D3") (pin "1") (pinfunction "K") (pintype "passive")) | ||
+ | (node (ref "D5") (pin "1") (pinfunction "K") (pintype "passive")) | ||
+ | (node (ref "J28") (pin "1") (pinfunction "VCC") (pintype "power_in")) | ||
+ | (node (ref "RVX1") (pin "1") (pinfunction "1") (pintype "passive")) | ||
+ | (node (ref "RVX2") (pin "1") (pinfunction "1") (pintype "passive")) | ||
+ | (node (ref "RVX3") (pin "1") (pinfunction "1") (pintype "passive")) | ||
+ | (node (ref "RVX4") (pin "1") (pinfunction "1") (pintype "passive")) | ||
+ | (node (ref "U1") (pin "22") (pinfunction "Vcc2") (pintype "unspecified"))) | ||
+ | (net (code "2") (name "+12V") | ||
+ | (node (ref "C1") (pin "1") (pintype "passive")) | ||
+ | (node (ref "D1") (pin "1") (pinfunction "K") (pintype "passive")) | ||
+ | (node (ref "U1") (pin "19") (pinfunction "RAW") (pintype "unspecified"))) | ||
+ | (net (code "3") (name "GATE") | ||
+ | (node (ref "D2") (pin "1") (pinfunction "K") (pintype "passive")) | ||
+ | (node (ref "D5") (pin "2") (pinfunction "A") (pintype "passive")) | ||
+ | (node (ref "J29") (pin "10") (pinfunction "J1_T") (pintype "passive")) | ||
+ | (node (ref "Q1") (pin "2") (pinfunction "B") (pintype "passive")) | ||
+ | (node (ref "RX11") (pin "1") (pintype "passive"))) | ||
+ | (net (code "4") (name "GND") | ||
+ | (node (ref "C1") (pin "2") (pintype "passive")) | ||
+ | (node (ref "D11") (pin "2") (pinfunction "A") (pintype "passive")) | ||
+ | (node (ref "D13") (pin "2") (pinfunction "A") (pintype "passive")) | ||
+ | (node (ref "D2") (pin "2") (pinfunction "A") (pintype "passive")) | ||
+ | (node (ref "D4") (pin "2") (pinfunction "A") (pintype "passive")) | ||
+ | (node (ref "D7") (pin "2") (pinfunction "A") (pintype "passive")) | ||
+ | (node (ref "D9") (pin "2") (pinfunction "A") (pintype "passive")) | ||
+ | (node (ref "J28") (pin "20") (pinfunction "GND") (pintype "power_in")) | ||
+ | (node (ref "J29") (pin "1") (pinfunction "GND") (pintype "power_in")) | ||
+ | (node (ref "J29") (pin "15") (pinfunction "GND") (pintype "power_in")) | ||
+ | (node (ref "J29") (pin "16") (pinfunction "GND") (pintype "power_in")) | ||
+ | (node (ref "J29") (pin "2") (pinfunction "GND") (pintype "power_in")) | ||
+ | (node (ref "J9") (pin "3") (pinfunction "Pin_3") (pintype "passive")) | ||
+ | (node (ref "J9") (pin "4") (pinfunction "Pin_4") (pintype "passive")) | ||
+ | (node (ref "J9") (pin "5") (pinfunction "Pin_5") (pintype "passive")) | ||
+ | (node (ref "J9") (pin "6") (pinfunction "Pin_6") (pintype "passive")) | ||
+ | (node (ref "J9") (pin "7") (pinfunction "Pin_7") (pintype "passive")) | ||
+ | (node (ref "J9") (pin "8") (pinfunction "Pin_8") (pintype "passive")) | ||
+ | (node (ref "JX1") (pin "S") (pintype "passive")) | ||
+ | (node (ref "JX2") (pin "S") (pintype "passive")) | ||
+ | (node (ref "JX3") (pin "S") (pintype "passive")) | ||
+ | (node (ref "JX4") (pin "S") (pintype "passive")) | ||
+ | (node (ref "JX5") (pin "S") (pintype "passive")) | ||
+ | (node (ref "JX6") (pin "S") (pintype "passive")) | ||
+ | (node (ref "Q1") (pin "1") (pinfunction "E") (pintype "passive")) | ||
+ | (node (ref "RVX1") (pin "3") (pinfunction "3") (pintype "passive")) | ||
+ | (node (ref "RVX2") (pin "3") (pinfunction "3") (pintype "passive")) | ||
+ | (node (ref "RVX3") (pin "3") (pinfunction "3") (pintype "passive")) | ||
+ | (node (ref "RVX4") (pin "3") (pinfunction "3") (pintype "passive")) | ||
+ | (node (ref "U1") (pin "10") (pinfunction "GND") (pintype "unspecified")) | ||
+ | (node (ref "U1") (pin "20") (pinfunction "GND3") (pintype "unspecified"))) | ||
+ | (net (code "5") (name "IN1") | ||
+ | (node (ref "Q1") (pin "3") (pinfunction "C") (pintype "passive")) | ||
+ | (node (ref "U1") (pin "12") (pinfunction "D3") (pintype "bidirectional"))) | ||
+ | (net (code "6") (name "LED1A") | ||
+ | (node (ref "J28") (pin "12") (pinfunction "POT5_2_W") (pintype "passive")) | ||
+ | (node (ref "LED1") (pin "1") (pinfunction "KA") (pintype "input")) | ||
+ | (node (ref "U1") (pin "30") (pinfunction "D10") (pintype "bidirectional"))) | ||
+ | (net (code "7") (name "LED1B") | ||
+ | (node (ref "J28") (pin "11") (pinfunction "POT5_1_CW") (pintype "passive")) | ||
+ | (node (ref "RX5") (pin "1") (pintype "passive")) | ||
+ | (node (ref "U1") (pin "18") (pinfunction "D9") (pintype "bidirectional"))) | ||
+ | (net (code "8") (name "LED2A") | ||
+ | (node (ref "J28") (pin "3") (pinfunction "POT6_2_W") (pintype "passive")) | ||
+ | (node (ref "LED2") (pin "1") (pinfunction "KA") (pintype "input")) | ||
+ | (node (ref "U1") (pin "13") (pinfunction "D4") (pintype "bidirectional"))) | ||
+ | (net (code "9") (name "LED2B") | ||
+ | (node (ref "J28") (pin "2") (pinfunction "POT6_1_CW") (pintype "passive")) | ||
+ | (node (ref "RX6") (pin "1") (pintype "passive")) | ||
+ | (node (ref "U1") (pin "14") (pinfunction "D5") (pintype "bidirectional"))) | ||
+ | (net (code "10") (name "MODE1") | ||
+ | (node (ref "J28") (pin "15") (pinfunction "POT3_2_W") (pintype "passive")) | ||
+ | (node (ref "RX3") (pin "1") (pintype "passive")) | ||
+ | (node (ref "U1") (pin "26") (pinfunction "A0") (pintype "bidirectional"))) | ||
+ | (net (code "11") (name "MODE2") | ||
+ | (node (ref "J28") (pin "6") (pinfunction "POT4_2_W") (pintype "passive")) | ||
+ | (node (ref "RX4") (pin "1") (pintype "passive")) | ||
+ | (node (ref "U1") (pin "23") (pinfunction "A3") (pintype "bidirectional"))) | ||
+ | (net (code "12") (name "NORM") | ||
+ | (node (ref "J29") (pin "9") (pinfunction "J1_R_N") (pintype "passive")) | ||
+ | (node (ref "RX12") (pin "1") (pintype "passive")) | ||
+ | (node (ref "U1") (pin "16") (pinfunction "D7") (pintype "bidirectional"))) | ||
+ | (net (code "13") (name "Net-(D1-Pad2)") | ||
+ | (node (ref "D1") (pin "2") (pinfunction "A") (pintype "passive")) | ||
+ | (node (ref "R1") (pin "1") (pintype "passive"))) | ||
+ | (net (code "14") (name "Net-(D10-Pad1)") | ||
+ | (node (ref "D10") (pin "1") (pinfunction "K") (pintype "passive")) | ||
+ | (node (ref "D12") (pin "1") (pinfunction "K") (pintype "passive")) | ||
+ | (node (ref "D6") (pin "1") (pinfunction "K") (pintype "passive")) | ||
+ | (node (ref "D8") (pin "1") (pinfunction "K") (pintype "passive"))) | ||
+ | (net (code "15") (name "Net-(J9-Pad9)") | ||
+ | (node (ref "J9") (pin "9") (pinfunction "Pin_9") (pintype "passive")) | ||
+ | (node (ref "R1") (pin "2") (pintype "passive"))) | ||
+ | (net (code "16") (name "Net-(JX1-PadT)") | ||
+ | (node (ref "JX1") (pin "T") (pintype "passive")) | ||
+ | (node (ref "RX11") (pin "2") (pintype "passive"))) | ||
+ | (net (code "17") (name "Net-(JX1-PadTN)") | ||
+ | (node (ref "JX1") (pin "TN") (pintype "passive")) | ||
+ | (node (ref "RX12") (pin "2") (pintype "passive"))) | ||
+ | (net (code "18") (name "Net-(JX2-PadT)") | ||
+ | (node (ref "JX2") (pin "T") (pintype "passive")) | ||
+ | (node (ref "RX13") (pin "2") (pintype "passive"))) | ||
+ | (net (code "19") (name "Net-(JX2-PadTN)") | ||
+ | (node (ref "JX2") (pin "TN") (pintype "passive")) | ||
+ | (node (ref "RX14") (pin "2") (pintype "passive"))) | ||
+ | (net (code "20") (name "Net-(JX3-PadT)") | ||
+ | (node (ref "JX3") (pin "T") (pintype "passive")) | ||
+ | (node (ref "RX9") (pin "1") (pintype "passive"))) | ||
+ | (net (code "21") (name "Net-(JX4-PadT)") | ||
+ | (node (ref "JX4") (pin "T") (pintype "passive")) | ||
+ | (node (ref "RX15") (pin "1") (pintype "passive"))) | ||
+ | (net (code "22") (name "Net-(JX5-PadT)") | ||
+ | (node (ref "JX5") (pin "T") (pintype "passive")) | ||
+ | (node (ref "RX7") (pin "1") (pintype "passive"))) | ||
+ | (net (code "23") (name "Net-(JX6-PadT)") | ||
+ | (node (ref "JX6") (pin "T") (pintype "passive")) | ||
+ | (node (ref "RX17") (pin "1") (pintype "passive"))) | ||
+ | (net (code "24") (name "Net-(LED1-Pad2)") | ||
+ | (node (ref "LED1") (pin "2") (pinfunction "AK") (pintype "input")) | ||
+ | (node (ref "RX5") (pin "2") (pintype "passive"))) | ||
+ | (net (code "25") (name "Net-(LED2-Pad2)") | ||
+ | (node (ref "LED2") (pin "2") (pinfunction "AK") (pintype "input")) | ||
+ | (node (ref "RX6") (pin "2") (pintype "passive"))) | ||
+ | (net (code "26") (name "Net-(RVX1-Pad2)") | ||
+ | (node (ref "RVX1") (pin "2") (pinfunction "2") (pintype "passive")) | ||
+ | (node (ref "RX14") (pin "1") (pintype "passive"))) | ||
+ | (net (code "27") (name "Net-(RVX2-Pad2)") | ||
+ | (node (ref "RVX2") (pin "2") (pinfunction "2") (pintype "passive")) | ||
+ | (node (ref "RX2") (pin "2") (pintype "passive"))) | ||
+ | (net (code "28") (name "Net-(RVX3-Pad2)") | ||
+ | (node (ref "RVX3") (pin "2") (pinfunction "2") (pintype "passive")) | ||
+ | (node (ref "RX3") (pin "2") (pintype "passive"))) | ||
+ | (net (code "29") (name "Net-(RVX4-Pad2)") | ||
+ | (node (ref "RVX4") (pin "2") (pinfunction "2") (pintype "passive")) | ||
+ | (node (ref "RX4") (pin "2") (pintype "passive"))) | ||
+ | (net (code "30") (name "OUT1A") | ||
+ | (node (ref "D6") (pin "2") (pinfunction "A") (pintype "passive")) | ||
+ | (node (ref "D7") (pin "1") (pinfunction "K") (pintype "passive")) | ||
+ | (node (ref "J29") (pin "12") (pinfunction "J3_T") (pintype "passive")) | ||
+ | (node (ref "RX9") (pin "2") (pintype "passive")) | ||
+ | (node (ref "U1") (pin "29") (pinfunction "D11") (pintype "bidirectional"))) | ||
+ | (net (code "31") (name "OUT1B") | ||
+ | (node (ref "D8") (pin "2") (pinfunction "A") (pintype "passive")) | ||
+ | (node (ref "D9") (pin "1") (pinfunction "K") (pintype "passive")) | ||
+ | (node (ref "J29") (pin "6") (pinfunction "J4_T") (pintype "passive")) | ||
+ | (node (ref "RX15") (pin "2") (pintype "passive")) | ||
+ | (node (ref "U1") (pin "17") (pinfunction "D8") (pintype "bidirectional"))) | ||
+ | (net (code "32") (name "OUT2A") | ||
+ | (node (ref "D10") (pin "2") (pinfunction "A") (pintype "passive")) | ||
+ | (node (ref "D11") (pin "1") (pinfunction "K") (pintype "passive")) | ||
+ | (node (ref "J29") (pin "14") (pinfunction "J5_T") (pintype "passive")) | ||
+ | (node (ref "RX7") (pin "2") (pintype "passive")) | ||
+ | (node (ref "U1") (pin "28") (pinfunction "D12") (pintype "input"))) | ||
+ | (net (code "33") (name "OUT2B") | ||
+ | (node (ref "D12") (pin "2") (pinfunction "A") (pintype "passive")) | ||
+ | (node (ref "D13") (pin "1") (pinfunction "K") (pintype "passive")) | ||
+ | (node (ref "J29") (pin "8") (pinfunction "J6_T") (pintype "passive")) | ||
+ | (node (ref "RX17") (pin "2") (pintype "passive")) | ||
+ | (node (ref "U1") (pin "15") (pinfunction "D6") (pintype "bidirectional"))) | ||
+ | (net (code "34") (name "R1") | ||
+ | (node (ref "D3") (pin "2") (pinfunction "A") (pintype "passive")) | ||
+ | (node (ref "D4") (pin "1") (pinfunction "K") (pintype "passive")) | ||
+ | (node (ref "J28") (pin "18") (pinfunction "POT1_2_W") (pintype "passive")) | ||
+ | (node (ref "J29") (pin "4") (pinfunction "J2_T") (pintype "passive")) | ||
+ | (node (ref "RX13") (pin "1") (pintype "passive")) | ||
+ | (node (ref "U1") (pin "25") (pinfunction "A1") (pintype "bidirectional"))) | ||
+ | (net (code "35") (name "R2") | ||
+ | (node (ref "J28") (pin "9") (pinfunction "POT2_2_W") (pintype "passive")) | ||
+ | (node (ref "RX2") (pin "1") (pintype "passive")) | ||
+ | (node (ref "U1") (pin "24") (pinfunction "A2") (pintype "bidirectional"))) | ||
+ | </pre> | ||
== Parts List == | == Parts List == | ||
− | + | ||
+ | == Daughtercard === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 126: | Line 440: | ||
| ARDUINO PRO MINI | | ARDUINO PRO MINI | ||
|- | |- | ||
− | | | + | |} |
− | | | + | |
− | + | === Controls Card === | |
− | + | ||
+ | {| class="wikitable" | ||
+ | ! Find | ||
+ | ! Qty | ||
+ | ! Ref Des | ||
+ | ! Part Number | ||
|- | |- | ||
| 11 | | 11 | ||
− | | | + | | 8 |
− | | RX2, RX7, RX9, RX15, RX17 | + | | RX2-4, RX7, RX9, RX15, RX17 |
| 1K | | 1K | ||
|- | |- | ||
| 12 | | 12 | ||
− | | | + | | 4 |
− | | RVX1 | + | | RVX1-RVX4 |
| 100K | | 100K | ||
|- | |- |
Latest revision as of 23:43, 9 March 2023
Features
- Similar to Mutable Instruments Branches
- Dual Bernoulli Gate
- Differences vs Branches
- Only has 1 GATE input
- No push buttons
- Uses Pots to control mode - more modes than Branches
- 0-5V input/outputs
- Built on ER-PROTO-02
- Arduino Pro Mini
- Protection on all external jacks with Schottky diode clamps
- 10-pin Eurorack power
- Uses +12V only
Operation
- Receives single Gate on J1
- RV1 controls OUT 1
- RV2 controls OUT 2
- RV3 is mode control 1
- RV4 is mode control 2
Arduino Pro Mini
- Works with ATMega168 (or 328)
- Program from FTDI
Arduino Pins
Controls
- RV1 - Probabilistic ratio for Output 1
- Center = 50-50, CCW = Out1A on 100%, CW = 0% on OUT1B
- Inserting J3 jack disables RV1
- RV2 - Probabilistic ratio for Output 2
- Center = 50-50, CCW = Out1A on 100%, CW = 0% on OUT1B
- Inserting J3 jack disables RV1
- RV3 - OUT 1 Mode
- 7-12 o'clock = Normal Mode drives only OUT1A or OUT1B
- 12-5 o'clock = Drives both OUT1A and OUT1B
- RV4 - OUT 2 Mode
- 7-12 o'clock = Normal Mode drives only OU21A or OUT2B
- 12-5 o'clock = Drives both OUT2A and OUT2B
Jacks
J1 - Gate
- 0.6V threshold GATE input
J2 - OUT1 Random %
- 0-5V control input
- Inserting jack disables RV1
- 0V = 100% on OUT1A, 2.5V = 50% on OUT1A/OUT1B, 5V = 100% on OUT1B
J3 - Out1A
- Gate output 1
- 0-5V digital output
J4 - Out1B
- Gate output 1
- 0-5V digital output
J5 - Out2A
- Gate output 2
- 0-5V digital output
J6 - Out2B
- Gate output 2
- 0-5V digital output
Schematic
Software
- Arduino IDE
Pot/GATEs Test
- Pot/GATEs Test code GitHub
- Used for testing the hardware works
- Reads (4) pots and prints values to monitor, write values to serial
- Toggles GATE outs - one at a time
- Tests RV1/J2 loopback
Simplest Version 1
- Simplest Version 1 code GitHub
- 2 pots, one for OUT1A/B, other for OUT2A/2B
Still pretty simple - Version 2
- Still pretty simple - Version 2 code GitHub
- Adds (2) mode control knobs
- 7 o-clock = 12 o'clock = Normal mode
- 12 o-clock - 5 o=clock = Send Outputs on both OUTxA and OUTxB
- Measured GATE in to OUT latency < 20uS using digitalRead and digitalWrite
- Improved by accessing the ports directly
- Measured at 2 uS
Sketch uses 1990 bytes (13%) of program storage space. Maximum is 14336 bytes. Global variables use 13 bytes (1%) of dynamic memory, leaving 1011 bytes for local variables. Maximum is 1024 bytes.
More modes - Version 3
- 8 modes - Version 3 code GitHub
- Modes set by RV3, RV4
Mode | RV3 | Dependency | RV4 | Operation |
---|---|---|---|---|
0 | 7-12 | OUT1/OUT2 independent | 7-9 | Normal, coin toss output one of OUTxA, OUTxB
RV1 controls p() getting OUT1A vs OUT1B RV2 controls p() getting OUT2A vs OUT2B |
1 | 7-12 | OUT1/OUT2 independent | 9-12 | Coin toss determines OUTxA, OUTxB independently
Toss the coin for each output independetly RV1 controls p() OUT1A and p() OUT1B independently RV2 controls p() OUT2A and p() OUT2B independently |
2 | 7-12 | OUT1/OUT2 independent | 12-3 | Ping pong A/B
RV! controls p() of switching to OUT1A > OUT1B, etc RV2 controls p() of switching to OUT2A > OUT2B, etc |
3 | 7-12 | OUT1/OUT2 independent | 3-5 | Coin toss both on
RV1 controls p() of driving OUT1A and OUT1B RV2 controls p() of driving OUT2A and OUT2B |
4 | 12-5 | OUT1/OUT2 dependent | 7-9 | Normal, coin toss one of OUT1A, OUT1B, OUT2A, OUT2B
OUT is randomly selected RV1 controls p() sending OUTxY RV2 is not used |
5 | 12-5 | OUT1/OUT2 dependent | 9-12 | Coin toss determines OUTxA, OUTxB dependently, drives both OUTxA/OUTxB
RV1 is p() of whether any gate goes out RV2 us p() or selecting OUT1 vs OUT2 |
6 | 12-5 | OUT1/OUT2 dependent | 12-3 | Sequential OUT1A, OUT1B, OUT2A, OUT2B
RV!, RV2 control whether to step or not CW on both stops stepping CCW always step |
7 | 12-5 | OUT1/OUT2 dependent | 3-5 | All on
RV1 controls p() of driving OUT1A/OUT1B RV2 controls p() of driving OUT2A/OUT2B |
Build
- Built on ER-PROTO-02
Build Pictures
- Covered RV5, RV6 holes with black duct tape
- Labels are White on Black P-Touch labels
Nets
(nets (net (code "1") (name "+5V") (node (ref "D3") (pin "1") (pinfunction "K") (pintype "passive")) (node (ref "D5") (pin "1") (pinfunction "K") (pintype "passive")) (node (ref "J28") (pin "1") (pinfunction "VCC") (pintype "power_in")) (node (ref "RVX1") (pin "1") (pinfunction "1") (pintype "passive")) (node (ref "RVX2") (pin "1") (pinfunction "1") (pintype "passive")) (node (ref "RVX3") (pin "1") (pinfunction "1") (pintype "passive")) (node (ref "RVX4") (pin "1") (pinfunction "1") (pintype "passive")) (node (ref "U1") (pin "22") (pinfunction "Vcc2") (pintype "unspecified"))) (net (code "2") (name "+12V") (node (ref "C1") (pin "1") (pintype "passive")) (node (ref "D1") (pin "1") (pinfunction "K") (pintype "passive")) (node (ref "U1") (pin "19") (pinfunction "RAW") (pintype "unspecified"))) (net (code "3") (name "GATE") (node (ref "D2") (pin "1") (pinfunction "K") (pintype "passive")) (node (ref "D5") (pin "2") (pinfunction "A") (pintype "passive")) (node (ref "J29") (pin "10") (pinfunction "J1_T") (pintype "passive")) (node (ref "Q1") (pin "2") (pinfunction "B") (pintype "passive")) (node (ref "RX11") (pin "1") (pintype "passive"))) (net (code "4") (name "GND") (node (ref "C1") (pin "2") (pintype "passive")) (node (ref "D11") (pin "2") (pinfunction "A") (pintype "passive")) (node (ref "D13") (pin "2") (pinfunction "A") (pintype "passive")) (node (ref "D2") (pin "2") (pinfunction "A") (pintype "passive")) (node (ref "D4") (pin "2") (pinfunction "A") (pintype "passive")) (node (ref "D7") (pin "2") (pinfunction "A") (pintype "passive")) (node (ref "D9") (pin "2") (pinfunction "A") (pintype "passive")) (node (ref "J28") (pin "20") (pinfunction "GND") (pintype "power_in")) (node (ref "J29") (pin "1") (pinfunction "GND") (pintype "power_in")) (node (ref "J29") (pin "15") (pinfunction "GND") (pintype "power_in")) (node (ref "J29") (pin "16") (pinfunction "GND") (pintype "power_in")) (node (ref "J29") (pin "2") (pinfunction "GND") (pintype "power_in")) (node (ref "J9") (pin "3") (pinfunction "Pin_3") (pintype "passive")) (node (ref "J9") (pin "4") (pinfunction "Pin_4") (pintype "passive")) (node (ref "J9") (pin "5") (pinfunction "Pin_5") (pintype "passive")) (node (ref "J9") (pin "6") (pinfunction "Pin_6") (pintype "passive")) (node (ref "J9") (pin "7") (pinfunction "Pin_7") (pintype "passive")) (node (ref "J9") (pin "8") (pinfunction "Pin_8") (pintype "passive")) (node (ref "JX1") (pin "S") (pintype "passive")) (node (ref "JX2") (pin "S") (pintype "passive")) (node (ref "JX3") (pin "S") (pintype "passive")) (node (ref "JX4") (pin "S") (pintype "passive")) (node (ref "JX5") (pin "S") (pintype "passive")) (node (ref "JX6") (pin "S") (pintype "passive")) (node (ref "Q1") (pin "1") (pinfunction "E") (pintype "passive")) (node (ref "RVX1") (pin "3") (pinfunction "3") (pintype "passive")) (node (ref "RVX2") (pin "3") (pinfunction "3") (pintype "passive")) (node (ref "RVX3") (pin "3") (pinfunction "3") (pintype "passive")) (node (ref "RVX4") (pin "3") (pinfunction "3") (pintype "passive")) (node (ref "U1") (pin "10") (pinfunction "GND") (pintype "unspecified")) (node (ref "U1") (pin "20") (pinfunction "GND3") (pintype "unspecified"))) (net (code "5") (name "IN1") (node (ref "Q1") (pin "3") (pinfunction "C") (pintype "passive")) (node (ref "U1") (pin "12") (pinfunction "D3") (pintype "bidirectional"))) (net (code "6") (name "LED1A") (node (ref "J28") (pin "12") (pinfunction "POT5_2_W") (pintype "passive")) (node (ref "LED1") (pin "1") (pinfunction "KA") (pintype "input")) (node (ref "U1") (pin "30") (pinfunction "D10") (pintype "bidirectional"))) (net (code "7") (name "LED1B") (node (ref "J28") (pin "11") (pinfunction "POT5_1_CW") (pintype "passive")) (node (ref "RX5") (pin "1") (pintype "passive")) (node (ref "U1") (pin "18") (pinfunction "D9") (pintype "bidirectional"))) (net (code "8") (name "LED2A") (node (ref "J28") (pin "3") (pinfunction "POT6_2_W") (pintype "passive")) (node (ref "LED2") (pin "1") (pinfunction "KA") (pintype "input")) (node (ref "U1") (pin "13") (pinfunction "D4") (pintype "bidirectional"))) (net (code "9") (name "LED2B") (node (ref "J28") (pin "2") (pinfunction "POT6_1_CW") (pintype "passive")) (node (ref "RX6") (pin "1") (pintype "passive")) (node (ref "U1") (pin "14") (pinfunction "D5") (pintype "bidirectional"))) (net (code "10") (name "MODE1") (node (ref "J28") (pin "15") (pinfunction "POT3_2_W") (pintype "passive")) (node (ref "RX3") (pin "1") (pintype "passive")) (node (ref "U1") (pin "26") (pinfunction "A0") (pintype "bidirectional"))) (net (code "11") (name "MODE2") (node (ref "J28") (pin "6") (pinfunction "POT4_2_W") (pintype "passive")) (node (ref "RX4") (pin "1") (pintype "passive")) (node (ref "U1") (pin "23") (pinfunction "A3") (pintype "bidirectional"))) (net (code "12") (name "NORM") (node (ref "J29") (pin "9") (pinfunction "J1_R_N") (pintype "passive")) (node (ref "RX12") (pin "1") (pintype "passive")) (node (ref "U1") (pin "16") (pinfunction "D7") (pintype "bidirectional"))) (net (code "13") (name "Net-(D1-Pad2)") (node (ref "D1") (pin "2") (pinfunction "A") (pintype "passive")) (node (ref "R1") (pin "1") (pintype "passive"))) (net (code "14") (name "Net-(D10-Pad1)") (node (ref "D10") (pin "1") (pinfunction "K") (pintype "passive")) (node (ref "D12") (pin "1") (pinfunction "K") (pintype "passive")) (node (ref "D6") (pin "1") (pinfunction "K") (pintype "passive")) (node (ref "D8") (pin "1") (pinfunction "K") (pintype "passive"))) (net (code "15") (name "Net-(J9-Pad9)") (node (ref "J9") (pin "9") (pinfunction "Pin_9") (pintype "passive")) (node (ref "R1") (pin "2") (pintype "passive"))) (net (code "16") (name "Net-(JX1-PadT)") (node (ref "JX1") (pin "T") (pintype "passive")) (node (ref "RX11") (pin "2") (pintype "passive"))) (net (code "17") (name "Net-(JX1-PadTN)") (node (ref "JX1") (pin "TN") (pintype "passive")) (node (ref "RX12") (pin "2") (pintype "passive"))) (net (code "18") (name "Net-(JX2-PadT)") (node (ref "JX2") (pin "T") (pintype "passive")) (node (ref "RX13") (pin "2") (pintype "passive"))) (net (code "19") (name "Net-(JX2-PadTN)") (node (ref "JX2") (pin "TN") (pintype "passive")) (node (ref "RX14") (pin "2") (pintype "passive"))) (net (code "20") (name "Net-(JX3-PadT)") (node (ref "JX3") (pin "T") (pintype "passive")) (node (ref "RX9") (pin "1") (pintype "passive"))) (net (code "21") (name "Net-(JX4-PadT)") (node (ref "JX4") (pin "T") (pintype "passive")) (node (ref "RX15") (pin "1") (pintype "passive"))) (net (code "22") (name "Net-(JX5-PadT)") (node (ref "JX5") (pin "T") (pintype "passive")) (node (ref "RX7") (pin "1") (pintype "passive"))) (net (code "23") (name "Net-(JX6-PadT)") (node (ref "JX6") (pin "T") (pintype "passive")) (node (ref "RX17") (pin "1") (pintype "passive"))) (net (code "24") (name "Net-(LED1-Pad2)") (node (ref "LED1") (pin "2") (pinfunction "AK") (pintype "input")) (node (ref "RX5") (pin "2") (pintype "passive"))) (net (code "25") (name "Net-(LED2-Pad2)") (node (ref "LED2") (pin "2") (pinfunction "AK") (pintype "input")) (node (ref "RX6") (pin "2") (pintype "passive"))) (net (code "26") (name "Net-(RVX1-Pad2)") (node (ref "RVX1") (pin "2") (pinfunction "2") (pintype "passive")) (node (ref "RX14") (pin "1") (pintype "passive"))) (net (code "27") (name "Net-(RVX2-Pad2)") (node (ref "RVX2") (pin "2") (pinfunction "2") (pintype "passive")) (node (ref "RX2") (pin "2") (pintype "passive"))) (net (code "28") (name "Net-(RVX3-Pad2)") (node (ref "RVX3") (pin "2") (pinfunction "2") (pintype "passive")) (node (ref "RX3") (pin "2") (pintype "passive"))) (net (code "29") (name "Net-(RVX4-Pad2)") (node (ref "RVX4") (pin "2") (pinfunction "2") (pintype "passive")) (node (ref "RX4") (pin "2") (pintype "passive"))) (net (code "30") (name "OUT1A") (node (ref "D6") (pin "2") (pinfunction "A") (pintype "passive")) (node (ref "D7") (pin "1") (pinfunction "K") (pintype "passive")) (node (ref "J29") (pin "12") (pinfunction "J3_T") (pintype "passive")) (node (ref "RX9") (pin "2") (pintype "passive")) (node (ref "U1") (pin "29") (pinfunction "D11") (pintype "bidirectional"))) (net (code "31") (name "OUT1B") (node (ref "D8") (pin "2") (pinfunction "A") (pintype "passive")) (node (ref "D9") (pin "1") (pinfunction "K") (pintype "passive")) (node (ref "J29") (pin "6") (pinfunction "J4_T") (pintype "passive")) (node (ref "RX15") (pin "2") (pintype "passive")) (node (ref "U1") (pin "17") (pinfunction "D8") (pintype "bidirectional"))) (net (code "32") (name "OUT2A") (node (ref "D10") (pin "2") (pinfunction "A") (pintype "passive")) (node (ref "D11") (pin "1") (pinfunction "K") (pintype "passive")) (node (ref "J29") (pin "14") (pinfunction "J5_T") (pintype "passive")) (node (ref "RX7") (pin "2") (pintype "passive")) (node (ref "U1") (pin "28") (pinfunction "D12") (pintype "input"))) (net (code "33") (name "OUT2B") (node (ref "D12") (pin "2") (pinfunction "A") (pintype "passive")) (node (ref "D13") (pin "1") (pinfunction "K") (pintype "passive")) (node (ref "J29") (pin "8") (pinfunction "J6_T") (pintype "passive")) (node (ref "RX17") (pin "2") (pintype "passive")) (node (ref "U1") (pin "15") (pinfunction "D6") (pintype "bidirectional"))) (net (code "34") (name "R1") (node (ref "D3") (pin "2") (pinfunction "A") (pintype "passive")) (node (ref "D4") (pin "1") (pinfunction "K") (pintype "passive")) (node (ref "J28") (pin "18") (pinfunction "POT1_2_W") (pintype "passive")) (node (ref "J29") (pin "4") (pinfunction "J2_T") (pintype "passive")) (node (ref "RX13") (pin "1") (pintype "passive")) (node (ref "U1") (pin "25") (pinfunction "A1") (pintype "bidirectional"))) (net (code "35") (name "R2") (node (ref "J28") (pin "9") (pinfunction "POT2_2_W") (pintype "passive")) (node (ref "RX2") (pin "1") (pintype "passive")) (node (ref "U1") (pin "24") (pinfunction "A2") (pintype "bidirectional")))
Parts List
Daughtercard =
Find | Qty | Ref Des | Part Number |
---|---|---|---|
1 | 1 | R35 | 1K |
2 | 1 | C1 | 10uF |
3 | 5 | D1-D5 | BAT41 |
4 | 1 | J9 | Conn, IDC, Box, 2x5 |
5 | 2 | LED1, LED2 | LED_Dual_2pin |
6 | 1 | Q1 | 2N3904 |
7 | 1 | R1 | 10 |
8 | 1 | U1 | ARDUINO PRO MINI |
Controls Card
Find | Qty | Ref Des | Part Number |
---|---|---|---|
11 | 8 | RX2-4, RX7, RX9, RX15, RX17 | 1K |
12 | 4 | RVX1-RVX4 | 100K |
13 | 2 | RX3, RX4 | 220 |
14 | 2 | RX11, RX13 | 100K |
7 | 6 | JX1-JX6 | Jack |