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
Minimal command-line music player written in Python

pyms Minimal command-line music player written in Python. Designed with elegance and minimalism. Resizes dynamically with your terminal. Dependencies

12 Sep 23, 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
An audio-solving python funcaptcha solving module

funcapsolver funcapsolver is a funcaptcha audio-solving module, which allows captchas to be interacted with and solved with the use of google's speech

Acier 8 Nov 21, 2022
Terminal-based audio-to-text converter

att Terminal-based audio-to-text converter Project description A terminal-based audio-to-text converter written in python, enabling you to convert .wa

Sven Eschlbeck 4 Dec 15, 2022
Inner ear models for Python

cochlea cochlea is a collection of inner ear models. All models are easily accessible as Python functions. They take sound signal as input and return

98 Jan 05, 2023
Python library for handling audio datasets.

AUDIOMATE Audiomate is a library for easy access to audio datasets. It provides the datastructures for accessing/loading different datasets in a gener

Matthias 121 Nov 27, 2022
Royal Music You can play music and video at a time in vc

Royals-Music Royal Music You can play music and video at a time in vc Commands SOON String STRING_SESSION Deployment ๐ŸŽ– Credits โ€ข ๐Ÿ‡ธแดแดสแด€โƒ๐Ÿ‡ฏแด‡แด‡แด› โ€ข ๐Ÿ‡ดา“า“ษช

2 Nov 23, 2021
Audio fingerprinting and recognition in Python

dejavu Audio fingerprinting and recognition algorithm implemented in Python, see the explanation here: How it works Dejavu can memorize audio by liste

Will Drevo 6k Jan 06, 2023
Stevan KZ 1 Oct 27, 2021
A small project where I identify notes and key harmonies in a piece of music and use them further to recreate and generate the same piece of music through Python

A small project where I identify notes and key harmonies in a piece of music and use them further to recreate and generate the same piece of music through Python

5 Oct 07, 2022
Mousai is a simple application that can identify song like Shazam

Mousai is a simple application that can identify song like Shazam. It saves the artist, album, and title of the identified song in a JSON file.

Dave Patrick 662 Jan 07, 2023
Spotify Song Recommendation Program

Spotify-Song-Recommendation-Program Made by Esra Nur ร–zรผm Written in Python The aim of this project was to build a recommendation system that recommen

esra nur รถzรผm 1 Jun 30, 2022
C++ library for audio and music analysis, description and synthesis, including Python bindings

Essentia Essentia is an open-source C++ library for audio analysis and audio-based music information retrieval released under the Affero GPL license.

Music Technology Group - Universitat Pompeu Fabra 2.3k Jan 03, 2023
Synthesia but open source, made in python and free

PyPiano Synthesia but open source, made in python and free Requirements are in requirements.txt If you struggle with installation of pyaudio, run : pi

DaCapo 11 Nov 06, 2022
๐™ฐ ๐™ผ๐šž๐šœ๐š’๐šŒ ๐™ฑ๐š˜๐š ๐™ฒ๐š›๐šŽ๐šŠ๐š๐šŽ๐š ๐™ฑ๐šข ๐šƒ๐šŽ๐šŠ๐š–๐™ณ๐š•๐š ๐Ÿ’–

TeamDltmusic ๐™ฐ ๐™ผ๐šž๐šœ๐š’๐šŒ ๐™ฑ๐š˜๐š ๐™ฒ๐š›๐šŽ๐šŠ๐š๐šŽ๐š ๐™ฑ๐šข ๐šƒ๐šŽ๐šŠ๐š–๐™ณ๐š•๐š ๐Ÿ’– Deploy String Session String Click hear you can find string session OR join He

TeamDlt 5 Jan 18, 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
Algorithmic and AI MIDI Drums Generator Implementation

Algorithmic and AI MIDI Drums Generator Implementation

Tegridy Code 8 Dec 30, 2022
Spotifyd - An open source Spotify client running as a UNIX daemon.

Spotifyd An open source Spotify client running as a UNIX daemon. Spotifyd streams music just like the official client, but is more lightweight and sup

8.5k Jan 09, 2023
Accompanying code for our paper "Point Cloud Audio Processing"

Point Cloud Audio Processing Krishna Subramani1, Paris Smaragdis1 1UIUC Paper For the necessary libraries/prerequisites, please use conda/anaconda to

Krishna Subramani 17 Nov 17, 2022
Datamoshing with FFmpeg

ffmosher Datamoshing with FFmpeg Drag and drop video onto mosh.bat to create a datamoshed video. To datamosh an image, please ensure the file is in a

18 Sep 11, 2022