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 collection of free MIDI chords and progressions ready to be used in your DAW, Akai MPC, or Roland MC-707/101

A collection of free MIDI chords and progressions ready to be used in your DAW, Akai MPC, or Roland MC-707/101

921 Jan 05, 2023
Audio library for modelling loudness

Loudness Loudness is a C++ library with Python bindings for modelling perceived loudness. The library consists of processing modules which can be casc

Dominic Ward 33 Oct 02, 2022
Deep learning transformer model that generates unique music sequences.

music-ai Deep learning transformer model that generates unique music sequences. Abstract In 2017, a new state-of-the-art was published for natural lan

xacer 6 Nov 19, 2022
gentle forced aligner

Gentle Robust yet lenient forced-aligner built on Kaldi. A tool for aligning speech with text. Getting Started There are three ways to install Gentle.

1.2k Dec 30, 2022
Generating a structured library of .wav samples with Python.

sample-library Scripts for generating a structured sample library with Python Requires Docker about Samples are written to wave files in lib/. Differe

Ben Mangold 1 Nov 11, 2021
Code for csig audio deepfake detection

FMFCC Audio Deepfake Detection Solution This repo provides an solution for the 多媒体伪造取证大赛. Our solution achieve the 1st in the Audio Deepfake Detection

BokingChen 9 Jun 04, 2022
Expressive Digital Signal Processing (DSP) package for Python

AudioLazy Development Last release PyPI status Real-Time Expressive Digital Signal Processing (DSP) Package for Python! Laziness and object representa

Danilo de Jesus da Silva Bellini 642 Dec 26, 2022
Conferencing Speech Challenge

ConferencingSpeech 2021 challenge This repository contains the datasets list and scripts required for the ConferencingSpeech challenge. For more detai

73 Nov 29, 2022
Music bot of # Owner

Pokimane-Music Music bot of # Owner How To Host The easiest way to deploy this Bot Support Channel :- TeamDlt Support Group :- TeamDlt Please fork thi

5 Dec 23, 2022
Pyroomacoustics is a package for audio signal processing for indoor applications. It was developed as a fast prototyping platform for beamforming algorithms in indoor scenarios.

Summary Pyroomacoustics is a software package aimed at the rapid development and testing of audio array processing algorithms. The content of the pack

Audiovisual Communications Laboratory 1k Jan 09, 2023
A Youtube audio player for your terminal

AudioLine A lightweight Youtube audio player for your terminal Explore the docs » View Demo · Report Bug · Request Feature · Send a Pull Request About

Haseeb Khalid 26 Jan 04, 2023
Using python to generate a bat script of repetitive lines of code that differ in some way but can sort out a group of audio files according to their common names

Batch Sorting Using python to generate a bat script of repetitive lines of code that differ in some way but can sort out a group of audio files accord

David Mainoo 1 Oct 29, 2021
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
❤️ 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
Official implementation of A cappella: Audio-visual Singing VoiceSeparation, from BMVC21

Y-Net Official implementation of A cappella: Audio-visual Singing VoiceSeparation, British Machine Vision Conference 2021 Project page: ipcv.github.io

Juan F. Montesinos 12 Oct 22, 2022
A bot that can play music on Telegram Group and Channel Voice Chats

DaisyXmusic ❤ is the best and only Telegram VC player with playlists, Multi Playback, Channel play and more

TeamOfDaisyX 20 Jun 11, 2021
Automatically move or copy files based on metadata associated with the files. For example, file your photos based on EXIF metadata or use MP3 tags to file your music files.

Automatically move or copy files based on metadata associated with the files. For example, file your photos based on EXIF metadata or use MP3 tags to file your music files.

Rhet Turnbull 14 Nov 02, 2022
SolidMusic rewrite version, need help

Telegram Streamer Bot This is rewrite version of solidmusic, but it can't be deployed now, help me to make this bot running fast and good. If anyone w

Shohih Abdul 63 Jan 06, 2022
🎵 Python sound notifications made easy

chime Python sound notifications made easy. Table of contents Table of contents Motivation Installation Basic usage Theming IPython/Jupyter magic Exce

Max Halford 231 Jan 09, 2023
A voice control utility for Spotify

Spotify Voice Control A voice control utility for Spotify · Report Bug · Request

Shoubhit Dash 27 Jan 01, 2023