question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

waveform seek bars

See original GitHub issue

I’ve been thinking about building a music app with Electron for a while since I’m really missing a player that has waveform seek bars on MacOS (like the ultimate music player foobar2000 has on Windows). I just found museeks and really like the clarity of the code and the technology choices (esp. React, Redux, ES6) so contributing looks like a realistic alternative on by behalf.

a possible implementation would be to draw and cache waveforms on demand. with the snippet below, generating a waveform for a 3-4 minute track would take about 1-2 seconds. the images should be cached somewhere and only re-drawn if the content of the audio has changed (cached waveform images could be referenced to with hashes of the audio content). waveform seek bars should be optional and only available if a sufficient version of ffmpeg is detected on a users system.

I have experimented with different methods to draw waveforms with Node a lot, and have come to the conclusion that ffmpeg with node-fluent-ffmpeg is currently the best way. getting a waveform as a PNG stream is as easy as:

ffmpeg(audioInputStream)
  .format('image2pipe')
  .outputOptions(['-frames:v 1', '-vcodec png'])
  .complexFilter(
    'showwavespic=s=1000x200,format=rgba,colorkey=black,colorchannelmixer=rr=0:gg=0:bb=0'
  )
  .pipe();

would you be interested in this kind of functionality or should I start developing a completely separate version?

Issue Analytics

  • State:open
  • Created 7 years ago
  • Comments:36 (11 by maintainers)

github_iconTop GitHub Comments

2reactions
maxjvhcommented, Dec 9, 2016

I don’t think that’s a problem if it’s an optional feature! once a user chooses to enable waveform seek bars in the settings they surely anticipate that something will change in the UI and the change shouldn’t confuse them. but I agree that by default the “classic” seek bar should be used.

1reaction
dkniffincommented, Dec 9, 2016

not meant to be modular, for now

Although, I’d really like to discuss this in #260.

We’re talking about a music player, not something you will spend 8 hours a days on.

But I do spend 8 hours a day (or more) listening to music :trollface:

Read more comments on GitHub >

github_iconTop Results From Across the Web

Components Repository - Waveform Seekbar - foobar2000
A user interface element providing a seekbar that displays the waveform of the playing song, compatible with both the Default and the Columns...
Read more >
foobar2000:Components/Waveform Seekbar ...
Waveform Seekbar is a UI element for both the Default UI and Columns UI that provides seekbar functionality (seeking, position indicator) on ...
Read more >
massoudss/waveformSeekBar: Android Waveform ... - GitHub
Android Waveform SeekBar library. Contribute to massoudss/waveformSeekBar development by creating an account on GitHub.
Read more >
[Help] Waveform Seekbar in default UI? : r/foobar2000 - Reddit
According to the components repository the waveform seekbar should work in the default UI mode, but I can't figure out how to add...
Read more >
Apps with 'Waveform Seekbar' feature - AlternativeTo
foobar2000 is an advanced multi-platform freeware audio player. Suggest and vote on features. Features. Lightweightfoobar2000 ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found