Verified Stripboard Layouts!

Sweet :+1: :+1: :+1: :+1: :+1: :+1: :+1: :+1: :+1: :+1:

I finished this, but sadly, I can’t get it to work. @tamasgal and @Swirv seem to have built theirs using this layout, so I take that it’s been verified independently, so not an issue of the layout.

I seem to get some output only from the highpass. I checked the stripboard cuts before populating, the LM13700 (it works), the supply before powering on, my soldering is rather tidy, and aside from a stupid mistake in plugging in the TL074 backwards (I discarded it just in case), I cannot spot something wrong.

Obviously, I must have done something stupid, so I would appreciate it if I could have a couple of extra pairs of eyes check this. Perhaps someone familiar with the circuit could suggest where to start the troubleshooting with a multimeter or oscilloscope.


2 Likes

Yes I have built one but it never worked properly. I spent a good amount of time on debugging it and also compared to the original circuit but at some point I gave up. Maybe we should open a dedicated thread and see if we can make it work!

2 Likes

I see that you are having trouble with my old layout of that filter. The layout should be ok, I would recommend to just check the voltages of the chips. I hope you get it working, it sounds really good!

1 Like

Thanks for the reply! I already checked the voltages on all ICs (see the dedicated discussion in this thread) and they appear correct.

If ya can K.ostas set it aside for a few and then revisit your work. The culprit sooner or later will reveal itself and then the endorphins flood in lol.
defo a solid layout and great sounding filter.

I’ve left this aside for a couple of weeks already. Given that other people had problems with it, I thought it should be a good idea to debug it.

I would suggest that you measure for shorts between all tracks you wanted to separate using the drill (or whatever it is you were using). You could do a visual inspection using a magnifying glass, but I’d recomment to use a multi meter. I’ve experienced that what looks good may not be good after all. Also check for shorts to adjacent tracks. Remove all those tiny copper left overs. They may not form a short now, but may do so later.

2 Likes

It is a low cost 8-Step Sequencer/Synth that I have put together to build with some students at the school where I teach. The idea is that it is cheap and easy to use - so the kids can make so musical noises. The project is part of our activities week and we are booked in to visit the museum in Ramsgate. We went last year as well and we were made to feel very welcome and everyone had a great time. This is the stripboard layout for the prototype but for the real thing then I will have some PCBs made up.

I’m not sure if this is the right place for this. I’ve loitered around for a while and learnt a lot from you all so I thought I should give something back. I can put it in another part of the forum if you would prefer.

It is called the “Prioritron” after the school where I work, it uses an Arduino Nano and the Mozzi library for all the synthesis. A WS2812 addressable LED matrix gives a simple display - which I hope is more intuitive to use than a tiny LCD. Aside from the sequencer it has an ADSR control, Low pass filter, 4 waveforms, different detuned oscillators, a drum machine function. I reckon the components and the enclosure come in about £10. (The enclosure I’ve used is a 2 gang double pattress box with a piece of opaque white perspex for the front panel which is very cheap. It would easily fit in a eurorack case too)

I’ve made this video to demonstrate it.

Prioritron - YouTube Clip

I’m not a muscian nor a programmer and I am certainly not an engineer but I have very much enjoyed playing with this. Perhaps someone else is looking to achieve a lot of functions on a shoestring budget. Even better someone, who actually knows what they are doing might want to play with (it is a pretty quick build) and have some words of wisdom to share.

12 Likes

Welcome!
What an amazing project!
I hope your students enjoy it.

1 Like

Purty cooooooooooooooooool!

1 Like

Great project and so much functionality in a small device ! This is really impressive,
I really like the way you made the display show all functions. When looking at the video despite smalish resolution (8x8 matrix) I found the functions to be nicely depicted.

What age of students did you make this for and how easy/difficult do they find to build this synth on average?

Can you please list the libraries you used? I added Mozzi but there appears to be an Event.h file missing. Which rotary encoder library did you use?

I would like to suggest that you create a repository for the files on github. They are more accessible to a larger crowd from there. And people can add suggestions and build on the code if they want and (re)publish that.

Finally, have you thought of publishing this project on www.instructables.com?

1 Like

Thanks Jos, I really wanted the kids to be able to see and hear what they are doing to the sequence and waveform and envelope. I’ve seen some amazing things that Hagiwo and others have done with little LCD screens but I wanted it to be a bit more visual for the kids. I’m pleased with those basic functions show up. The students are 12 to 14. They won’t make a stripboard version, I have some PCBs on their way (I know this is not the thread to admit that in).

Realistically, most of the soldering will be done in advance by me and/or my lab technician but they will solder a few of the last components and do the physical assembly of it into the box. We have tried building little kits in the past and it is really easy to underestimate the fine motor control that you need for simple soldering. We did not have a great deal of success previously so I know that I will need to have lots of the fiddly soldering already done for them. I’ve not done this with students yet but might run a little weekend workshop to see how people get on with it.

