Close
0%
0%

VinyGo, a stereo vinyl recorder

For artists, vinyl stores, recording studios, or music lovers

Public Chat
Similar projects worth following
Music has accompanied men across the time, and artists transmit messages or emotions through their music. Studies show that music gives us motivation and pleasure. Promotes memory and helps to make sports. Reduces stress, anxiety, and pain. An enjoyable support to listen to music is the vinyl. Because the object is real, it has defaults, and it gives us the possibility to arrange a space to oneself in our house. Handling a vinyl, it's a true moment of happiness.

The goal of this project is to refresh the gramophone concept to build a vinyl recorder, easier, more accessible, and affordable. Is made for artists, vinyl stores, recording studios, DJs, or music lovers. Lot of music bands mistakenly think that a custom vinyl is expensive or is only for big music productions. VinyGo project will show you that you can create your own vinyl easily for less than 4 dollars/vinyl.

Logs section summary:

Functional diagram

Electronic

The PCB

Mechanic V1

Mechanic V2

Software

Flash LCD Nextion

Flash and build ESP32

List and cost of components

Getting started and functioning

1) Overview

1.1) Opportunity for vinyl recorders

Currently, vinyl disc industry facing to a shortage of polymers. This is due to the fire at the Apollo Masters factory and the covid-19 sanitary crisis. Order delays are very long and the prices have increased about 30% to 40% for industrial vinyl pressing. This leads to an almost impossible access to the small customer because the biggest customers are delivered before. It is therefore the small groups of music which have difficulty in making their own small series of vinyls. Vinyl recorders can solve this problem and make album creation accessible to small music bands (20 or 50 copies).

1.2) What vinyGo offers

Refresh old-fashioned vinyl technology by creating your own vinyls for:

  • DJs: Preparing your mixes on vinyl before your party,
  • Artists and music bands: Record your album on vinyl for you and your family, 
  • Vinyl stores and small recording studios: Offers a vinyl engraving service to your customers, 
  • Music lovers: Your favorite song does not exist on vinyl so create it.

1.3) How a vinyl recorder works

Burn sound on a matrix (vinyl) 

It is the engraving of the audio signal by microgrooves on a matrix. Sound recording is in real time. A diamond, connected to two speakers (for stereo), vibrates above the blank lacquer which turns at 33 or 45 turns. The vibration is made by the speaker when the audio signal is played. This means that a groove is the exact representation of the speaker membrane vibration.

Mastering & Cutting

Before cutting the vinyl you have to apply some equalization like an iRIAA to the audio file. For the “cutting” you need to use a specific engraving diamond with an angle of 90 °.

1.4) Video

Note: The video sound is the sound of vinyl!

Sound extract "eye of the tiger" less than 20sec to respect copyright, and show the sound quality:

The proof:

2) Sagittal diagram


2.1) Description of the links

Note: VinyGo sound mastering can be done by software or by an extended board. Use L4 link if you use sound mastering by software or L2/L3 if you use a VinyGo sound mastering board. In this project presentation we use sound mastering software.

2.1.1) User

L1/L1’ : 

  • Select a playlist of music on your media player
  • Configure the sound mastering
  • Configure the MIDI commands of your media player for the start, middle, and end groove

L6/L6’ :

  • Input/output to use the test mode
  • Input/output to use the calibration mode
  • Input/output to use the configuration mode
  • Input/output to use the update mode
  • Input/output to use the manual mode for the cutting vinyl
  • Input/output to use the automatic mode for the cutting vinyl

L11 :

  • Power on/off the vacuum cleaner

L12 :

  • Turntable configuration (33, 45, 78TRM)

L13 :

  • Adjust the sound volume

2.1.2) Media player

L1/L1’ :

  • Inform the user of the playlist select
  • Inform the user of the MIDI commands select
  • Inform the configuration of the sound mastering

L2 :

  • Useless (see note above)

L7/L7’ :

  • Allows to send MIDI commands to the vinyGo controller to automatically change parameters (like speed motor). 

L4 :

  • Sound signal with mastering

2.1.3) ViniGo system

2.1.3.1) ViniGo controller

