Daniel's Weblog
Posts Tags Colophon
About

Tags / Raspberry Pi

Converting records with a USB turntable and Raspberry Pi Peviously I left a laptop sitting by my record player running Audacity but that was inconvenient so I stuck a Raspberry Pi over there and run these commands via SSH.

I am not an expert, I’m just using the equipment I have so please don’t interpret this as “the best way to convert records”

Components:

  • Record player with USB output (AT-LP120XUSB)
  • Raspberry Pi (Using a 3B but probably anything will work)
  • NAS

Prior Art:

  • Hi-Fi analog to digital with IceCast
    Utilizes IceCast to stream audio around your network. Involves running several services and is primarily focused on streaming.

  • PiDeck
    A system for DJing with your turntable, not for converting

  • Z-LiveRec
    This is an interesting piece of software but is built as a desktop application. I’d rather run everything from the command line. If it had a web interface I would consider purchasing it.

  • Ripping Vinyl Records on a Raspberry Pi
    This is very close to what I am doing! Ed describes some issues writing to his local storage and file server but I haven’t noticed anything similar. Perhaps he was using an older Raspberry Pi? (I’m using a Raspberry Pi 3)

My Setup:

  1. Connect Raspberry Pi to record player via USB

  2. Ensure mount directory exists and mount the NAS via SMB

    mkdir -p /tmp/nas;
    sudo mount.cifs //nas.local/home /tmp/nas -o user=daniel,nounix,uid=$(id -u),gid=$(id -g)
    
  3. Change to the relevant directory

    cd /tmp/nas/my_new_record
    
  4. Identify the correct audio device

    arecord -l
    

    I’m going to be using card 2, device 0 which is indicated on the second line:

    **** List of CAPTURE Hardware Devices ****
    card 2: CODEC [USB AUDIO  CODEC], device 0: USB Audio [USB Audio]
        Subdevices: 0/1
        Subdevice #0: subdevice #0
    
  5. Begin recording

    # Start a tmux session so the recording continues even
    # if the SSH connection gets disconnected
    tmux;
    
    sudo arecord --device "hw:2,0" -vv --vumeter=stereo -c 2 -f "S16_LE" -r 44100 raw_audio.wav;
    

    Explanation:

    • --device "hw:2,0" This means “card 2, device 0” that we found in step 4
    • -vv Double verbosity. Activates the VU meter
    • --vumeter=stereo Shows two channels in the VU meter
    • -c 2 Record two channels
    • -f "S16_LE" Record in Signed 16-bit little endian. I picked this simply becuase it matched the Audacity default that I was previously using
    • -r 44100 record in 44.1 kHz. Again, picked because it matched the Audacity default
  6. Finish recording by pressing ctrl-c on the arecord command

Future work:

  • Detect the end of the record / the record getting stuck and send a Pushover notification
  • I thought about automaticallyrecording when the Pi detects a record playing but I decided that it would be too confusing to have to deal with unlabeled files