Upgrade to Pro — share decks privately, control downloads, hide ads and more …

dweet player

Ates Goral
October 17, 2017

dweet player

Audiovisual sequencer for tweet-sized JavaScript effects

Ates Goral

October 17, 2017
Tweet

More Decks by Ates Goral

Other Decks in Programming

Transcript

  1. Some JavaScript golfing communities CodeGolf: https://codegolf.tk/ - friendlier for entry-level

    golfing jS1k: http://js1k.com/ - next round coming up! • https://atesgoral.github.io/bd1k/ • http://js1k.com/2017-magic/demo/2827 Slack: http://register.jsgolf.club - come hang out with golfers! reddit: https://www.reddit.com/r/codegolf/ StackExchange: https://codegolf.stackexchange.com/
  2. dweet runtime • c - canvas • x - 2D

    context • t - time • S - Math.sin • C - Math.cos • R - RGB colour utility
  3. Then find some cool music Free Music Archive: http://freemusicarchive.org/ •

    Electronic: IDM • Electronic: Dubstep • Electronic: Chiptune • etc. Copy the track detail page URL. http://freemusicarchive.org/music/Pierlo/Olivetti_Prodest/05_San_Diego_Cruisin Or just a URL to any MP3 file (but beware of licensing issues!)
  4. Then go to dweet player The URL format is: /demo/v1/.../.../…

    Where: • the first … is for the loader dweet ID - using * picks a random one • the second … is for a comma-separated list of dweet IDs • and the third … is for the audio track URL https://dweetplayer.net/demo/v1/*/3252/http://freemusicarchive.org/music/Pierlo/Oli vetti_Prodest/05_San_Diego_Cruisin
  5. Beat detection source → analyzer → script processor → destination

    source → delay → gain → destination beat = root mean square (RMS) of FFT bins / running average of RMS > threshold
  6. Time warping • Suffix the dweet id with t to

    “rush” time to the beat • Suffix the dweet id with T to “bounce” time to the beat https://dweetplayer.net/demo/v1/*/3307~20t10,3307~8T80/http://www.metronomeb ot.com/iPhoneClickTracks/MetronomeBotBasicClickTrack120.mp3
  7. Scene transitions • @ - exact seconds • ~ -

    approximate seconds (align to next beat) • ! - exact frames
  8. Mirror image • h - horizontal mirror (at given location)

    • v - vertical mirror (at given location)
  9. Planned • S - distort sine function with FFT bins

    • C - distort cosine function with FFT bins Tweet ideas to @atesgoral
  10. Work-in-progress demo Scene transitions are not timed well yet :(

    https://dweetplayer.net/demo/v1/3097/261~7,637~3,637!1h6,637!1h7,637!1h8,637!1h 9,637!1h10,93!5,1357b,838~10t3,2030~10T,2873~15t,2220~8b,1025~10z,977,977h=, 977v=,309~8w,1944t2h,1944t2v/http://freemusicarchive.org/music/Boss_Bass/Love _For_Everyone_Everywhere/08_-_Boss_Bass_-_Extreme_Bass_Terror
  11. Info and source code https://github.com/atesgoral/dweet-player Behind the scenes: • Scrapes

    dwitter.net pages for dweet meta + source • Reads meta from FMA (via API) and MP3 ID3 • Aggressive caching of meta + audio • Per-dweet runtime (sandboxing) • Pure-CSS icons! Wow! • Plain old jQuery + Handlebars! Yay! • Node.js on Heroku, fronted by Cloudflare