Arvinylo - song info for vinyl records

Hi everyone,

i'm not only new to this forum but also an Arduino noob. But since I am about to finish my Dipl.Ing. in Technische Informatik (Computer Engineering) at the RWTH Aachen University, i'm no complete stranger to electronics an coding, as it is. :wink:

So my first project (except for the usual blinking lights experiments) is the "Arvinylo". What is it supposed to do? Well, I am a huge fan of vinyl records. Actually I've got more of them, than I own CDs. As a result the first idea that came to my head thinking about what I could do with the Arduino was to make some gimmick for my turntable. The idea has now evolved for about a week and the concept is finished.

The Arvinylo is supposed to provide all the information a usual mp3 player does, including playing time, track number, title, artist and album. On the hardware side, there is the Arduino with Ethernet Shield/SD reader, a 16x2 LCD, the ps/2 version of the CueCat, a 3,5mm jack for receiving the looped through audio signal (from amp tape out, and probably some kind of button interface for simple control.

How does it work? The barcode scanner provides the EAN-Code of the record one wants to listen to. If played before, the required information is already on the SD card. If not, a connection to a webserver hosting a php script for retrieving information from a music database website is created. Information from the web is transmitted in little portions during playback for both not filling the memory up and convenience of not needing to navigate through a large array or such.

For synchronisation the "plop" of the needle sliding in the groove is used. In a time window calculated from the length of the active song, the Arduino listens for silence (pause between songs) and skips to the next song. The second "plop" at the end of the record (i have turntables with automatic limit stop) is used to detect the end of the record side. Whatever information is wanted can be displayed on the LCD. To discern side A from B, it is assumed that after reset side A will be played first and sides will be alternating (ABABAB...) from that point.

Current state:
As I am waiting for some hardware to arrive, the only things working so far are the php script for retrieving the song information and the quite robust pause detection.
I think the rest will not be a great problem, as there are nice libraries for lcd and ethernet both. Interrupting could be a challenge, but i am quite optimistic. Hardware should arrive soon (probably tommorow) so an update will come shortly.

greetings, Max

I had the same idea actually (also a vinyl lover) but didn't get as far as you.

Sounds good. Keep us updated.

Ok, a little update.

Yesterday the hardware arrived. In fact, the only thing still missing is the CueCat, still on its way from the USA.

After some frustrating attempts to let the arduino connect to the internet (now I know, that things like #define HOST "www.url.com" do not work and do not give an error or even a warning), information retrieving is now working as it should. Today, I will connect the Display an start writing the framework for sync with audio and stuff.

Hi folks,

been doing some tinkering on the weekend. Got the LCD up and running, though it seems I accidently killed the backlight, so I'm currently looking for a new one. Anyway, connecting to the php script, retrieving record information and displaying is working. Next, I'm gonna clean up my code a little bit, going for class based so I can do the interrupting stuff for track changing nice and neat.

Another idea has popped into life in my head. One of my turntables has got dedicated servo for moving the arm, so with an angle transmitter hooked up to it one could calculate the postion of the track changes: we have a well defined rpm number (33 1/3 s^-1), the angle and the length of each song (from the database), that's enough information. So, assuming constant groove density, there is the possibility of implementing the complete functionability of a CD player. When my original idea is working, that's where I will go. :smiley:

greetings, Max

cool idea, Max.

I had an idea similar to your last thought.. but I am not far enough in my learning to make fast progress on this. it was just something for me to ponder.

My turntable is a Sony PS-X65; your description makes me wonder if you have a similar product. The X65 has an optical encoder for tracking arm position but it is only used at the start.

I have a vague recollection that in the 80's there may have been a turntable that could optically sense the gap between tracks as the tonearm moved over them. In theory you could then quickly scan a record, pick up the tracks and possibly identify the LP by it's signature of track spacing (instead of the bar code)

I haven't looked yet but if this mythical device existed there would be a patent out there and it would explain how to do it.

My project so far just has me repairing the turntable to get it to nominal operation.

Interesting idea. In case my version does not work, that's definitly an alternative. The only disadvantage is you would have to disassemble the tone arm completely for installing the optic system and the additional wires.

Or you could just attach a gray-scale disk to the pivot of the tonearm and read it with a slotted optical switch.
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1284943121

Ronny, the turntables have the optical switch built into them. Even in 1980 this technology was available. The problem is that the machine does not know where to go to without some clever hardware or software.

I researched the idea of detecting the tracks with a photo detector. it's not very difficult to find the patents... but it appears it was quite a trick back then and would not be trivial. As an example, one of the machines had a user-controlled sensitivity adjustment and one of the patents tried to deal with the fact that some vinyl albums are red instead of black.

As metalmax suggested it might be pretty ugly putting extra stuff on the tonearm if this is not part of the original design. I think he may have had a better idea to start with - using known track times.