Giter Club home page Giter Club logo

audiomotion.js's Introduction

audioMotion-header

audioMotion is a media player and high-resolution real-time audio spectrum analyzer that allows you to SEE your music! ♪♫🤩
It is completely free, open-source software, created out of my passion for the graphic spectrum analyzers of hi-fi systems from the 1980s.

GitHub release GitHub Release Date

Features

screenshot2

  • Dual channel high-resolution real-time audio spectrum analyzer
  • Fullscreen and Picture-In-Picture support at 60fps, ready for retina / HiDPI displays
  • Logarithmic, linear and perceptual (Bark and Mel) frequency scales, with customizable range
  • Visualization of discrete FFT frequencies or up to 240 frequency bands (supports ANSI and equal-tempered octave bands)
  • Decibel and linear amplitude scales, with customizable sensitivity
  • Optional A, B, C, D and ITU-R 468 weighting filters
  • Optional effects: vintage LEDs, variable opacity, mirroring and reflection, radial visualization
  • 17 beautiful color gradients, plus a visual editor to easily create your own gradients
  • HTML5 audio player for MP3, AAC (m4a), OGG and FLAC files (support may vary depending on browser and operating system)
  • Visual file explorer and play queue with drag-and-drop functionality
  • Support for M3U playlists (m3u and m3u8 file extensions)
  • Visualize audio from your microphone (or "stereo mix", if your soundcard supports it)

For developers:
Check out audioMotion-analyzer for easy integration of audioMotion's full-featured spectrum analyzer into your own Javascript projects!

Access the web app

Use a Chromium-based browser to be able to play media files from your hard drive.
Works on Chrome, Opera and Edge by default. On Brave you'll need to enable this feature in chrome://flags/#file-system-access-api.

Documentation

Contributing

I kindly request that you only open an issue for submitting bug reports.

Please use the Discussions section on GitHub to send feature requests, questions, suggestions or any other feedback.

If you'd like to submit a Pull Request, please branch it off the project's dev branch - that makes it easier for me to incorporate your changes in a future release.

Please note that this is a hobby project that I work on in my free time, so it may take me a while to respond to inquiries sometimes.

License

audioMotion.js copyright (c) 2018-2024 Henrique Avila Vianna
Licensed under the GNU Affero General Public License, version 3 or later.

audiomotion.js's People

Contributors

droverbuild avatar hvianna 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  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

audiomotion.js's Issues

Error when drawing with reflex

Hello there,

First of all, I want to mention how awesome this library is. I've been visualizing input with FFT with p5.js for a while, but got sick of how much code was needed. This looks way better and works better too.
I'm currently working on using this library to create a visualizer in an electron app, which is also using Angular.
This means I really need to change some stuff around. Everything seems to work really well so far, but I can't get the reflection to work.

Im passing the following properties to the audioMotion object:

options = {
        // audioCtx: undefined,
        barSpace: 0.1,
        bgAlpha: 0.7,
        fftSize: 8192,
        fillAlpha: 1,
        gradient: 'classic',
        lineWidth: 0,
        loRes: false,
        lumiBars: false,
        maxDecibels: -25,
        maxFreq: 22000,
        minDecibels: -85,
        minFreq: 20,
        mode: 2,
        onCanvasDraw: this.drawCallback.bind(this),
        overlay: false,
        radial: false,
        reflexAlpha: 0.15,
        reflexBright: 1,
        reflexFit: true,
        reflexRatio: 0,
        showBgColor: true,
        showFPS: false,
        showLeds: false,
        showPeaks: true,
        showScale: false,
        showScaleY: false,
        smoothing: 0.7,
        spinSpeed: 0,
        start: true,
    }

When I change reflexRatio from 0, as shown here, to anything else, like 0.1, I get an error when the canvas is drawing.
The error I get is:

ERROR TypeError: Failed to execute 'setTransform' on 'CanvasRenderingContext2D': 6 arguments required, but only 0 present.
    at AudioMotionAnalyzer._draw (audioMotion-analyzer.js:910)
    at audioMotion-analyzer.js:501
    at ZoneDelegate.invokeTask (zone.js:421)
    at Object.onInvokeTask (core.js:28183)
    at ZoneDelegate.invokeTask (zone.js:420)
    at Zone.runTask (zone.js:188)
    at ZoneTask.invokeTask (zone.js:503)
    at ZoneTask.invoke (zone.js:492)
    at timer (zone.js:3034)

Am I doing something wrong or is using reflection in electron/angular not possible?

Seems the pictures are not coming forth in the Vizualizer.

Well now that I have the Folder search sorted, and things seems to work - but then I found out, that the images, background and front does not seem to appear in the Visualizer... Seems like everything else is working. But am I missing something, the images? Or does it need to have access to something or what?....

Darkijah
Screenshot_2023-09-21_01-51-47

Confusing scrollbar behavior during auto-hide in smaller screens

Kinda hard to just take an image and see.... As it is kinda of a flow video thing in action.
I think it is with all browsers, and probably able to reproduce it with a lower resolution where the player don't exactly fit.
Although even if it does not fit exactly do my screen I usually get around it with the scrollbar that now disappears in the new version and then comes up doing some weird stuff.