Thank you for looking over the code. Sorry about my rookie error missing the libraries. I will list them in the sketch itself. It is really helpful to have that pointed out. The libraries used are Mozzi (Tim Barrass), FastLED (Daniel Garcia), Encoder (Paul Stoffregen) - for rotary encoder.

I can’t see that Event.h - There is #include <EventDelay.h> which is part of the Mozzi library (I am using 2.0.1)

Originally I looked at Github. I’ve used lots of other peoples work on Github and would like to have this project properly documented on there but it was a bit of a steep learning curve. Perhaps I will get my head around it for a summer project.

When I am happy with everything, I might well put it on instructables. Perhaps I will see if any of the students would like to help document it. Thanks for the feedback - do let me know if you get to the bottom of the Event.h issue.

2 Likes

I’ve tried to compile the code and used a code beautifier to adapt the formatting of the code a bit more as I am used to. Formatting is important, because that makes the code easier to read and maintain, and I’m afraid I struggled with the original in certain spots.

I’ve used Best C++ Formatter and Beautifier for this. I tried to do it by hand at first, but you can’t beat a site like that in speed.

You are absolutely right about the motor control needed to do some soldering and even inexperienced adults struggle with picking it up. I’ve seen several examples of that at the local Repair Cafe.

I included the library by Paul and now the code compiles ! But there a few compiler warnings.

I would like to suggest you switch on all warnings in the IDE you use. In the arduino ide → preferences → show verbose output during → tick compilation here.

You will then find warnings about statements like this one:

currentSequence == 1;

which is probably meant to be:

currentSequence = 1;

and unused variables etc. Those are better left away, to prevent code clutter.
You will also get warnings concerning unused variables which might appear to be incorrect, like this one:

src/main.cpp: In function ‘void setup()’:
src/main.cpp:466:8: warning: unused variable ‘scaleMode’ [-Wunused-variable]
** byte scaleMode = SCALEMODE_MAJOR;**

It appears the variable scaleMode is declared in setup as a local variable AND as a global variable at the beginning of the code. You probably meant to declare scaleMode only once. So the assignment in setup() of scaleMode has no effect outside of setup(). That is probably not what you intended the assignment statement to be for.

The warnings might also suggest to add some brackets in statements like:

(timeSinceLastClock << 2 + PULSE_LENGTH))

which is a bit more ambiguous than:

((timeSinceLastClock << 2) + PULSE_LENGTH))

Which means we shift first and then we add PULSE_LENGTH, unless you meant to shift (2 + PULSE_LENGTH) steps?

This is a readability issue, so if the statement does what it should do and you are fine with it, then you need not change it.

Remember that ultimately the compiler does not know what you meant to happen.

These warnings are very helpfull and although there are sometimes an overwhelming number of them, it is always, always worth your while to read them and maybe do something about them.

To my surprise I can’t reproduce the Event.h issue after installing the Stofregen library. So no worries there.

I wish you lots of succes with this project and I hope you will find the time to let us know how the workshop went (include some pictures!).

2 Likes

I am incredibly grateful for all this. I will follow all of that advice. That is a great pointer for tidying up my code - which does need a bit of work.

2 Likes

If at all possible or permissable a video of the teaching event would make a great watch or as @Jos suggested a write up in instrctables. Great stuff!

2 Likes

Looks great. Amazing how much you could squeeze out of a nano by using the LED matrix. Just a small suggestion for the hardware, perhaps protect the clock input from voltages above 5V or below 0 by using a couple of clamping diodes?

1 Like

Thanks for the suggestion K.ostas. I did think about this and If make a version for my stalled DIY eurorack project then I think I would do that but I for the school project then there is not going to be anything else that runs above 5v the kids might connect. Originally I did not have the resistor on the clock input but I found that it was fine all the time the Arduino was plugged in to a power supply, if it was connected to the clock in but not connected to a usb, some of the LEDs would light and the analogue input would burn out. That problem was fixed with the resistors on the clock in. However I’ve just realised looking at the layout.just now that the BOM and the schematic are correct but the component codes. R1, R2 etc on the stripbboard layout don’t match. I will correct and upload a new version tomorrow.

2 Likes

This is because you likely exceeded the current of the internal protection diodes (I think 1mA). I think that the external clamping diodes might have prevented that, although I am not sure. The resistor limits the current, but does not inherently protect from overvoltage. You already know that, I am just writing for the sake of the discussion in case anyone else is interested!

You must teach very well behaved kids!

2 Likes

The internal diodes will give some overvoltage protection, but only if there’s a resistor to limit the current. As @K.ostas notes, the internal diodes can handle only a small current, though, so if possible input voltage is large enough and the resistor is small enough that could spell trouble which external diodes, with a higher current limit, would fix. If, though, your setup is such that anything outside the 0 to +5 V range will never be plugged in, a ~10k resistor together with the internal diodes should be enough.

3 Likes