Noise Fashion Tips
Wed 11 Aug 2021 04:32:03 PM CEST
- well, almost a month since the last post
- I was putting off making of the tape echo for quite some time, because
drilling the marantz tape player seemed like such a chore... And it was...
- tape echo is done, I moved the ADC to the next phase, so now: planning time
~~~ Tape echo ~~~
- I did finally finish this project, and it was quite the pain.
- There are still some problems:
* pots sometimes don't work properly, and I'm not sure the problem is
entirely mechanical (one pot (when wired in circuit) doesn't have 0 ohms
between viper and ground when turned fully counterclockwise, other pot
does seem to latch in one of two positions, but it helps when I short
the viper with either side? I have to look at it with scope)
* needs external highpass resonant filter for the full effect
* it needs to be powered via batter compartment, because that's where the
mixer PCB gets its power from (and power jack has diode as not to charge
batteries, so no juice to the PCB)
- There are also some lessons to be learned from this project:
* I shouldn't care so much about how the project looks like. Some problems
are directly cause by me wanting it to be housed in the tape player box
(it took much longer than it should (to dremmel and drill everything),
I didn't include the highpass filter because there wasn't enough space
etc.)
* Maybe I shouldn't do PCBs for everything. Instead of designing the PCB I
could have had made a perfboard the day I breadboarded it and then chuck
it in a box and be done with it.
- TODO: record more samples
Note the comically large potentiometer:
~~~ ADC readings ~~~
TODO:
. lgt8f: try the original board support package
Wed 14 Jul 2021 09:21:29 PM CEST
- the endless acid banger is done: ENDLESS ACID BANGER
- video and post to reddit also done
Wed 14 Jul 2021 11:12:09 AM CEST
~~~ Acid Banger sequencer ~~~
- I sat down yesterday and written the acid banger sequencer from scratch but
for Arduino. It's finished, only thing remaining is to write comments,
tutorial on how to connect the MIDI out and publish it.
Mon 12 Jul 2021 11:03:40 PM CEST
~~~ Acid Banger sequencer ~~~
- one track (with Murhaaya)
- another demo track (with Murhaaya)
- setup:
~~~ Tape echo ~~~
- made gerbers, sent them for manufacturing:
~~~ This web ~~~
- As I kid I imagined internet as a one big disk drive that you browse with
something like Norton Commander, descend down the directories, read READMEs,
etc. And I think for exploration that's probably a bit better interface than
having to fish for clues inside text paragraphs.
People that use github to publish things know this.
Mon 12 Jul 2021 01:10:03 PM CEST
~~~ Acid Banger sequencer ~~~
- I was on holiday so not much was done.
- I was thinking about this and more than being something revolutionary, this
is an excersise in reaching out to other people
- I'm not looking forward to rewriting the code for Arduino, but with a bit of
planning it could be done relatively painlessly. Unit tests are required if I
don't want to be constantly re-testing the system while writing.
How to do it:
* take Arduino Nano, breadboard it with 10 buttons (pat1, pat2, notes,
drums, play, mem1-mem5)
* code to read buttons (struct holding pin num + state)
* demo button -> serial out
* main loop that checks `millis()` and eventually executes `run_tick()`
* MIDI clock start stop
* implement patterns, instruments, instrument handlers (ie. how to send
noteout for volca drum that receives drum volume via separate cc message
etc.)
struct Pattern {
uint16_t accent, glide;
uint8_t note[16];
}
struct Instrument {
byte midi_channel;
byte is_drum, drum_note;
void (*noteon_handler)(byte chan, byte note, byte vel);
void (*noteoff_handler)(byte chan, byte note);
/* state */
byte current_note;
}
* copy over the infinite acid banger generator
* implement UI (buttons)
* fix pseudo-random melody generation
* add Arduino MIDI library
* demo: Nano driving a synth
* convert all tables to defines on top of the file
* documentation
/ create a github (?) repo with schematic
* create a youtube video (?)
* post to reddit
~~~ Autolooping sequencer ~~~
- I moved this to the future because the main purpose was to *release*
something and this is being accomplished by the infinite acid banger seq.
~~~ Tape echo ~~~
TODO:
* revisit the PCB and try to think again about the wire pad placement
. list of things that are to be decided:
. where to get power supply when inside the case
. how to internally connect echomatic board to the tape player
. what connectors to use for connecting tape echo to the signal chain
. whether to order additional belts
Thu 08 Jul 2021 08:58:32 PM CEST
~~~ Acid Banger sequencer ~~~
- All the demos I've recorded so far are a bit bland. Maybe I'll record
something better next week with Murhaaya.
- As far as I'm concerned the code is done. Now I need to port it to Arduino
and make a nice web page for it (and post it to reddit).
~~~ This log ~~~
- I've changed then name of this blog to "Noise Fashion Tips". I used to have
a blog with the same name and 0 pageviews a few years ago.
~~~ Clock for B. ~~~
- This is officially finished, I even uploaded this project to hackaday (just
to try it out): https://hackaday.io/project/180699-bubble-led-clock.
Sources included.
Fri 02 Jul 2021 07:22:52 PM CEST
- this entry will be brief and without photos, because I'm really exhausted
but still want to write things down before I forget
~~~ Clock for B. ~~~
- Done.
- There has been a little set-back, because I did what I really shouldn't have
done: I changed the pinout without testing and sent the board to get
manufactured anyway. It worked out in the end, but for example - I used pins
A6 and A7 on the LGT8F328P and thought they will be in PORTC, bits 6 and 7,
which they were not. They are in the PORTE!
~~~ ECHO-MATIC ~~~
- I dropped the filters and designed the PCB. I'll get send it to get
manufactured next week.
~~~ Acid Banger sequencer ~~~
- I implemented this and it's really great. I need to record some demos. But I
think I burned something in my filterbox while testing it. I hope it was
MCP6002 (because they were the shit aliexpress kind anyway) and not the
LM13700 (because then I'll have no excuse and I will have to revisit the
design).
- So far it is written as an alternative sequencer implementation in minty,
but I'm thinking about make it for vanilla Arduino (just serial + few
buttons) and publishing it (and posting to reddit).
Sun 27 Jun 2021 07:52:40 PM CEST
~~~ Clock for B. ~~~
- I finished the PCB, send it to manufacturing. I've thought it gonna be two
sided, but I managed to fit it just on one side.
~~~ ECHO-MATIC ~~~
- I have some issues with the PCB. It's hard to fit it on narrow strip so I
would be able to put it into the battery compartment. Also, it is too
complicated for my taste, while also not sounding as good as the version
with MS-20 filter in feedback. One reason might be that I haven't put it
into proper enclosure, so the knobs make weird sounds when touched and
sometimes their wires get disconnected. So let's just wait.
~~~ Minty synth ~~~
- I added sort of Note-Off events to the Minty sequencer: the MIDI tracks
reuse the "Envelope Time" parameter as a "Gate Time", so now the notes have
duration, but it's the same duration for all notes
- I also did some experiment with using multiple channels for just one Volca
Keys
In general...
- In general I have been a bit dissatisfied with this whole effort to finish
all my projects. I did quit IRC to have a few days of quiet time. I need to
sit and think.
Sat 26 Jun 2021 09:11:12 AM CEST
~~~ ECHO-MATIC ~~~
- I checked the second set of belts and they are too big as well. I probably
misunderstood what the inner diameter means - that it is an inner diameter
of a belt that forms a circle.
In my case: belt length 165mm has inner diameter of 165 / 3.14 = 52.5 mm,
not 165 / 2 = 82.5 m
So now I have two useless sets of belts. If I had paid for the (expensive)
PMD221 belt set on ebay in the first place, I would have paid less.
- I played a bit with the Echo-Matic circuit on a breadboard and found out
that if I add a highpass filter, I get nicer repeats that do not accumulate
so much bass and that can resonate for longer without exploding. Some
samples here:
Audio: Tape Echo Experiment 1
Audio: Tape Echo Experiment 2
Audio: Tape Echo Experiment 3
So I added simple stereo-pot-controlled Sallen-Key lowpass and highpass
filter on the input from tape playback.
This complicated the design a bit, but I think it is worth it.
- Next: Do a PCB.
~~~ Clock for B. ~~~
- the DS1307 chip I used for the clock has terrible precision (it has error of
5 minutes a day), and I'm not sure why that is (maybe crystal with wrong
capacitance?)
- I bought DS3231-MZ chip instead, which comes in SO-8 package and has MEMS
oscillator, and that works without a problem
- Next: Make a PCB.
~~~ This log ~~~
- I still haven't found a name for this log, and I'm not backing it up or
having it in a version control system
- I'm not sure who it is for, or what I'm going to do with it (I'm not
promoting it anywhere...). The form is easy to write, but not really all
that readable (maybe I should separate it per-project, or instead make it
into separate articles, ...?)
~~~ Minty synth ~~~
- The sequencer has a problem: it doesn't record note duration. This is OK for
minty and Volca Sample (because they are one-shot), but doesn't work for
sequencing generic synths. And I would like to have this feature just to
play with and I think I will need it for the infinite-acid-banger project.
- The current sequencer is simple - and that has the advantage of being
maleable. I had written complicated sequencers and most of them died because
all new ideas were hard to implement.
Fri 25 Jun 2021 08:30:47 AM CEST
~~~ ECHO-MATIC ~~~
- new belts arrived, gonna change them in the evening
[later]
- the belts are too big
Wed 16 Jun 2021 10:23:52 PM CEST
~~~ ECHO-MATIC ~~~
- I ordered the belts, but it seems that the width of the main belt was wrong
(it's actually 2mm, not 4mm) and that I ordered belts that had inner
diameter 160mm, but I actually wanted *length* 160mm (which is inner
diameter 80mm).
- Anyway, I need to order another set. This time like this (PMD 221):
Main 153T254010 82.5mm (inner dia) x 0.6mm x 2mm (flat)
Drive 242T26412R 66mm (inner dia) x 1mm x 1mm (square)
Counter 153T264020 84mm (inner dia) x 1mm x 1mm (quare)
- But at least I did manage to get the tape recorder working again (return the
belt back on the main flywheel) so I can test my echo circuit changes and
then: make schematic, make pcb and get it manufactured.
Sun 13 Jun 2021 10:22:22 AM CEST
- I didn't feel like writing the whole last week. Let's remedy this by going
through the projects and look at some pictures
~~~ MS-20 filter PCB ~~~
- No error in the PCB, but soldering was a bit of a pain because the through
holes weren't plated, so some components had to be soldered on both sides
(hard on the cheap IC sockets, but easy on the precision ones; also had to
push up some caps so that I would get a metal bit on the other side).
- It has highpass/lowpass mechanical DPDT switch
- The filter works reasonably well, but there's not enough headroom for both
the self-oscillation and input signal (if it's loud) and it emits unpleasant
muffled crackle
- I'm really glad I finished it and it works, because MS-20 filter epitomizes
for me "analog synths". I've done it, now I can build anything. Even a
polysynth.
~~~ Filter box ~~~
- The filterbox is envelope + LFO + the MS-20 filter + 7805 voltage regulator.
It took quite a lot of time to drill and to assemble because:
- I didn't have drill bits large enough for the buttons, so I had to file
down the last few mm
- the LEDs needed support perfboard which is held in place by the screw pegs
- there is generally a lot of wires going everywhere
- The PCBs are stacked on top of each other with the PCB on the bottom
providing power through the pin headers. There are no signals going through
the pin headers as of now, but I was thinking of making a poly-synth with
voices running from voice cards up to mixer through the pinheaders. I could
then get PCBs manufactured by JLCPCB - they have minimum order of 5 pieces
so I would make a 5 voice polysynth.
- The format is:
- Patching pegs (1K output impedance, 100K input impedance) with aligator
clips. The 1K output impedance means you can do 50%-50% signal mixing
without having to use mixer.
- Control voltage is 0..5V
- Audio voltage 0..5V (with "ground" at 2.5), but I'm thinking switching to
1.25..3.75 V to get more headroom. Still not sure.
- Attenuators on signal inputs
~~~ Clock for B. ~~~
- I was obsessed with bubble-led displays and I ordered one only for it to
arrive just after the obsession had passed, so I decided to use it for a
clock for my wife.
- The first run-in I had was with I2C and clock chip (DS1307): I have my own
I2C library, that has timeout for operations to finish. But the I2C
transactions were failing mysteriously from time to time (from top the
bottom, SDA, SCL and timer interrupt):
The problem was in handling the time: there is a global uint32_t millisecond
counter that is being updated in interrupt, but it wasn't read atomically,
so if the interrupt fired when the i2c transaction was reading time "02_ff",
it could read "03_ff" instead of "03_00", and terminate the i2c transaction
prematurely.
So that took me half of the evening to figure out.
And this is what happens when the I2C pullups are not strong enough:
- @ruemohr suggested to use a software i2c library by Peter Fleury (i2cmaster.zip)
which takes _less_ code to bitbang i2c that my implementation takes to
service the hardware i2c master. Unfortunately it doesn't handle timeouts
and I don't feel like adding support for them, so...
- The russian bubble LED display I use (ALC318A? supposed clone of
HP5082-7441) consumes quite a lot power (5mA) for how little light it emits.
- The LED driving circuit (74HC595) and encoder input were cobbled together
quickly. So the prototype looks now like this (scroll down).
The next steps are:
- replace the atmega with lgt8e328p which I want to get rid of
- use 100R resistors on segment inputs to make "1" and "8" the same
brightness
- design PCB (need to juggle the pins a bit)
~~~ 3d printed bracket ~~~
- I have two E-mus: e6400 Classic and E4XT Ultra. The Ultra has SCSI2SD, the
Classic has just floppy. I wanted to have some decent storage for both, so I
ordered small IDE-CF adapter because the Ultra has IDE bus.
- I wanted a slot for CF cards on the front instead of floppy. There are some
very nice options to be had, but I decided I would try to 3d print my own. So I
drawn it on paper, then downloaded OpenSCAD a essentialy rewrote it as a
bit of code.
- One good soul printed it for me.
- Unfortunately a pair of screw columns were too short (I didn't take into
account the thickness of the base), but nothing stack of washers wouldn't
solve.
- The kicker: the E-mu isn't compatible with this IDE-CF converter. I should've
maybe check this earlier.
~~~ ECHO-MATIC ~~~
- So I've bought a Marantz PMD 221 to build an Echo-Matic tape delay. I've probably
paid for it more than I should, but such is the world of tape echos.
- Originally I was planning to make the feedback path with Mackie mix, but the
mix is too bulky and I like the idea of the Echo-Matic being built into the
tape recorder itself.
Eurorack Echo-Matic: AI016.
- The Echo-Matic circuit works fine but it needs a low-pass filter on the
tape input (or on the tape output), because the Marantz tends to produce a
high-frequency squeal when output is fed back.
Note: Tape line output impedance is 650 mV / 2KΩ
- The Marantz had increasingly more trouble winding the tape, so I've thought
maybe the belts had gone bad and I opened it and sure enough, they are loose,
so before I proceed I need to replace them. Instructional video.
- The belts needed are:
Main 153T254010 165mm x 0.6mm x 3.8mm (flat)
Drive 242T26412R 132mm x 1mm x 1mm (square)
Counter 153T264020 168mm x 1mm x 1mm (quare)
- I dremled-off the battery compartment, so I can fit pots and echo-matic pcb
there.
- Steps after that: test lowpass filter on the input-from-tape-output, make
narrow PCB for PMD 221 battery compartment
~~~ Acid Banger sequencer ~~~
- The basic idea is to take this: https://github.com/vitling/acid-banger/blob/main/src/pattern.ts
and turn it into a MIDI sequencer.
- The Acid Banger sequencer has some hardcoded tables and probabilities, very
much like this [comments mine]:
// [semitone offset classes, each pattern is generate from one of them]
const offsetChoices = [
[0,0,12,24,27],
[0,0,0,12,10,19,26,27],
[0,1,7,10,12,13],
[0],
[0,0,0,12],
[0,0,12,14,15,19],
[0,0,0,0,12,13,16,19,22,24,25],
[0,0,0,7,12,15,17,20,24],
];
// [note probability where `i` is 16th note index]
const chance = density * (i % 4 === 0 ? 0.6 : (i % 3 === 0 ? 0.5 : (i % 2 === 0 ? 0.3 : 0.1)));
// [snare pattern generator]
for (let i = 0; i < 16; i++) {
if (i % 8 === 3 || i % 8 === 6) {
sdPattern[i] = 0.6 + Math.random() * 0.4;
} else if (i % 2 === 0 && Math.random() < 0.2) {
sdPattern[i] = 0.4 + Math.random() * 0.2;
} else if (Math.random() < 0.1) {
sdPattern[i] = 0.2 + Math.random() * 0.2;
}
}
- The idea is first to implement this, then maybe take it a little bit
further: for example, generating the semitone classes from user-recorded
pattern, computing the rhythm probabilities from user patterns, etc...