Skip to the content
PCBKitNew board
2 layers67.3 × 74.5 mmVgm teensy, the printed circuit board in 3D

Hardware music player for YM2612 and SN76489

Size
67.3 × 74.5 mm
Copper layers
2
Thickness
0.44 mm
Parts
41
Nets
88
Pads
201
Tracks, vias
442, 12
Pours
2
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
8 Jun 2021
Updated
6 Jun 2022

Overview

Vgm teensy is an open-source printed circuit board by ldursw, from the ldursw/vgm-player repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 67.3 × 74.5 mm with 41 parts on 88 nets, routed with 442 tracks and 12 vias.

It is built around the TL072, 74HC595 and AMS1117-3.3, with the L7805 and TXS0108EPW among its other parts. Its parts include 12 capacitors, 11 resistors, 9 ICs, 3 connectors and 1 inductor. It belongs with the NXP (LPC, Kinetis, i.MX RT) boards of this library.

Main components

5

README

README.md

VGM Player

This project allows VGM (Video Game Music) files from Sega Master System, Sega Game Gear, and Sega Mega Drive/Genesis to be played on real hardware using the YM2612 sound chip and the Teensy 3.6 board.

Features

  • Support for Master System, Game Gear, Mega Drive/Genesis
  • Standalone player using the SD Card slot
  • Can be controlled by a computer using the USB port
  • Correct volume for PSG and FM
  • Integration with emulators available
  • Supports emulated and discrete SN76489
  • Uses the Mega Amp circuit for amplification
  • Hardware support for Teensy 3.6 and Arduino Due
  • Player support for Windows and Linux (experimental)

Supported boards

BoardSD CardStreamReal PSGEmulated PSG
Teensy 3.6✔️✔️✔️✔️
Arduino Due❔✔️✔️✔️

✔️ Fully supported
❔ Not tested

Demo

Difference between other implementations

PSG

One of the biggest differences between this project and other implementations is that an emulated PSG is used instead of the discrete SN76489. It is widely known that the Sega version has some differences mainly in the noise channel.

For example, most games get a weird artifact instead of the expected noise channel. After Burner II has a constant tone on a discrete chip whereas on emulation it sounds right.

When using an emulated PSG the microcontroller will emulate the chip and the output is sent to the DAC0 pin at 44.1 kHz.

If you want to use a discrete PSG anyway, all you have to do is uncomment -DUSE_REAL_PSG on hardware/platformio.ini, connect the D0..D7 lines from the shift register to the SN76489 and connect /WE to pin 29 though a voltage converter.

Remote control

Another difference is that the hardware can be controlled via a companion application written in .NET Core that accepts a generic input class and sends to the hardware via USB and also displays the current state on screen.

GUI

There are 3 available input methods. VgmFile reads standard .vgm and .vgz files. VgmPipe creates a named pipe vgmstream that accepts commands from other applications, such as emulators. VgmPCM streams 44.1 kHz signed 8-bit mono PCM files to the chip.

Compiling and Running the project

To compile the code for the hardware you will need PlatformIO. You can use the CLI or an IDE with extension support such as Visual Studio Code. After installing PlatformIO just open the hardware directory and upload the code to the board.

To compile the player application you will need the .NET Core SDK. You can use the CLI or an IDE such as Visual Studio Community or Visual Studio Code. On Linux you may have to install the libSDL2 package.

License

All files in this repository are licensed under GNU General Public License Version 3.

Credits

Thank you very much for all these awesome people

Parts

41
QtyValueFootprintReferences
3100nCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC10, C11, C12
310uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1, C2, C7
2100kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR24, R25
210uCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC3, C6
21uCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC4, C5
2220Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR13, R14
22k2Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR7, R9
247pCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmC8, C9
24k7Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR12, R15
2MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2
2TestPointTestPoint:TestPoint_Pad_D1.0mmTP1, TP2
1100uproj:Choke_CD105L1
1330Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR8
1470Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR20
1680Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR21
174HC595Package_SO:SOP-16_3.9x9.9mm_P1.27mmU3
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U9
1Adafruit_Si5351_Moduleproj:Adafruit_Si5351_ModuleU2
1AudioJack3Connector_Audio:Jack_3.5mm_Lumberg_1503_07_HorizontalJ1
1Barrel_JackConnector_BarrelJack:BarrelJack_HorizontalJ2
1Conn_01x04_MaleConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ3
1Jumper_2_OpenConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP2
1L7805Package_TO_SOT_THT:TO-220-3_VerticalU8
1TL072Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU6
1TXS0108EPWPackage_SO:TSSOP-20_4.4x6.5mm_P0.65mmU5
1Teensy3.6proj:Teensy35_36U1
1YAAJ_DCDC_StepUp_SX1308proj:YAAJ_DCDC_StepUp_SX1308U7
1YM2612Package_DIP:DIP-24_W15.24mm_SocketU4

Questions

How big is the Vgm teensy PCB?

It measures 67.3 × 74.5 mm and has 2 copper layers, 0.44 mm thick.

What parts does the Vgm teensy use?

41 parts, built around the TL072, 74HC595, AMS1117-3.3 and L7805. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Vgm teensy KiCad files?

From the ldursw/vgm-player repository on GitHub, at the commit this page was made from: the board is pcb/vgm-teensy/vgm-teensy.kicad_pcb and its schematic pcb/vgm-teensy/vgm-teensy.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Vgm teensy design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers150 × 150 mmDk2 00, the printed circuit board in 3D

    Dk2 00

    mattybrad/drumkid2

    140 parts12GPL-3.0
  • 4 layers71.1 × 99.1 mmQuad adsr, the printed circuit board in 3D

    Quad adsr

    JordanAceto/quad_ADSR_board

    PCB for a quad eurorack ADSR

    197 parts5
  • 6 layers100.1 × 112 mmPicones, the printed circuit board in 3D

    Picones

    WiiMake/picones

    In the last 40 years, technology has advanced to the point were what used to be done in hardware can now be done in software. This project uses an rp2350 to emulate a ROM chip on an NES Cartridge.

    59 parts1
  • 4 layers95 × 113 mmUsb gpio, the printed circuit board in 3D

    Usb gpio

    petersn/usb-gpio

    222 parts
  • 2 layers66 × 64.8 mmM48t59y pic18f, the printed circuit board in 3D

    M48t59y pic18f

    siliconvalleyar-oss/m48t59y_rpi_kcd

    Diseño de PCB en KiCad para interfaz M48T59Y (RTC/NVRAM) con PIC18F.

    23 parts
  • 4 layers63.9 × 82.6 mmCartridge 800xl 2, the printed circuit board in 3D

    Cartridge 800xl 2

    bvenneker/CHAT64

    Chat64 for Commodore64

    21 parts
  • 2 layers145 × 100 mmShowerController, the printed circuit board in 3D

    ShowerController

    grserwe/KiCadToGCodeSvelte

    Convert KiCad PCB designs into CNC GCode for isolation-engraving traces on copper-clad board and drilling through-holes — entirely in the browser.

    22 parts
  • 2 layers94.5 × 74.4 mmAx58100-stm32-ethercat, the printed circuit board in 3D

    Ax58100-stm32-ethercat

    MetalMusings/MyOwnEtherCATDevice

    Documentation accompanying the "Make My Own EtherCAT device" video serie on Youtube.

    184 parts93