Commit 5609986c authored by David Huss's avatar David Huss 💬
Browse files

Add Env Module

parent dbf37d3f
......@@ -2,15 +2,15 @@
A set of modular PCBs that can be used to create a custom configuration for a Matrix Mixer. A Matrix mixer allows you to mix you any input to any output at the same time.
<img src="images/final.jpg" height="600px">
<img src="images/final.jpg" height="auto" width="800px">
If you have for example a 4x4 Matrix Mixer, you have 16 knobs with each controlling a how much of a given input signal (`1-4`) will be mixed into a given output (`A-D`):
<img src="images/4x4-matrix.png" height="600px">
<img src="images/4x4-matrix.png" height="auto" width="600px">
For example by turning up the knob at the intersection between Input `2` and Output `B` we can mix all of the signal present at the input to the output. If we turn up another knob at another intersection, the signal will be present at both outputs:
<img src="images/matrix-examples.png" height="600px">
<img src="images/matrix-examples.png" height="auto" width="600px">
This makes Matrix mixers extremely flexible and allows for many possible combinations and use cases.
......@@ -54,13 +54,21 @@ Provides two 3.5mm Mono output jacks, with a Jumper (or switch) each row of tile
| <img src="gerbers/MAMI-OUTPUT_Combined_Top.png" height="200px"> | <img src="gerbers/MAMI-OUTPUT_Combined_Bottom.png" height="200px"> | <img src="images/3d-output.png" height="200px"> |
The summing section looks like this and allows a jumper (`J_ATT1` and `J_ATT2`) or a switch (2.54mm lead spacing) to be used to switch between unipolar and bipolar attenuation for each row seperately.
<img src="images/schematic_summing.png" height="600px" width="auto">
<img src="images/schematic_summing.png" height="auto" width="600px">
## Envelope Follower Module [MAMI-ENV]
A dual Envelope follower that can be hooked up to a `MAMI-OUTPUT`-Module. Has two output jacks in the same 25mm spacing as the output module and two LEDs that correspond to the output levels.
| Top | Bottom | 3D |
| ---- | ------ | --- |
| <img src="gerbers/MAMI-ENV_Combined_Top.png" height="200px"> | <img src="gerbers/MAMI-ENV_Combined_Bottom.png" height="200px"> | <img src="images/3d-env.png" height="200px"> |
### Erata Output Module rev. 1.0 (has been fixed in 1.1)
- Silkscreen for Vee and Vcc is swapped!
- `R4` and `R8` should have a value of 100 Ω not 100 kΩ (or bridge it with solder)
- Connector `J_W` was flipped by 180° (this however depends on which side you want your outputs). Solve it like this (just make sure the silkscreen labels connect to the right bus): <img src="images/bus-wiring.jpg" height="600px" width="auto">
- Connector `J_W` was flipped by 180° (this however depends on which side you want your outputs). Solve it like this (just make sure the silkscreen labels connect to the right bus): <img src="images/bus-wiring.jpg" height="auto" width="600px">
# Panels
......
%% Cell type:code id: tags:
``` python
# Change these values to calculate the needed values
requirements = {"inputs": 8, "outputs":8}
envelopes = True
# Do not edit below this Point unless you know what you are doing
data = {
"mami-input": {
"input-channels": 2,
"parts": [
{"MPN": "PJ301M-12", "n": 2},
{"MPN": "Subminiature On-Off-(On) Toggle switch", "n": 2},
]
},
"mami-output": {
"output-channels": 2,
"parts": [
{"MPN": "LME49720", "n": 2},
{"MPN": "100nF 0603 25V", "n": 4},
{"MPN": "100k 0805", "n": 6},
{"MPN": "100R 0805", "n": 2},
{"MPN": "PJ301M-12", "n": 2}
]
},
"mami-quad": {
"input-channels":2, "output-channels":2,
"parts": [
{"MPN": "P0915N-FC15BR100K", "n": 4},
{"MPN": "Knob", "n": 4},
{"MPN": "100k 0805", "n": 4}
]
},
"mami-env": {
"output-channels":2,
"parts": [
{"MPN": "100nF 0603 25V", "n": 4},
{"MPN": "PJ301M-12", "n": 2},
{"MPN": "TL074CD", "n": 2},
{"MPN": "100k 0805", "n": 8},
{"MPN": "200k 0805", "n": 6},
{"MPN": "20k 0805", "n": 2},
{"MPN": "1k 0805", "n": 2},
{"MPN": "470R 0805", "n": 2},
{"MPN": "1M 0805", "n": 2},
{"MPN": "1nF 0603", "n": 2},
{"MPN": "1uF 5mm lead spacing (e.g. MKS2C041001F00J)", "n": 2},
{"MPN": "LED 3mm", "n": 2},
{"MPN": "BAV199", "n": 4}
]
}
}
# Calculate how many PCBs are needed
n_input_modules = int(requirements["inputs"] / data["mami-input"]["input-channels"])
n_output_modules = int(requirements["outputs"] / data["mami-output"]["output-channels"])
n_env_modules = n_output_modules
n_quad_modules = int((requirements["inputs"] * requirements["outputs"]) / (data["mami-output"]["output-channels"] * data["mami-input"]["input-channels"]))
Print the PCB
# Print the PCB
print("Needed for a {}x{} Matrix Mixer".format(requirements["inputs"], requirements["outputs"]))
print("{}".format("="*50))
print("{0:>5}x MAMI-INPUT-Module".format(n_input_modules))
print("{0:>5}x MAMI-OUTPUT-Module".format(n_output_modules))
print("{0:>5}x MAMI-QUAD-Module\n".format(n_quad_modules))
print("{0:>5}x MAMI-QUAD-Module".format(n_quad_modules))
if envelopes:
print("{0:>5}x MAMI-ENV-Module".format(n_env_modules))
print()
# Collect all the parts
bom = {}
for part in data["mami-input"]["parts"]*n_input_modules + data["mami-quad"]["parts"]*n_quad_modules + data["mami-output"]["parts"]*n_output_modules:
def get_parts(data, n_input_modules, n_quad_modules, n_output_modules, n_env_modules):
parts = []
for part in data["mami-input"]["parts"]*n_input_modules:
parts.append(part)
for part in data["mami-quad"]["parts"]*n_quad_modules:
parts.append(part)
for part in data["mami-output"]["parts"]*n_output_modules:
parts.append(part)
if envelopes:
for part in data["mami-env"]["parts"]*n_env_modules:
parts.append(part)
return parts
for part in get_parts(data, n_input_modules, n_quad_modules, n_output_modules, n_env_modules):
if part["MPN"] in bom:
bom[part["MPN"]] += part["n"]
else:
bom[part["MPN"]] = part["n"]
# Print the BOM
print("Parts\n{}".format("="*50))
for key, value in bom.items():
print("{:>5}x {}".format(value, key))
```
%% Output
Needed for a 8x8 Matrix Mixer:
Needed for a 8x8 Matrix Mixer
==================================================
4x MAMI-INPUT-Module
4x MAMI-OUTPUT-Module
16x MAMI-QUAD-Module
4x MAMI-ENV-Module
Parts
==================================================
16x PJ301M-12
24x PJ301M-12
8x Subminiature On-Off-(On) Toggle switch
64x P0915N-FC15BR100K
64x Knob
96x 100k 0805
120x 100k 0805
8x LME49720
16x 100nF 0605 25V
32x 100nF 0603 25V
8x 100R 0805
8x TL074CD
24x 200k 0805
8x 20k 0805
8x 1k 0805
8x 470R 0805
8x 1M 0805
8x 1nF 0603
8x 1uF 5mm lead spacing (e.g. MKS2C041001F00J)
8x LED 3mm
16x BAV199
%% Cell type:code id: tags:
``` python
for i in range(5,15):
print("{}... QUAD: {} IN: {} OUT: {}, Channels: {}".format(i, 16*i, 4*i, 4*i, 8*i))
```
%% Output
5... QUAD: 80 IN: 20 OUT: 20, Channels: 40
6... QUAD: 96 IN: 24 OUT: 24, Channels: 48
7... QUAD: 112 IN: 28 OUT: 28, Channels: 56
8... QUAD: 128 IN: 32 OUT: 32, Channels: 64
9... QUAD: 144 IN: 36 OUT: 36, Channels: 72
10... QUAD: 160 IN: 40 OUT: 40, Channels: 80
11... QUAD: 176 IN: 44 OUT: 44, Channels: 88
12... QUAD: 192 IN: 48 OUT: 48, Channels: 96
13... QUAD: 208 IN: 52 OUT: 52, Channels: 104
14... QUAD: 224 IN: 56 OUT: 56, Channels: 112
%% Cell type:code id: tags:
``` python
```
......
This diff is collapsed.
This diff is collapsed.
%FSLAX46Y46*%
%MOMM*%
G01*
G01*
%LPD*%
G75*
M02*
%FSLAX46Y46*%
%MOMM*%
%AMPS12*
1,1,2.000000,0.000000,0.000000*
%
%ADD12PS12*%
%AMPS15*
1,1,1.900000,0.000000,0.000000*
%
%ADD15PS15*%
%AMPS13*
21,1,1.200000,1.200000,0.000000,0.000000,90.000000*
1,1,1.200000,0.000000,0.600000*
1,1,1.200000,0.000000,-0.600000*
%
%ADD13PS13*%
%AMPS16*
21,1,1.200000,1.200000,0.000000,0.000000,270.000000*
1,1,1.200000,0.000000,-0.600000*
1,1,1.200000,0.000000,0.600000*
%
%ADD16PS16*%
%AMPS14*
1,1,3.200000,0.000000,0.000000*
%
%ADD14PS14*%
%AMPS17*
1,1,3.200000,0.000000,0.000000*
%
%ADD17PS17*%
%AMPS10*
21,1,1.400000,1.500000,0.000000,0.000000,270.000000*
1,1,1.500000,0.000000,-0.700000*
1,1,1.500000,0.000000,0.700000*
%
%ADD10PS10*%
%AMPS11*
1,1,4.400000,0.000000,0.000000*
%
%ADD11PS11*%
G01*
G01*
%LPD*%
G75*
D10*
X-7800000Y-8850000D03*
D10*
X-9960000Y-8850000D03*
D10*
X17200000Y-8850000D03*
D11*
X-22000000Y9500000D03*
D10*
X12500000Y-8850000D03*
D10*
X-17200000Y-8850000D03*
D10*
X9960000Y-8850000D03*
D11*
X-22000000Y-9500000D03*
D11*
X22000000Y-9500000D03*
D11*
X22000000Y9500000D03*
D10*
X-12500000Y-8850000D03*
D10*
X7800000Y-8850000D03*
D10*
X15040000Y-8850000D03*
D10*
X-15040000Y-8850000D03*
D12*
X12500000Y-8850000D03*
D12*
X9960000Y-8850000D03*
D12*
X15040000Y-8850000D03*
D13*
X-17420000Y7580000D03*
D14*
X-12500000Y7580000D03*
D13*
X-9120000Y7580000D03*
D13*
X-6520000Y7580000D03*
D15*
X2540000Y-11230000D03*
D15*
X0Y-11230000D03*
D15*
X-2540000Y-11230000D03*
D12*
X-12500000Y-8850000D03*
D12*
X-15040000Y-8850000D03*
D12*
X-9960000Y-8850000D03*
D16*
X17420000Y7580000D03*
D17*
X12500000Y7580000D03*
D16*
X9120000Y7580000D03*
D16*
X6520000Y7580000D03*
D15*
X2540000Y11230000D03*
D15*
X0Y11230000D03*
D15*
X-2540000Y11230000D03*
M02*
%FSLAX46Y46*%
%MOMM*%
%ADD10C,0.010000*%
G01*
G01*
%LPD*%
D10*
X-25000000Y-9500000D02*
X-25000000Y9500000D01*
D10*
X-22000000Y12500000D02*
X22000000Y12500000D01*
D10*
X25000000Y9500000D02*
X25000000Y-9500000D01*
D10*
X22000000Y-12500000D02*
X-22000000Y-12500000D01*
G75*
G02*
D10*
X-22000000Y-12500000D02*
X-25000000Y-9500000I0J3000000D01*
G02*
D10*
X-25000000Y9500000D02*
X-22000000Y12500000I3000000J0D01*
G02*
D10*
X22000000Y12500000D02*
X25000000Y9500000I0J-3000000D01*
G02*
D10*
X25000000Y-9500000D02*
X22000000Y-12500000I-3000000J0D01*
M02*
%FSLAX46Y46*%
%MOMM*%
%ADD12C,1.000000*%
%AMPS13*
1,1,1.800000,0.000000,0.000000*
%
%ADD13PS13*%
%AMPS15*
1,1,1.700000,0.000000,0.000000*
%
%ADD15PS15*%
%AMPS14*
21,1,1.200000,1.000000,0.000000,0.000000,90.000000*
1,1,1.000000,0.000000,0.600000*
1,1,1.000000,0.000000,-0.600000*
%
%ADD14PS14*%
%AMPS16*
21,1,1.200000,1.000000,0.000000,0.000000,270.000000*
1,1,1.000000,0.000000,-0.600000*
1,1,1.000000,0.000000,0.600000*
%
%ADD16PS16*%
%AMPS10*
21,1,1.400000,2.100000,0.000000,0.000000,270.000000*
1,1,2.100000,0.000000,-0.700000*
1,1,2.100000,0.000000,0.700000*
%
%ADD10PS10*%
%AMPS11*
1,1,4.400000,0.000000,0.000000*
%
%ADD11PS11*%
G01*
G01*
%LPD*%
D12*
X9960000Y-8850000D02*
X7800000Y-8850000D01*
D12*
X-17420000Y6070000D02*
X-12500000Y-8850000D01*
D12*
X15040000Y-8850000D02*
X15040000Y-10360000D01*
D12*
X9960000Y-11030000D02*
X10160000Y-11230000D01*
D12*
X9960000Y-8850000D02*
X9960000Y-11030000D01*
D12*
X-2540000Y11230000D02*
X-5470000Y11230000D01*
D12*
X-15040000Y-8850000D02*
X-15240000Y-9050000D01*
D12*
X-9960000Y-11030000D02*
X-10160000Y-11230000D01*
D12*
X15040000Y-8850000D02*
X17200000Y-8850000D01*
D12*
X10160000Y-11230000D02*
X2540000Y-11230000D01*
D12*
X-17420000Y7580000D02*
X-17420000Y6070000D01*
D12*
X14170000Y-11230000D02*
X10160000Y-11230000D01*
D12*
X-9960000Y-8850000D02*
X-7800000Y-8850000D01*
D12*
X-10160000Y-11230000D02*
X-2540000Y-11230000D01*
D12*
X-9960000Y-8850000D02*
X-9960000Y-11030000D01*
D12*
X-5470000Y11230000D02*
X-9120000Y7580000D01*
D12*
X17420000Y7580000D02*
X17420000Y6070000D01*
D12*
X17420000Y6070000D02*
X12500000Y-8850000D01*
D12*
X-15240000Y-9050000D02*
X-15240000Y-10160000D01*
D12*
X-15240000Y-10160000D02*
X-14170000Y-11230000D01*
D12*
X5470000Y11230000D02*
X9120000Y7580000D01*
D12*
X-14170000Y-11230000D02*
X-10160000Y-11230000D01*
D12*
X15040000Y-10360000D02*
X14170000Y-11230000D01*
D12*
X2540000Y11230000D02*
X5470000Y11230000D01*
D12*
X-15040000Y-8850000D02*
X-17200000Y-8850000D01*
G75*
D10*
X-7800000Y-8850000D03*
D10*
X-9960000Y-8850000D03*
D10*
X17200000Y-8850000D03*
D11*
X-22000000Y9500000D03*
D10*
X12500000Y-8850000D03*
D10*
X-17200000Y-8850000D03*
D10*
X9960000Y-8850000D03*
D11*
X-22000000Y-9500000D03*
D11*
X22000000Y-9500000D03*
D11*
X22000000Y9500000D03*