L6/L6’ : 

  • Inform the user of the current mode
  • Inform the user of detected errors
  • Depending on the mode, inform the user of the recorder time, position of the engraving head, diamond heating, state of the sensors, ...

L7/L7’ :

  • Send MIDI commands to the media player

L9/L9’ :

  • Get the information of the sensors
  • Raising and lowering the head automatically

2.1.3.2) ViniGo sound mastering

L2 :

  • Sound signal without mastering (useless, see note above)

L3 :

  • Sound signal with mastering...
Read more »

VinyGo.zip

In this zip file: All 3D files. all hardware files.t the full code for the WROOM32 MCU module and LCD, tools for the project.

Zip Archive - 38.92 MB - 08/29/2021 at 20:30

Download

  • 20 × Worm (M4)
  • 1 × Worm chicago (5mm)
  • 2 × Tweeter 120 Watt minimum
  • 1 × Strong glue (epoxy)
  • 1 × Lacquer cutting diamond

View all 14 components

  • ​ Some news!

    mras2an10/09/2021 at 09:52 0 comments

    Currently, three peoples are use the VinyGo board on their own vinyl recorder.

    On top of that, one company has adapted its vinyl recorder to use it with the VinyGo board.

    Two people from the Hackaday community started building all the VinyGo system. I am looking forward to see photos. One of them found a synthetic diamond manufacturing company for vinyl recorders. The costs of the synthetic diamond is about $ 12 instead of $ 100 (but we have to rework it). However, this is revolutionizing and makes the price of the VinyGo system cheaper.

    A friend of mine has also started to build VinyGo system.

  • 11) Getting started and functioning

    mras2an08/29/2021 at 20:14 0 comments

    You have to clone VinyGo git repository: git clone https://github.com/Mras2an/VinyGo.git

    11.1) Hardware connection

    11.2) Compile and program the code

    See log 9) Flash and build ESP32

    11.3) First boot

    1 - Power on the VinyGo board, You see the LCD test menu.

    2 - Click on it, and check all the tests (sensors, and commands). If it OK return to the menu

    3 - Go to the calibration menu and make your calibration for 7, 10, and 12p vinyl.

    4 - The system is ready, enjoy :-)

  • 10) List and cost of components

    mras2an08/29/2021 at 19:49 0 comments

    PC

    ~ 200 $

    Turntable (you have to use direct drive whit high torque and not belt drive)

    ~ 250 $

    Mix table

    ~ 50 $

    Ampli

    ~ 50 $

    PreAmpli

    ~ 50 $

    VinyGo board with motors, sensors and LCD

    ~ 117,37 $

    VinyGo mechanic with diamond and 120W audio tweeters (if you have 3D printer)

    ~ 230 $

    Cables (RCA, MIDI, Jack)

    ~ 30 $

    Total

    977,37 $

  • 9) Flash and build ESP32

    mras2an08/29/2021 at 19:44 0 comments

      Cf tuto: Get Started esp32 — ESP-IDF Programming Guide latest documentation

    9.1) On GNU/Linux

    $ cd VinyGo/03_Software/ESP32/

    $ export IDF_PATH=$PATH/esp-idf/

    $ export PATH="$PATH:$HOME/Project/esp32/xtensa-esp32-elf/bin"

    $ make

    9.2) Flash ESP32

    9.2.1) On GNU/Linux

    link on binaries: https://github.com/Mras2an/VinyGo/tree/master/03_Software/ESP32/build

    $ python esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size detect 0x1000 $PATH/bootloader.bin 0x10000 $PATH/VinyGo.bin 0x8000 $PATH/customPart.bin

    9.2.2) Via Wifi (only if you have already done 9.2.1)

    ( https://www.python.org/downloads/release/python-2712/ )

    • Click on update in the VinyGo update menu (lcd).
    • Connect your PC at wifi “HRC” password “HRC2yBqT”

    On your PC execute the commands:

    GNU/Linux

    $ python  $PATH/update_firmware.py 192.168.52.1 $PATH/VinyGo.bin

    Windows

    C:\Users\Desktop\VinyGo>py update_firmware.py 192.168.52.1 VinyGo.bin

    or

    C:\Users\Desktop\VinyGo>python update_firmware.py 192.168.52.1 VinyGo.bin

    connecting to 192.168.52.1...

    connected, socket = <socket._socketobject object at 0x02582EA0>

    sending 'start OTA' command to target...

    sending fragment 1 of 125 (4096 bytes)

    ...

  • 8) Flash LCD Nextion

    mras2an08/29/2021 at 19:37 0 comments

    - Open project with Nextion editor (link: https://github.com/Mras2an/VinyGo/tree/master/03_Software/LCD_Nextion)
    - Connect the USB/RS232 cable at PC and on Nextion LCD (Rx, Tx, GND)
    - In Nextion editor click on Update

  • 7) Software

    mras2an08/29/2021 at 19:32 0 comments

    There are two micro-controllers on VinyGo. The master uses an ESP32, and the slave uses a stm32 for the HMI on the LCD touchpad. Both communicate via an UART protocol.

    It can be downloaded on the VinyGo git project. https://github.com/Mras2an/VinyGo/tree/master/03_Software

    7.1) UART protocol

    I created an UART protocol for the slave and master communication. Each frame is made as follows:

    Frame example to enter in system mode: 0x55 42 53 06 53 79 73 74 65 6d 54

    Start byte

    Header byte

    Command byte

    Data size

    Data

    End byte

    0x55

    0x42

    0x53

    0x06

    0x53 0x79 0x73 0x74 0x65 0x6d

    0x54

    7.2) IHM on LCD touchpad

    I chose a Nextion LCD touchpad and Nextion editor v0.53. With this LCD screen, we can design an HMI simply with drag and drop. Each text and button uses the UART protocol seen above.

    7.2.1) Manual mode

    With the manual mode we can adjust all the parameters of the burner one by one, like motor speed, stylus heating.

    7.2.2) Automatic mode

    With the automatic mode we just need to choose the vinyl size (7", 10", 12") and the time of your playlist. After that all is made automatically. The MIDI commands received in this mode increase or decrease the motor to create the start, middle, and end groove on the vinyl. 

    7.2.3) Test mode

    If you have operating issues this mode is for you. You can test all sensors and commands. 

    7.2.4) Update mode

    Very useful to send an update on VinyGo by OTA. VinyGo create its own AP, once connected to it you can send new software with a python tool (https://github.com/Mras2an/VinyGo/tree/master/03_Software/Utils)

    7.2.5) System mode

    System information like RAM, AP, ...

    7.2.6) Calibration mode

    VinyGo board is designed for several mechanics, so if you have your own mechanic you can use this mode to define the start of a 12, 10 or 7p vinyl.

    7.3) Master

    7.3.1) WROOM-32 module

    I chose the Wi-fi WROOM-32 module because this module has a nice memory capacity, a simple and complete SDK with a lot of examples. It is also very practical to update the binary by OTA to avoid having to connect wires during the development phase.

    7.3.2) SDK-IDF

    I chose SDK-IDF on the v3.1 branch. The SDK-IDF has a lot of contributors. It is available on github: https://github.com/espressif/esp-idf.git

    7.3.3) Flash partition

    To allow the update of the system via the wifi we need more partitions. Espressif proposes the possibility to create a cvs file to define the addresses. Here is the one of the VinyGo:

    # Name, Type, SubType, Offset, Size, Flags

    otadata,data,ota,0xd000,8K,

    phy_init,data,phy,0xf000,4K,

    factory,app,factory,0x10000,1M,

    ota_0,app,ota_0,0x110000,1M,

    ota_1,app,ota_1,0x210000,1M,

    nvs,data,nvs,0x315000,500K,

    So we have a partitioned memory as follows:

    |   Addr       |   Binaries            

     -------------------------------------

    | 0x001000 |  Bootloader.bin    

    | 0x008000 |  Partitions.bin      

    | 0x010000 |  Factory.bin         

    | 0x110000 |  OTA_0.bin          

    | 0x210000 |  OTA_1.bin          

    | 0x315000 |  NVS (500Ko)     

    | 0x3F0000 |  Free                    

    7.3.4) The architecture

    7.3.4.1) The Espressif SDK

    The SDK used is the SDK-IDF on the v3.1 branch available on github at (https://github.com/espressif/esp-idf). This is the official development system of the ESP32 chip.

    7.3.4.2) The drivers

    Used for different hardware interactions such as motors, or the functionality of the WROOM32 module (Gpio, wifi, OTA, UART, PWM, ...).

    7.3.4.3) The HAL and OSAL

    HAL and OSAL allow simple porting of VinyGo to another SDK, OS, or hardware platform.

    7.3.4.4) The application...

    Read more »

  • 6) Mechanic V2

    mras2an08/29/2021 at 19:26 0 comments

     All these STL files can be downloaded on the VinyGo git project. https://github.com/Mras2an/VinyGo/tree/master/01_3D%20Modeling

    This mechanic is in the testing phase, this is why I am not presenting it at the 2021 Hackaday price. It just to show that the project is evolving for a better version. it is optimized to reduce the number of 3D parts.



  • 6) Mechanic V1

    mras2an08/29/2021 at 19:23 0 comments

     All these STL files can be downloaded on the VinyGo git project. https://github.com/Mras2an/VinyGo/tree/master/01_3D%20Modeling

     This mechanic works well, it is a proof of concept but we have lot of small 3D pieces to print.

    6.1) Structure

    6.1.1) Standard mechanical pieces

    Standard pieces for the structure can be purchased on the internet, here is the list:

    • Profiled aluminum 40x4cm
    • Worm screw 50cm, (diameter : 8mm)
    • Ball bearings
    • Steel rod 50cm, (diameter : 8mm)
    • Worm (M4)

    6.1.2) 3D pieces example

    6.2) Head

    6.2.1) Standard mechanical pieces

    Standard pieces for the head can be purchased on the internet, here is the list:

    • Worm chicago (5mm)
    • Worm (M4)
    • Tweeter 120 Watt minimum
    • Strong glue (epoxy)
    • Lacquer cutting diamond
    • Spring

    6.2.2) 3D pieces example


    6.3) Stylus

    This is the most expensive part, because we need a cutting “diamond”. It can be purchased on the internet for more than 100$. For a cost reduction, some people use Roland blades, around 5$ but it is not the same sound quality.

    Diamond

    Roland blade


  • 5) The PCB

    mras2an08/29/2021 at 19:06 0 comments

    All schemas and PCB (gerber), can be downloaded on the VinyGo git project. https://github.com/Mras2an/VinyGo/tree/master/02_Hardware

    The PCB does not have any particular constraint except to respect the "hardware design" proposed by Expressif to have the best radio performances. “make sure that the module is not covered by any metal shell. The antenna area of the module and the area 15 mm outside the antenna should be kept clean”.


    5.1) PCB components list (Price in $)

  • 4) Electronic

    mras2an08/29/2021 at 18:57 0 comments

    All schemas and PCB (gerber), can be downloaded on the VinyGo git project. https://github.com/Mras2an/VinyGo/tree/master/02_Hardware

    4.1) Structural diagram

    4.1.1) FS1.1: Power supply

    Create power for all features on VinyGo Board. Input voltage 12V 5A, output voltage, +12v, +5V, +3.3V, 0V.

    DC1: 12V connector

    D19: Protection diode.

    R64, LED4: Bleu LED,information on the powered board.

    C1, C2: Polarized chemical capacitors. They perform the filtering, and allow a decoupling in case of power supply

    C2, C16, C3: Plastic capacitor, serves as an anti-parasite to suppress high frequencies (it is recommended in the technical documentation).

    U1: 5V regulator, it allows to regulate the input voltage 12V DC in a voltage of 5V DC. According to the manufacturer's documentation of the 78XX, a minimum input voltage of the output voltage plus Vdrop (2V) or Ve = Vs + Vdrop = 5 + 2 = 7V minimum is required for proper operation.

    U4: 3.3V LDO, it allows to regulate the input voltage 5V DC in a voltage of 3.3V DC.

    4.1.1.1) Calculation of a radiator

    Pmax = (Tj – Ta)/RTHja = (125-25)/65 = 1,5W

    Supposition for 3V3 WROOM32: 90mA, other 50mA max

    Isystem = 90+50 = 140mA

    Putil(3.3V) = Isystéme*(Ve-Vs) = 140*10^-3*(12-3.3) = 1,218W

    Putil<Pmax.

    Supposition for 5V: Servo motor 120mA, Sensors 40mA, MIDI 10mA,  other 60mA

    Isystem = 120+40+10+60 = 230mA

    Putil(5V) =  Isystéme*(Ve-Vs) = 230*10^-3*(12-5) = 1,61W

    Putil>Pmax.

    The utility of a radiator for regulators 3V3 is not essential at room temperature. 

     But we need a radiator for 5v.

    4.1.2) FS1.2: LCD touch screen

    Display digital information for the user and make order acquisition by the microcontroller.

    Q1, R14, R14: Convertor 3.3V to 5V

    R18, R19: Convertor 5V to 3.3V

    U5: Nextion HMI display connects to peripheral MCU via TTL Serial (5V, TX, RX, GND) to provide event notifications that peripheral MCU can act on, the peripheral MCU can easily update progress, and status back to Nextion display utilizing simple ASCII text-based instructions.

    U8: 5V regulator, it allows to regulate the input voltage 12V DC in a voltage of 5V DC. According to the manufacturer's documentation of the 78XX, a minimum input voltage of the output voltage plus Vdrop (2V) or Ve = Vs + Vdrop = 5 + 2 = 7V minimum is required for proper operation.

    4.1.2.1) Calculation of a radiator

    Pmax = (Tj – Ta)/RTHja = (125-25)/65 = 1,5W

    Supposition for LCD 5v: 130mA max

    Isystem = 130mA

    Putil(5V) = Isystéme*(Ve-Vs) = 130*10^-3*(12-5) = 0,91W

    Putil<Pmax.

    The utility of a radiator for LCD is not essential at room temperature. 

    4.1.3) FS1.3: Sensors

    Detection of engraving head positions.

    P13, R11, R12: Connector for hall sensor to detect end of 7p vinyl.

    P7, R3, R10: Connector for hall sensor to detect end of 12p vinyl.

    P12, R9, C18: Connector to detect if the engraving head is up or down

    P8, R4, C8: Connector to detect if the tray is on begin position.

    P9, R5, R6: NOT use

    4.1.4) FS1.4: MIDI

    Technical standard that describes a communications protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, computers, and related audio devices for playing. 

    Q16, R45, R54: Convertor 3.3V to 5V

    R55, R59: Convertor 5V to 3.3V

    MIDI1, MIDI2, Connector In and Out for MIDI.

    R33, D9, U6, U7: Convertor of MIDI to Rx UART.

    R35, UT: Convertor of Tx UART to MIDI.

    4.1.5) FS1.5: Uc

    Ensures through a programmed treatment (software) the acquisition, processing and return of information. It communicates with the motors(PWM), sensors(GPIO), LCD(UART), MIDI commands(UART), and offers inputs / outputs to add additional functionality like VinyGo sound mastering.

    R1, C4, P2: Allows a reset on the wroom32.

    C5, C6: Used to filter high and low frequencies.

    P4: Allows programming the wroom32 via a UART.

    P3: Set wroom32 to programming mode.

    4.1.5.1) Definition of the inputs, outputs of the micro-controller....

    Read more »

View all 11 project logs

  • 1
    Assembly left side
  • 2
    Assembly right side
  • 3
    Assembly for version 1


View all 7 instructions

Enjoy this project?

Share

Discussions

Adam Quantrill wrote 09/10/2021 at 10:40 point

Just a thought but if you cut at a lower speed could you get better quality results? As it's easy to slow down the playback of the audio file with a computer.

  Are you sure? yes | no

mras2an wrote 09/10/2021 at 12:03 point

Hello, yes if I cut at a lower speed I can modify the sound on the vinyl.

  Are you sure? yes | no

mras2an wrote 09/11/2021 at 10:29 point

After reflection, I think you need a faster speed to get better quality. This is why there are maxi 45TRM?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates