|
1 |
| -# ♪♫ **See** your music with **audioMotion**! ♪♫ |
| 1 | + |
| 2 | + |
| 3 | +**audioMotion** is a high-resolution real-time audio spectrum analyzer and full-featured music player that lets you ♪♫ **see your music!** ♪♫<br> |
| 4 | +It is completely free, open-source software, created out of my passion for the graphic spectrum analyzers of hi-fi systems from the 1980s. |
2 | 5 |
|
3 | 6 | [](https://github.com/hvianna/audioMotion.js/releases/latest)
|
4 | 7 | [](https://github.com/hvianna/audioMotion.js/releases/latest)
|
5 | 8 |
|
6 |
| -**audioMotion** is a high-resolution real-time audio spectrum analyzer and full-featured music player written in JavaScript. |
7 |
| - |
8 |
| -The spectrum analyzer module is also available as a [standalone project](https://github.com/hvianna/audioMotion-analyzer) and a zero-dependency [npm package](https://www.npmjs.com/package/audiomotion-analyzer) you can use in your own JavaScript projects! |
9 |
| - |
10 | 9 | ## Features
|
11 | 10 |
|
| 11 | + |
| 12 | + |
12 | 13 | * High-resolution real-time dual channel audio spectrum analyzer
|
13 |
| -* Fullscreen support at up to 60fps, ready for retina / HiDPI displays |
| 14 | +* Fullscreen and Picture-In-Picture support at 60fps, ready for retina / HiDPI displays |
14 | 15 | * Logarithmic frequency scale with customizable range
|
15 | 16 | * Visualize discrete frequencies or octave bands based on the equal tempered scale
|
16 |
| -* Optional effects: vintage LEDs, luminance bars, reflection, radial visualization |
17 |
| -* 17 beautiful color gradients |
| 17 | +* Optional effects: vintage LEDs, variable opacity, mirroring and reflection, radial visualization |
| 18 | +* 17 beautiful color gradients, plus a visual editor to easily create your own gradients |
18 | 19 | * HTML5 audio player for MP3, AAC (m4a), OGG and FLAC files (support may vary depending on browser and operating system)
|
19 | 20 | * Visual file explorer and play queue with drag-and-drop functionality
|
20 | 21 | * Support for M3U playlists (`m3u` and `m3u8` file extensions)
|
21 | 22 | * Visualize audio from your microphone (or "stereo mix", if your soundcard supports it)
|
22 | 23 | * Lightweight custom file server — also works on standard web servers with minimal configuration
|
23 | 24 | * Client runs on any modern browser (tested on Chrome, Firefox, Opera and Safari)
|
24 | 25 |
|
25 |
| -## Live demo |
26 |
| - |
27 |
| -[▶ **TRY THE LIVE DEMO**](https://audiomotion.me/public/) |
28 |
| - |
29 |
| -The demo allows you to play audio files from your PC, remote files and streams via URL and use the microphone input. |
30 |
| -The file explorer is not available, since there are no media files hosted on the demo server. |
31 |
| - |
32 |
| -Also check out our [▶ **YouTube channel**](https://channel.audiomotion.io) for some cool songs visualized with audioMotion! |
33 |
| - |
34 |
| -## Getting started |
35 |
| - |
36 |
| -Download the latest version from the [**releases page**](https://github.com/hvianna/audioMotion.js/releases/latest). Portable binaries are available for Windows, Linux and macOS. |
37 |
| - |
38 |
| -Launch audioMotion and you'll be asked for the path to your music folder. Only files under that folder will be accessible to the player. |
39 |
| - |
40 |
| -You can also use the command line argument `-m` to set the music folder when launching audioMotion: |
41 |
| - |
42 |
| -``` |
43 |
| -audioMotion -m c:\users\john\music |
44 |
| -``` |
45 |
| - |
46 |
| -This will start the server and should also launch the client in your browser. |
47 |
| - |
48 |
| -The complete command line options are: |
49 |
| - |
50 |
| -``` |
51 |
| --m <path> : path to music directory |
52 |
| --p <port> : change server listening port (default is 8000) |
53 |
| --s : start server only (do not launch client) |
54 |
| --e : allow external connections (by default, only localhost) |
55 |
| -``` |
56 |
| - |
57 |
| -⚠ **WARNING:**<br> |
58 |
| -Please be aware that the `-e` flag will expose the contents of the mounted folder to anyone in your network (and potentially to the entire internet!) — use it only if you're in a trusted network and behind a firewall! |
59 |
| - |
60 |
| -## Screenshots |
61 |
| - |
62 |
| - |
63 |
| -*[Discrete frequencies](docs/README.md#mode) mode. User interface: [main function buttons](docs/README.md#main-function-buttons), [audio source](docs/README.md#audio-source) selector, [player controls](docs/README.md#player-controls), [volume control](docs/README.md#volume-control) and [file explorer](docs/README.md#file-explorer-and-play-queue).* |
64 |
| - |
65 |
| ---- |
66 |
| - |
67 |
| - |
68 |
| -*1/4th-octave bands with LED effect, extra wide [bar spacing](docs/README.md#bar-spacing) and on-screen song information. User interface shows the [settings panel](docs/README.md#settings-panel) open.* |
69 |
| - |
70 |
| ---- |
71 |
| - |
72 |
| - |
73 |
| -*Fullscreen view: 1/6th-octave bands, regular bar spacing, "Outrun" gradient, [Reflex](docs/README.md#reflex) effect and complete on-screen information.* |
74 |
| - |
75 |
| ---- |
76 |
| - |
77 |
| - |
78 |
| -*Fullscreen view: [Stereo](docs/README.md#switches) Line graph, frequency and level scales on, "Rainbow" gradient.* |
79 |
| - |
80 |
| ---- |
81 |
| - |
82 |
| - |
83 |
| -*Fullscreen view: 1/8th-octave bands, [LUMI effect](docs/README.md#effects) on, "Tie Dye" gradient.* |
84 |
| - |
85 |
| ---- |
86 |
| - |
87 |
| - |
88 |
| -*Fullscreen view: 1/6th-octave bands, [Radial](docs/README.md#radial) analyzer, frequency scale on, "Apple ][" gradient.* |
89 |
| - |
90 |
| -## Documentation |
91 |
| - |
92 |
| -For complete documentation, see the [docs](docs/README.md) folder. |
93 |
| - |
94 |
| -## Credits and acknowledgments |
95 |
| - |
96 |
| -**audioMotion** was largely inspired by [Soniq Viewer for iOS](https://itunes.apple.com/us/app/soniq-viewer/id448343005), by Yuji Koike. |
97 |
| - |
98 |
| -The documentation website is powered by [GitHub Pages](https://pages.github.com/), [docsify](https://docsify.js.org/) and [docsify-themeable](https://jhildenbiddle.github.io/docsify-themeable). |
99 |
| - |
100 |
| -### JavaScript libraries |
| 26 | +> **For developers:**<br> |
| 27 | +> Check out [**audioMotion-analyzer**](https://audiomotion.dev) for easy integration of audioMotion's full-featured spectrum analyzer into your own Javascript projects! |
101 | 28 |
|
102 |
| -Some of audioMotion's great features are provided by these awesome open-source libraries: |
| 29 | +## Live Demo |
103 | 30 |
|
104 |
| -* [express](https://www.npmjs.com/package/express) - fast, unopinionated, minimalist web framework for node |
105 |
| -* [music-metadata-browser](https://www.npmjs.com/package/music-metadata-browser) - stream and file based music metadata parser for the browser |
106 |
| -* [notie](https://www.npmjs.com/package/notie) - clean and simple notification, input, and selection suite for javascript, with no dependencies |
107 |
| -* [open](https://www.npmjs.com/package/open) - open stuff like URLs, files, executables |
108 |
| -* [pkg](https://www.npmjs.com/package/pkg) - single-command Node.js binary compiler |
109 |
| -* [readline-sync](https://www.npmjs.com/package/readline-sync) - synchronous Readline for interactively requesting user input via console |
110 |
| -* [scrollIntoViewIfNeeded 4 everyone](https://gist.github.com/hsablonniere/2581101) - polyfill for non-standard scrollIntoViewIfNeeded() method |
111 |
| -* [sortablejs](https://www.npmjs.com/package/sortablejs) - JavaScript library for reorderable drag-and-drop lists |
112 |
| -* [webpack](https://www.npmjs.com/package/webpack) - JavaScript module bundler for the browser |
113 |
| - * [mini-css-extract-plugin](https://www.npmjs.com/package/mini-css-extract-plugin) - extracts CSS into separate files |
114 |
| - * [optimize-css-assets-webpack-plugin](https://www.npmjs.com/package/optimize-css-assets-webpack-plugin) - a webpack plugin to optimize / minimize CSS assets |
115 |
| - * [terser-webpack-plugin](https://www.npmjs.com/package/terser-webpack-plugin) - JavaScript compressor |
| 31 | +* [https://demo.audiomotion.me](https://demo.audiomotion.me) |
116 | 32 |
|
117 |
| -### Graphic resources |
| 33 | +## Documentation, credits and Changelog |
118 | 34 |
|
119 |
| -* The font used in audioMotion's logo is [Orbitron](https://fonts.google.com/specimen/Orbitron) by Matt McInerney |
120 |
| -* Icons provided by [icons8](https://icons8.com) licensed under [Creative Commons Attribution-NoDerivs 3.0 Unported](https://creativecommons.org/licenses/by-nd/3.0/) |
121 |
| -* [Mouse scroll icon](https://thenounproject.com/term/mouse-scroll/628146/) by Viktor Ostrovsky, licensed under [Creative Commons CCBY](https://creativecommons.org/licenses/by/3.0/us/legalcode) |
122 |
| -* Gradients [*Candy*](https://gradienthunt.com/gradient/172), [*Miami*](https://gradienthunt.com/gradient/950), [*Outrun*](https://gradienthunt.com/gradient/317) and [*Tie Dye*](https://gradienthunt.com/gradient/969) from [Gradient Hunt](https://gradienthunt.com) |
123 |
| -* Gradients *Pacific Dream*, *Shahabi*, *Summer* and *Sunset* from [uiGradients](https://uigradients.com) |
124 |
| -* The *Apple ][* gradient was created based on [this post](https://creativemarket.com/blog/6-famous-logos-with-great-color-schemes) by Creative Market |
125 |
| -* Gradients used in the UI buttons are from [ColorZilla's Ultimate CSS Gradient Generator](http://www.colorzilla.com/gradient-editor/) |
126 |
| -* [CSS3 inset text shadow](https://codepen.io/adambundy/pen/HtmaK) by Adam Bundy |
127 |
| -* [CSS slider switches](https://codepen.io/billyysea/pen/CHmiE) by Billy |
128 |
| -* Radial brushed metal texture taken from [this pen](https://codepen.io/GreenSock/pen/gnoDc) by GreenSock |
129 |
| -* Volume knob design based on [Dark dial](https://codepen.io/stormwarning/pen/yNGeMm) by Jeff |
| 35 | +* See the [docs/](docs/) folder or visit the [website](https://audiomotion.me) |
130 | 36 |
|
131 |
| -### References |
| 37 | +## Contributing |
132 | 38 |
|
133 |
| -These online references were invaluable for the development and improvement of audioMotion: |
| 39 | +* For bug reports or feature requests, feel free to [open an issue](https://github.com/hvianna/audioMotion.js/issues); |
| 40 | +* 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. |
134 | 41 |
|
135 |
| -* [HTML Canvas Reference @W3Schools](https://www.w3schools.com/tags/ref_canvas.asp) |
136 |
| -* [Web Audio API documentation @MDN](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API) |
137 |
| -* [Web Audio API Specification](https://webaudio.github.io/web-audio-api/) |
138 |
| -* [What does the FFT data in the Web Audio API correspond to?](https://stackoverflow.com/a/14789992/2370385) |
139 |
| -* [HTML5 check if audio is playing?](https://stackoverflow.com/a/46117824/2370385) |
140 |
| -* [Unlocking Web Audio — the smarter way](https://hackernoon.com/unlocking-web-audio-the-smarter-way-8858218c0e09) |
141 |
| -* [Equations for equal-tempered scale frequencies](http://pages.mtu.edu/~suits/NoteFreqCalcs.html) |
142 |
| -* Pure CSS modal windows based on [this pen](https://codepen.io/timothylong/pen/HhAer) by Timothy Long and [CSS Modal](https://drublic.github.io/css-modal/) by Hans Christian Reinl |
| 42 | +> Please note that this is a hobby project that I work on in my free time, so it may take me some time to respond to inquiries. |
143 | 43 |
|
144 | 44 | ## License
|
145 | 45 |
|
146 |
| -audioMotion.js copyright (c) 2018-2020 Henrique Avila Vianna<br> |
147 |
| -Licensed under the [GNU Affero General Public License, version 3 or later](https://www.gnu.org/licenses/agpl.html). |
| 46 | +audioMotion.js copyright (c) 2018-2021 [Henrique Avila Vianna](https://henriquevianna.com)<br> |
| 47 | +Licensed under the [GNU Affero General Public License, version 3 or later](https://www.gnu.org/licenses/agpl.html). |
0 commit comments