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
A Python 3 script for capturing and recording a SDR stream to a WAV file (or serving it to a HTTP audio stream).

rfsoapyfile A Python 3 script for capturing and recording a SDR stream to a WAV file (or serving it to a HTTP audio stream). The script is threaded fo

4 Dec 19, 2022
:sound: Play and Record Sound with Python :snake:

Play and Record Sound with Python This Python module provides bindings for the PortAudio library and a few convenience functions to play and record Nu

spatialaudio.net 750 Dec 31, 2022
GNU Radio – the Free and Open Software Radio Ecosystem

GNU Radio is a free & open-source software development toolkit that provides signal processing blocks to implement software radios. It can be used wit

GNU Radio 4.1k Jan 06, 2023
controls volume using hand gestures

controls volume using hand gestures

1 Oct 11, 2021
❤️ This Is The EzilaXMusicPlayer Advaced Repo 🎵

Telegram EzilaXMusicPlayer Bot 🎵 A bot that can play music on telegram group's voice Chat ❤️ Requirements 📝 FFmpeg NodeJS nodesource.com Python 3.7+

Sadew Jayasekara 11 Nov 12, 2022
Gammatone-based spectrograms, using gammatone filterbanks or Fourier transform weightings.

Gammatone Filterbank Toolkit Utilities for analysing sound using perceptual models of human hearing. Jason Heeris, 2013 Summary This is a port of Malc

Jason Heeris 188 Dec 14, 2022
A voice assistant which can be used to interact with your computer and controls your pc operations

Introduction 👨‍💻 It is a voice assistant which can be used to interact with your computer and also you have been seeing it in Iron man movies, but t

Sujith 84 Dec 22, 2022
This is an AI that runs in the terminal. It is a voice assistant that can do common activities and can also help in your coding doubts like

This is an AI that runs in the terminal. It is a voice assistant that can do common activities and can also help in your coding doubts like

OneBit 1 Nov 05, 2021
A Python wrapper around the Soundcloud API

soundcloud-python A friendly wrapper around the Soundcloud API. Installation To install soundcloud-python, simply: pip install soundcloud Or if you'r

SoundCloud 84 Dec 31, 2022
Algorithmic and AI MIDI Drums Generator Implementation

Algorithmic and AI MIDI Drums Generator Implementation

Tegridy Code 8 Dec 30, 2022
The venturimeter works on the principle of Bernoulli's equation, i.e., the pressure decreases as the velocity increases.

The venturimeter works on the principle of Bernoulli's equation, i.e., the pressure decreases as the velocity increases. The cross-section of the throat is less than the cross-section of the inlet pi

Shankar Mahadevan L 1 Dec 03, 2021
An 8D music player made to enjoy Halloween this year!🤘

HAPPY HALLOWEEN buddy! Split Player Hello There! Welcome to SplitPlayer... Supposed To Be A 8DPlayer.... You Decide.... It can play the ordinary audio

Akshat Kumar Singh 1 Nov 04, 2021
Guide & Examples to create deeplearning gstreamer plugins and use them in your pipeline

upai-gst-dl-plugins Guide & Examples to create deeplearning gstreamer plugins and use them in your pipeline Introduction Thanks to the work done by @j

UPAI.IO 11 Dec 11, 2022
The project aims to develop a personal-assistant for Windows & Linux-based systems

The project aims to develop a personal-assistant for Windows & Linux-based systems. Samiksha draws its inspiration from virtual assistants like Cortana for Windows, and Siri for iOS. It has been desi

SHUBHANSHU RAI 1 Jan 16, 2022
A Python library and tools AUCTUS A6 based radios.

A Python library and tools AUCTUS A6 based radios.

Jonathan Hart 6 Nov 23, 2022
Library for Python 3 to communicate with the Google Chromecast.

pychromecast Library for Python 3.6+ to communicate with the Google Chromecast. It currently supports: Auto discovering connected Chromecasts on the n

Home Assistant Libraries 2.4k Jan 02, 2023
Dataset and baseline code for the VocalSound dataset (ICASSP2022).

VocalSound: A Dataset for Improving Human Vocal Sounds Recognition Introduction Citing Download VocalSound Dataset Details Baseline Experiment Contact

Yuan Gong 58 Jan 03, 2023
MUSIC-AVQA, CVPR2022 (ORAL)

Audio-Visual Question Answering (AVQA) PyTorch code accompanies our CVPR 2022 paper: Learning to Answer Questions in Dynamic Audio-Visual Scenarios (O

44 Dec 23, 2022
Library for working with sound files of the format: .ogg, .mp3, .wav

Library for working with sound files of the format: .ogg, .mp3, .wav. By work is meant - playing sound files in a straight line and in the background, obtaining information about the sound file (auth

Romanin 2 Dec 15, 2022
L-SpEx: Localized Target Speaker Extraction

L-SpEx: Localized Target Speaker Extraction The data configuration and simulation of L-SpEx. The code scripts will be released in the future. Data Gen

Meng Ge 20 Jan 02, 2023