Git Product home page Git Product logo

retrowave's Introduction

RetroWave

Build Status Release Status

Authentic sounds from vintage sound chips, on modern hardware!

Introduction

RetroWave is a hardware sound board series that uses vintage sound chips and works with modern hardware.

They were in shape of Raspberry HATs, stackable, hackable, can be used on tiny single board computers like the Raspberry Pi / Jetson Nano, and modern desktop computer with USB ports.

Since 2022-06, the original RetroWave series are no longer produced. You can read about what happened in this article.

The successors of the original RetroWave series is called the RetroWave Express series. They are available in discrete boards each with its own USB port. 100% software compatibility of the original RetroWave series is maintained.

For now, only the RetroWave OPL3 Express is available.

Hardware

For the information of the original RetroWave series, check the history.

Features

  • Minimalistic form factor and convenient USB-C interface
  • Designed with high-grade components for everyday use
  • Ultra-high bandwidth provided by hardware 8080 ports

Boards

OPL3 Express

Available on our official Shopify Shop.

Uses the Yamaha YMF262-M chip.

... And there will be more ... are there?

Software

The RetroWave OPL3 (Express) is supported by DOSBox-X. The support is also ported to 86Box by community.

For experienced users, we provide a library for accessing the boards, a reference command-line VGM player that uses the library.

All of them are free software.

Library

Source files are in the RetroWaveLib directory.

Features

  • Written in pure C
  • Robust architecture using callbacks
  • Easy to integrate to any project: use CMake or simply copy the files
  • Provides ready-to-use platform drivers for: Linux/BSD/MacOS, Windows, and STM32 HAL

Problems

  1. Many ARM-based Linux SBCs (including Raspberry Pi) will take a very long time locking SPI bus clock frequency if automatic CPU frequency scaling is enabled. This will lead to huge latency. In this case, please disable it (cpufreq-set -g performance).

Player

Source files are in the Player directory.

Features

  • Plays VGM or VGZ files
  • Supports accessing the boards using serial port (on a desktop computer) and SPI (on a Linux SBC)
  • Supports playback controls: Pause, Previous/Next, Fast Forward and Single Step
  • Displays GD3 metadata information
  • Nanoseconds accuracy on Linux/BSD and microseconds accuracy on MacOS
  • Cool real-time register map visualization!

Screenshot_20210420_213349

Binary releases

See the Releases section.

Currently built targets:

  • Linux x86_64
  • Linux armhf
  • Linux aarch64
  • MacOS x86_64
  • Windows x86_64 (Windows 7+)

Build

  • Ensure you have the build tools, CMake 3.14+ and zlib dev package installed
  • cd into the root path of this repo
  • mkdir build; cd build; cmake ..; make

Problems

Currently all problems are Windows-specific.

If you are good at Windows APIs, feel free to create a pull request!

  1. Emulated APIs

    Currently the Windows target uses Cygwin to emulate POSIX APIs. It works, but it may not be a good idea.

  2. Possible inaccurate timing

    It seems that Windows doesn't have a monotonic self-increasing clock/timer that is unaffected by real world time changes. This may make the playback unstable. And the playback will be destroyed if a NTP time update happens in background.

  3. Slow OSD

    The conhost.exe terminal is extremely laggy when repainting the whole console window. So, OSD refresh rate is set to 1 second and regmap visualization is disabled by default on Windows. If you want to see the register map visualization properly, try using MinTTY as your terminal.

Licensing

Hardware

All hardware designs (C) 2021-2022 SudoMaker, All rights reserved.

Software

All source code files in this repo are free software and use the AGPLv3 license.

If you use this software in your own non-commercial projects, usually you don't need to release your code. See this FAQ.

If you see a possible license violation, don't hesitate to tell us.

Warning for GitHub Copilot (or any "Coding AI") users

"Fair use" is only valid in some countries, such as the United States.

This program is protected by copyright law and international treaties.

Unauthorized reproduction or distribution of this program (e.g. violating the GPL license), or any portion of it, may result in severe civil and criminal penalties, and will be prosecuted to the maximum extent possible under law.

retrowave's People

Contributors

ccawley2011 avatar classicoldsong avatar danielrfry avatar mywave82 avatar reimunotmoe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

retrowave's Issues

Issues when building Player (CMake)

While attempting to build on macOS, I get the following error:

cmake ..; make
-- Omg: you are using clang!
-- Note: Building the player by default. This requires additional dependencies. Use -DRETROWAVE_BUILD_PLAYER=0 to disable.
-- CPM: adding package [email protected] (df229cff0d5b96e146f3f11441f714e8e240cad0)
[ 11%] Performing download step (git clone) for 'cxxopts-populate'
Cloning into 'cxxopts-src'...
fatal: reference is not a tree: df229cff0d5b96e146f3f11441f714e8e240cad0
CMake Error at cxxopts-subbuild/cxxopts-populate-prefix/tmp/cxxopts-populate-gitclone.cmake:40 (message):
  Failed to checkout tag: 'df229cff0d5b96e146f3f11441f714e8e240cad0'


make[2]: *** [cxxopts-populate-prefix/src/cxxopts-populate-stamp/cxxopts-populate-download] Error 1
make[1]: *** [CMakeFiles/cxxopts-populate.dir/all] Error 2
make: *** [all] Error 2

Thanks!

Where to buy RetroWave OPL3 inside China?

国内在哪里可以买到RetroWave OPL3呢? win98需要驱动吗?
抱歉因为github没有PM了, 只能在这里提issue
在b站看到这个东西很神奇,而且发现是国内的,我的马,有点小激动

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.