All Projects β†’ chrisweb β†’ waveform-data-generator

chrisweb / waveform-data-generator

Licence: MIT license
waveform data (peaks) generator (nodejs / ffmpeg)

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to waveform-data-generator

Wfplayer
🌊 WFPlayer.js is an audio waveform generator
Stars: ✭ 124 (+264.71%)
Mutual labels:  waveform
Webgl Plot
A high-Performance real-time 2D plotting library based on native WebGL
Stars: ✭ 200 (+488.24%)
Mutual labels:  waveform
just waveform
A Flutter plugin to extract waveform data from an audio file suitable for visual rendering.
Stars: ✭ 53 (+55.88%)
Mutual labels:  waveform
Circular Audio Wave
JS library for audio visualization in circular wave using Web Audio API and ECharts
Stars: ✭ 131 (+285.29%)
Mutual labels:  waveform
Waveform analysis
Functions and scripts for analyzing waveforms, primarily audio. This is currently somewhat disorganized and unfinished.
Stars: ✭ 193 (+467.65%)
Mutual labels:  waveform
Dswaveformimage
Generate waveform images from audio files in iOS
Stars: ✭ 228 (+570.59%)
Mutual labels:  waveform
Soundwaveform
Generate WaveForms Images from Sounds and Videos on macOS and iOS (Swift 5.x)
Stars: ✭ 119 (+250%)
Mutual labels:  waveform
audio-to-svg-waveform
Convert an audio file to a compressed (gzip) SVG waveform
Stars: ✭ 22 (-35.29%)
Mutual labels:  waveform
Vudio.js
ιŸ³ι’‘ε―θ§†εŒ–ε±•η€Ίζ¨‘ε—
Stars: ✭ 194 (+470.59%)
Mutual labels:  waveform
drop
A LΓ–VE visualizer and music player
Stars: ✭ 17 (-50%)
Mutual labels:  waveform
Speechrecognizerbutton
UIButton subclass with push to talk recording, speech recognition and Siri-style waveform view.
Stars: ✭ 144 (+323.53%)
Mutual labels:  waveform
Akwf Free
Adventure Kid Wave Forms are a collection of sampled one cycle waveforms for use in synthesizers or similar sound generators.
Stars: ✭ 179 (+426.47%)
Mutual labels:  waveform
tree-core-ide
The next generation integrated development environment for processor design and verification. It has multi-hardware language support, open source IP management and easy-to-use rtl simulation toolset.
Stars: ✭ 79 (+132.35%)
Mutual labels:  waveform
React D3 Components
D3 Components for React
Stars: ✭ 1,599 (+4602.94%)
Mutual labels:  waveform
sl2influxdb
Fetch seedlink data and store them into InfluxDB
Stars: ✭ 28 (-17.65%)
Mutual labels:  waveform
Waveformseekbar
Android Waveform SeekBar library
Stars: ✭ 120 (+252.94%)
Mutual labels:  waveform
Rfxgen
A simple and easy-to-use fx sounds generator
Stars: ✭ 221 (+550%)
Mutual labels:  waveform
SoundCloudWaveformSwift
How to create a soundcloud like waveform in swift
Stars: ✭ 89 (+161.76%)
Mutual labels:  waveform
klangsynthese
Waveform and Audio Synthesis library in Go
Stars: ✭ 57 (+67.65%)
Mutual labels:  waveform
waveplayer.js
An HTML5 based audio player with a waveform view
Stars: ✭ 73 (+114.71%)
Mutual labels:  waveform

waveform-data-generator

Generates waveform data (peaks) that can then get visualized using: https://github.com/chrisweb/waveform-visualizer

Waveform created using the visualizer with data from waveform data generator

Getting started

  • Install git and then do a local clone of this project
  • First, start by installing nodejs (http://nodejs.org/) (which includes npm) to run the server or use the cli tool
  • update npm to ensure you have the latest version installed npm i -g npm@latest
  • Now install ffmeg package based on your operating system (https://www.ffmpeg.org/download.html) (and if you develop in windows add it to your path: http://www.wikihow.com/Install-FFmpeg-on-Windows)
  • Use your command line tool and go to the root of this project (type: cd /LOCAL_PROJECT_PATH)
  • type: npm install, to install the required nodejs modules (dependencies)

Launch the server

  • Use your command line tool and go to the root of this project (type: cd /LOCAL_PROJECT_PATH)
  • To lauch the server type: node server
  • Open your browser and type the following address: 127.0.0.1:35000

Using the command line tool

  • Use your command line tool and go to the root of this project (type: cd /LOCAL_PROJECT_PATH)
  • Type: node cli PARAMETER_1 PARAMETER_2 (...)
  • For example: node cli ./downloads 1100511 ogg 200 local json false

Cli Options (Parameters)

  • The first parameter "./downloads" is the repository where you want the audio files to get stored
  • The second parameter "1100511" is the filename of the track (in my example the filename is the track ID)
  • The third parameter "ogg" is the audio file format (also file exntension) of the track (ogg / mp3)
  • The fourth parameter "200" is the amount of peaks you want to get
  • The fifth parameter "local" tells the script if the file is already on your local machine, use "jamendo" to download the file from jamendo and store it the downloads directory
  • The sixth parameter "json" is the type of output you want, the peaks can get outputted in either json or as a string
  • The seventh parameter tells the script if it should use ffprobe to detect the track format (number of channels, the sampling frequency, ...) or use default values

Using the web interface

  • Use the following url to fetch a song from a remote source (currently only support for jamendo, fork me of you want to add another serive) and get a json containing the peaks http://127.0.0.1:35000/getwavedata?service=jamendo&trackId=1321406

web interface Options (Parameters)

  • trackId: the ID of a track [required / numeric track ID]
  • trackFormat: the audio file format (file exntension) of the track (ogg or mp3) [default ogg]
  • peaksAmount: the amount of peaks you want to get [default 200]
  • method: the http request method to get the remote file [default GET]
  • serverDirectory: the repository where you want the audio files to get stored on the server [default ./downloads]
  • service: the audio file provider you want to get the track from (you can use 'local' if the file is already in your server directory) [default jamendo]
  • detectFormat: tells the script if it should use ffprobe to detect the track format (number of channels, the sampling frequency, ...) or use default values (true or false) [default false]

🚨 Out of memory:

Error "FATAL ERROR: JS Allocation failed - process out of memory"

If the file you want to parse is too big, try increasing the memory limit of your node process, like this:

node --max-old-space-size=1900 cli ./downloads 1100511 ogg 200 local json false

If you still run out of memory try to reduce the sample rate by passing custom values as seventh parameter, for example if the song sample rate is 44100 but runs out of memory, then try again with 22050, like this:

node --max-old-space-size=1900 cli ./downloads 1100511 ogg 200 local json sr=22050

TODOs

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].