There is one final feature that will make it into the final firmware: automatic voltage reduction.
During playback in “live quartz mode”, MagicQuartz can reduce the motor voltage to reduce motor hum. I’ve worked on this due to request from a “future” user. I was sceptical at first if this has any benefit at all. But it has! My Dual 1219 is dead silent when running at 70 Volts! 🙂
Implementing this was a bit tricky. At such low voltages, the motor status detection (if the motor is turned on or not) is not properly working. During normal operation, MagicQuartz is using the current draw to determine the motor status, and at a dramatically reduced voltage, this becomes unreliable.
But in live quartz mode, MagicQuartz can rely on the optical sensor signal to determine the motor status. Whenever MagicQuartz detects a deviation from nominal speed (i.e. when the platter stalls or the turntable’s automatic start/stop funtions are in operation), it automatically boosts the voltage back to normal. This works very well.
I know you’re waiting for it – but I’m truly striving to construct the world’s best turntable speed box for you. The worst thing would be to sell a banana product (which has to mature at the customer). Or even with bugs. That’s why I’m still working on making the firmware perfect – in terms of features and bug testing.
Today, I’ve added a feature that allows MagicQuartz to remember the calibrated speed at the beginning of the record. When you turn the record or put another record onto your player, it will automatically resume to this speed.
You may ask, why. The position of the needle has an impact on the playback speed. When the needle moves towards the center of the record, there’s less friction, and MagicQuartz compensates this with a frequency change of about 0.04 Hertz (at 33.3333 RPM at 50 Hertz). This is not much, indeed, but very noticeable due to MagicQuartz fine timing resolution, and may confuse listeners. They want their records played back correctly from the very beginning, not having to wait for the firmware to correct the speed discrepancy.
In version 1.00, you will be able to set the parameter “SaveHzAtSec” to e.g. “60”, which means that MagicQuartz remembers the current speed calibration 60 seconds after the record has been started. MagicQuartz will automatically resume to this value when the motor has been switched off (e.g., if you turn or change the record). This value is automatically deleted when you change the parameters on the main screen. Of course this can also be disabled.
It’s this and other details that set MagicQuartz apart from other “speed boxes”!
I’m currently also optimizing the source code. I’m already using 98% of the available program memory (with more than 5200 lines of C code). This can lead to unexpected behavior of the firmware, and I need to do more testing. Duh!
During the last couple of months, I’ve been using my MagicQuartz prototype to see how well it performs (with firmware version 0.9). It does perform well! But there were some minor glitches. This evening, I’ve started to sort them out. Here are the current changes for version 1.0 (which will make it into the final product):
I’ve added a second standby timer. Now there is one for the motor being switched on and one for the motor being switched off. The first one should be set to e.g. 40 minutes (the maximum playback time of a record side), because you don’t want to go into standby while listening to your record. The other value can be set to e.g. 5 minutes.
MagicQuartz will not enter “live quartz mode” or it will leave it, if it thinks that the motor is currently not switched on. In version 0.9, it displayed an error message. Now there’s the possibility to override this warning and to tell MagicQuartz that the motor IS switched on. Normally, the motor status detection works just fine (at least on my Dual 1219), but your results might be different with other turntables (which draw less current). And there are crazy moments where MagicQuartz thinks that the motor has been switched off although it is not. For example, if you switch your turntable from 33 to 78 RPM in live quartz mode. This actually requires some tweaking of the setting in order allow this type of speed correction, but in such cases, overriding the detection of the motor status can be useful.
The third thing is related to “live quartz mode”. If you’ve read the manual, you know that MagicQuartz uses some very sophisticated programming to deal with measurement errors. The algorithms are very efficient to not have measurement errors any impact in the speed control. MagicQuartz uses a buffer to display the averaged speed measurements (which has NO impact on the speed regulation performance, as it is totally independent). Now, MagicQuartz will display “LIVE” in the upper right corner if it’s not buffering the values, and it will display the raw (un-averaged) RPM next to it, when applicable. It is now also possible to set a parameter “BufferWait”, which tells MagicQuartz to wait with the buffering if bad measurements have been detected.
This still needs some testing to see how this performs in daily use.
I will also update the documentation and maybe make another YouTube video about this.
Tomorrow I will continue to work on the second revision of the PCB and the 3D-printed case parts. Stay tuned for updates!
This new video is a comprehensive walk-through of the MagicQuartz firmware. It shows the basic “speed box” mode on the main screen, the live quartz mode, sensor calibration (to optimizie the optical signal pickup), the setup menu with e.g. the motor calibration and all security and quartz-related tweaking options.
MagicQuartz has captured high interest in 2015. The webpage has been accessed 5000 times from all around the world, with about 20 page loads per day. And it is currently being discussed in at least 5 audio forums. Thanks for all your interest, comments and feedback!
You’re probably wondering WHEN MagicQuartz will be finally finished. As you know, finishing the last bits is the hardest part. But I’m currently spending some time of my holidays to continue with this project.
I’m currently redesigning the PCB, as the initial version (rev. 0.1) had some minor issues. For example, there was an error with the display backlight connection (which required a “bodge wire” to fix it) and the resistor footprints were too small.
I’m currently building a second prototype based on this inital version, to (re-)identify all issues and to create the final parts lists. I will probably sell this unit on eBay, so prepare your pre-defined eBay searches for “MagicQuartz” … 🙂
I’ve just came across a serious problem that can be caused by the Arduino version. In the unlikely event of a blown amplifier chip, a short circuit on the USB bus could be caused. This may damage your computer (or just reboot it, as it has happened to me).
This problem can be circumvented by using a USB isolator circuit/adaper between your computer and the Arduino board.
Such isolators can be found on eBay for about 20$ – just do a search for “ADUM4160”.
I’ve updated the Arduino page and explain how to add a CNY70 optical sensor. This allows you to use the live quartz mode, where MagicQuartz monitors the current platter speed and corrects it accordingly.
I will also come up with additional instructions for the 10 bucks version soon. It produces an excellent sine wave, as promised. Give me a couple of days …
As you may have seen on the Arduino page, the sine wave quality with the Arduino Motor Shield is pretty poor. However, if you want to just run the MagicQuartz software to see if the real unit will be working with your turntable, I will come up with a new and very simple (and cheap!) solution that produces a very clean sine wave.
The whole thing consists of an Arduino Nano and a digital power amplifier. You can either use the L6203 (which is also used in the “real” MagicQuartz) or a more breadboard-friendly L6202 chip … and some boost caps and resistors. That’s all!
Below are some pics – please excuse the quality, they were taken with an el cheapo smartphone with a fixed focus.