FPGA based USB 2.0 high speed audio interface featuring multiple optical ADAT inputs and outputs

Overview

ADAT USB Audio Interface

FPGA based USB 2.0 High Speed audio interface featuring multiple optical ADAT inputs and outputs

Status / current limitations

  • enumerates as class compliant audio device on Linux and Linux. 2 and 8 channel modes.
  • audio output works almost glitch free. Occasional underruns occur, but they are barely audible.
  • only 48kHz sample rate supported
  • audio input is still a dummy (internally generated signal)
  • integrated USB2 high speed logic analyzer works
Comments
  • Board exceeds JLCPCB capabilities

    Board exceeds JLCPCB capabilities

    Got this message from JLCPCB and they cancelled my order:

    "After marking the hole compensation of the original 0.4/0.6 mm, the minimum hole distance is only about 0.17 mm, and the minimum hole distance line is only about 0.08, which exceeds our capabilities. (the minimum hole distance of different networks must be greater than 0.33 mm , the hole distance line must be greater than 0.23 mm)"

    I did notice that the visa and tracks were awfully close to each other, but i figured you had submitted this to JLCPCB before so i didn’t think it was an issue.

    I’d do this myself, but modifying this design to fix this issue messes with it far more than I am comfortable with.

    the full list of capabilities can be found here: https://jlcpcb.com/capabilities/Capabilities

    opened by nikitalita 32
  • Add a full-speed target

    Add a full-speed target

    Thanks for posting this repo! I had some success with it on the TinyFPGA-Bx using the DirectUSB resource.

    This target enumerates correctly and the dummy tone shows up on record (a tad off-key and with a few artefacts)

    opened by BrettRD 15
  • final fixes

    final fixes

    I added back the custom rules and changed them so that:

    1. the custom rules that duplicated global rules were commented out
    2. the minimum clearance rule for the inner layers has been changed so it doesn't apply to zones, so it won't have the same copper fill bug that it did before

    The custom rules catch stuff that the global rules don't, but fortunately, we didn't have anything to fix here.

    I also length matched the D- and D+ lines by making D- and D+ both use vias to cross each other; I also adjusted the spacking and width of the tracks of the main run based on this calculation from eeweb: image

    With this, I think we're finally finished with this revision 🥳

    opened by nikitalita 11
  • USB interface

    USB interface

    Hello, I like this project and would like to reproduce it with qmtech spartan 6 board. Can I use USB3300 for USB interface or is there some special feature of 3320 being used?

    If so, don't you happen to have one extra unpopulated PCB to sell?

    Thank you.

    opened by danielkucera 10
  • Fix PCB issues

    Fix PCB issues

    I ran into some issues when ordering the PCB from JLCPCB, so I had to make some minor adjustments:

    1. Changed the footprint for the toslink ports to the T8 variation vs. the T10. I can't find the PLR135/T10 part anywhere, and JLCPCB only had the T8. The only difference is the addition of two NPTH for the plastic mounting feet, so either the T10 or T8 variations can be used.

    2. Fix the USB-C port rotation for the POS file; it is flipped 180 degrees in the JLCPCB render

    3. Move power traces away from board edge The JLCPCB capabilities section says that traces must be >=.2mm from the edge: image

    So I just moved the power traces about .1mm; the only thing that it might cause issue with is that they're closer to the shield PTHs, but they still have about .4mm clearance to copper.

    1. Adjusted the board width for TOSLINK port clearance so that it can be flush with the case.

    BTW, you may want to update your JLCPCB plugin, I note that the part assignments file was in a different format.

    opened by nikitalita 9
  • S/PDIF support?

    S/PDIF support?

    I realize that S/PDIF is a different protocol and may take some effort to work because of variable clock speeds, but is this something that you are thinking about implementing in the future?

    opened by nikitalita 7
  • Port to LUNA board

    Port to LUNA board

    Would it be possible to port this to the LUNA board?

    The 8 in and out optical ports should fit comfortably on one of the two available PMOD connectors (though power draw may become an issue), and the two DACs on the other.

    question 
    opened by icb- 2
  • fix diff pair run on both top and bottom USB interfaces

    fix diff pair run on both top and bottom USB interfaces

    Applied the length matching to both the top AND bottom interfaces, fixed the main run according to these impedence calculations (because .09mm spacing was a bit too tight for comfort): image

    opened by nikitalita 2
  • Add JLCPCB custom rules

    Add JLCPCB custom rules

    I finally found a custom ruleset that has the JLCPCB rules here: https://gist.github.com/denniskupec/e163d13b0a64c2044bd259f64659485e

    I added that to the custom rules on the project and I adjusted the values to match. This should be all of their minimums. I also removed some bogus rules (like trace to vcut, since we aren't panelizing this, and maximum PTH size, which produced incorrect results).

    There are about 149 errors left now, but about 1/4 of them are just some ground vias having too small an annular ring (0.1250 vs. 0.13), and a good chunk of them are just here: image

    opened by nikitalita 2
  • Added an optional convolver as dsp for the dac1 output.

    Added an optional convolver as dsp for the dac1 output.

    The convolver can be enabled with the USE_CONVOLUTION flag. Once the design has been synthesized with USE_CONVOLUTION enabled you can enable the convolver by either pressing the first platform button or via the TOGGLE_CONVOLUTION (1) vendor usb control request.

    The concolver uses the amlib.dsp.convolution.mac convolver for now. In the future an option to use FFT convolution may be added.

    opened by fritzbauer 1
Releases(v0.0.8)
Owner
Hans Baier
Hans Baier
Pythonic bindings for FFmpeg's libraries.

PyAV PyAV is a Pythonic binding for the FFmpeg libraries. We aim to provide all of the power and control of the underlying library, but manage the gri

PyAV 1.8k Jan 03, 2023
Anaphones are like anagrams, but for sounds.

Anaphones Anaphones are like anagrams but for sounds (phonemes). Examples include: salami-awesomely, atari-tiara, and beefy-phoebe. Anaphones can be a

James Murphy 18 Nov 02, 2022
Make an audio file (really) long-winded

longwind Make an audio file (really) long-winded Daily repetitions are an illusion anyway.

Vincent Lostanlen 2 Sep 12, 2022
cross-library (GStreamer + Core Audio + MAD + FFmpeg) audio decoding for Python

audioread Decode audio files using whichever backend is available. The library currently supports: Gstreamer via PyGObject. Core Audio on Mac OS X via

beetbox 419 Dec 26, 2022
Audio Retrieval with Natural Language Queries: A Benchmark Study

Audio Retrieval with Natural Language Queries: A Benchmark Study Paper | Project page | Text-to-audio search demo This repository is the implementatio

21 Oct 31, 2022
Anki vector Music ❤ is the best and only Telegram VC player with playlists, Multi Playback, Channel play and more

Anki Vector Music 🎵 A bot that can play music on Telegram Group and Channel Voice Chats Available on telegram as @Anki Vector Music Features 🔥 Thumb

Damantha Jasinghe 12 Nov 12, 2022
Reading list for research topics in sound event detection

Sound event detection aims at processing the continuous acoustic signal and converting it into symbolic descriptions of the corresponding sound events present at the auditory scene.

Soham 64 Jan 05, 2023
Okaeri-Music is a telegram music bot project, allow you to play music on voice chat group telegram.

🗄️ PROJECT MUSIC,THIS IS MAINTAINED Okaeri-Music is a telegram bot project that's allow you to play music on telegram voice chat group Features 🔥 Th

Okaeri-Project 2 Dec 23, 2021
Multi-Track Music Generation with the Transfomer and the Johann Sebastian Bach Chorales dataset

MMM: Exploring Conditional Multi-Track Music Generation with the Transformer and the Johann Sebastian Bach Chorales Dataset. Implementation of the pap

102 Dec 08, 2022
Code to work with wave files!

Code to work with wave files!

Mohammad Dori 3 Jul 15, 2022
A python program to cut longer MP3 files (i.e. recordings of several songs) into the individual tracks.

I'm writing a python script to cut longer MP3 files (i.e. recordings of several songs) into the individual tracks called ReCut. So far there are two

Dönerspiess 1 Oct 27, 2021
extract unpack asset file (form unreal engine 4 pak) with extenstion *.uexp which contain awb/acb (cri/cpk like) sound or music resource

Uexp2Awb extract unpack asset file (form unreal engine 4 pak) with extenstion .uexp which contain awb/acb (cri/cpk like) sound or music resource. i ju

max 6 Jun 22, 2022
Python CD-DA ripper preferring accuracy over speed

Whipper Whipper is a Python 3 (3.6+) CD-DA ripper based on the morituri project (CDDA ripper for *nix systems aiming for accuracy over speed). It star

671 Jan 04, 2023
❤️ Hi There Im Cozmo Music Bot A next gen powerful telegram group Music bot for get your Songs and music @Venuja_Sadew

🎵 Cozmo MUSIC 🎵 Cozmo Music is a Music powerfull bot for playing music on telegram voice chat groups. Requirements FFmpeg NodeJS nodesource.com Pyth

Venuja Sadew 3 Jan 08, 2022
Improved Python UI to convert Youtube URL to .mp3 file.

YT-MP3 Improved Python UI to convert Youtube URL to .mp3 file. How to use? Just run python3 main.py Enter the URL of the video Enter the PATH of where

8 Jun 19, 2022
:speech_balloon: SpeechPy - A Library for Speech Processing and Recognition: http://speechpy.readthedocs.io/en/latest/

SpeechPy Official Project Documentation Table of Contents Documentation Which Python versions are supported Citation How to Install? Local Installatio

Amirsina Torfi 870 Dec 27, 2022
A Quick Music Player Made Fully in Python

Quick Music Player Made Fully In Python. Pure Python, cross platform, single function module with no dependencies for playing sounds. Installation & S

1 Dec 24, 2021
Supysonic is a Python implementation of the Subsonic server API.

Supysonic Supysonic is a Python implementation of the Subsonic server API. Current supported features are: browsing (by folders or tags) streaming of

Alban 228 Nov 19, 2022
A Python wrapper for the high-quality vocoder "World"

PyWORLD - A Python wrapper of WORLD Vocoder Linux Windows WORLD Vocoder is a fast and high-quality vocoder which parameterizes speech into three compo

Jeremy Hsu 583 Dec 15, 2022
Tune in is a Collaborative Music Playing Systems where multiple guests can join a room and enjoy the song being played

✨A collaborative music playing systems🎶 where multiple guests can join a room ➡🚪 and enjoy the song🎧 being played.

Vedansh Vijaywargiya 8 Nov 05, 2022