Originally posted by @JesusGod-Pope666-Info in #51 (reply in thread)

1/3 octave classic graphic eq bands

i'm wondering how closely the bands of an "old school classic graphic equalizer" can be displayed.

https://www.engineeringtoolbox.com/octave-bands-frequency-limits-d_1602.html

i've tried plugging various values into octave-bands-viewer.html in the tools folder, but can't find any settings that work.
is it possible to manually define an array of custom bands?

i'm hoping to make a simple tool to assist in tuning a room, which engineers can load up in their web browser, either on a laptop with a reasonable external usb sound card, or on a phone for less acurate measurement (phone mics are not that great)

no linear scale?

First of all, many thanks for making this wonderful piece.
This has been very useful for an educational purpose, especially to students working on DSP and/or phonetics.
Could you add an option to switch Logarithmic to linear scale?
This will be really informative in a certain area for sure.
Thanks!!

Microphone input causes "bounce" of display

Amazing work!

If I play a steady tone into the microphone, the display "bounces" something like 3-4 times per second, as if the tone was pulsed.

Is that because live input is sampled in discrete chunks several times a second, and this an artifact of that technique? Is there a way to improve on this?

Live streams not working on Safari

I tried on the demo page with a stream on Safari 14.0.
The sound works nicely but the spectrum doesn't move. I tried all configuration but anyone change it.


Capture d’écran 2020-10-27 à 15 59 48

Issue with radio files.

So I downloaded a bunch of m3u files from a page somewhere, now they do seem to work in the VLC player but wont play in the audioMotion player. Not sure what is wrong, I thought my player just did not work with it, but as I downloaded your own in the demo and tested them, I found out it actually worked on those 3 live ones that usually works.

Screenshot_2023-09-21_09-38-06

Not sure what is wrong or different, I see if I can check the with the txt app and see if there is something.

---- Darkijah

Search for folders and file names

Discussed in #56

Originally posted by R-W-C April 10, 2024

There seems to be once important feature missing, the possibility to search for folder and file names. Or is it somewhere hidden?

Add number of channels and bitrate to song info

Discussed in #56

Originally posted by R-W-C April 10, 2024

And another thing, but really not that important. The number of channels is not showed in the information and neither is the bitrate.
Mono channel files and multichannel flac files are played just fine, so it makes sense to display the number of channels. Or is it something I have to switch on?

Can play m3u or a Icecast Stream?

Awesome work with AudioMotion.js i think this is not an issue but but i cant play an Icecast Stream in MP3 @ 192 kbps 44.1 KhZ or a m3u playlist with it.

Continuous track info?

Is there a way to have the track info remain on the screen continuously instead of fading away after a few seconds when a track changes, or when I press the keyboard shortcut? If not, could this be added as a feature in a future version?

Mac mini line-in input latency

Hey folks,

I'm trying to build a fancy audio visualizer with an old Mac mini and audioMotion.

I have a streamer as an audio source which I'd like to connect to my mac mini's line input to forward the song to audioMotion

Now, when using the headphone jack output on the streamer and connect it straight to the line-in of the mac mini, I'm experiencing no delay at all. Unfortunately though, when using the headphone jack of the streamer, it no longer sends audio to my amp (and thus to my speakers).

As I also have a headphone pre-amp, the Fostex HPA8 MK2, I tried connecting the streamer to the pre-amp with an optical cable, and then tried connecting the pre-amp's headphone output to the Mac mini's line-in input. When doing that, I'm experiencing audio delay, of roughly 200ms, which causes the audio spectrum to get out of sync with the audio getting out of my speakers.

I also tried using the analog RCA output of the pre-amp (using an RCA to jack cable), but the result is the same.

You might then immediately think that the delay then comes from the pre-amp, however, when connecting my headphones to the pre-amp and comparing it with my speakers, there's no delay experienced at all.

All of this makes me think there's some kind of buffer issue on the line-in input, but that still doesn't explain why I'm not experiencing such delay when connecting the mac mini straight to the headphone jack output of the streamer.

Do you folks have any idea what might be the cause? Do you think I could solve the problem by using a dumb USB sound card? Is there any way to decrease the line-in buffer, if that's even the cause? I know there are ways to do that via logic pro and all, but the use-case's different here.

I know this isn't directly related to audioMotion, so feel free to delete the issue if you think it's inappropriate.

Thanks anyway for the awesome tool 🙌

Can the background be set to be transparent?

I need put this canvas on a another canvas, so I need this background is transparent, but I don't know how to set it to a transparent background, I've looked at the documentation, but there seems to be no way to do it.
your project is awesome, thank you build it!

Radio Station List (Updated)

Hi,

I was browsing audiomotion and I saw you included some radio stations I had (Im really happy). Im providing you with my up to date radio station m3u playlists. Thank you for helping me out in the past! Please feel free to include anything you want... Thank you!

radioSanta.zip

Feature Request: Light UI

Hi,

I wanted to know if you could make a light UI for your app? I noticed your current player runs very slowly on mobile devices.

Thank you!

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.