Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
8a9a524
can drag/drop audio file and play using web audio api
gracexu94 Apr 18, 2017
f8d9ac4
basic parsing for volume done. basic version of cloud visualization done
gracexu94 Apr 19, 2017
b0adf9f
updated readme for milestone 1
gracexu94 Apr 19, 2017
a430366
fixed readme layout
gracexu94 Apr 19, 2017
9be0e6d
can drag a new song and have it start playing now
gracexu94 Apr 25, 2017
1f18b52
added pausing mechanism
gracexu94 Apr 25, 2017
59dd6c1
cleaned up code a little
gracexu94 Apr 25, 2017
221733c
removed comments and changed pausing behavior
gracexu94 Apr 25, 2017
09f64ef
set up multiple visualizers/scenes framework
gracexu94 Apr 26, 2017
b329af0
fixed orbit controls
gracexu94 Apr 26, 2017
851ef8e
started second visualizer. can now switch between the two by pressing…
gracexu94 Apr 26, 2017
9f12cb3
added musical component to starfield
gracexu94 Apr 26, 2017
ab1b920
added beat detection capability
gracexu94 Apr 26, 2017
8a0353d
added example song
gracexu94 Apr 26, 2017
79ebb5e
updated readme
gracexu94 Apr 26, 2017
523f49e
started third visualization
gracexu94 May 2, 2017
1c417ce
multiple spirals
gracexu94 May 2, 2017
553388d
added automatic switching between visualizers on the beat
gracexu94 May 3, 2017
1ab40dc
added 4th visualizer
gracexu94 May 3, 2017
79e46f7
fixed object rotation issue
gracexu94 May 3, 2017
b1d7927
tweaks to 4th visualizer
gracexu94 May 3, 2017
fd772d2
updates to 3rd and 4th visualizers
gracexu94 May 3, 2017
f51f47f
added camera movement to 4th visualizer
gracexu94 May 3, 2017
49082e0
Added camera mvmt to 3rd visualizer
gracexu94 May 3, 2017
1cc41d3
final demo commit
gracexu94 May 3, 2017
16b0725
fixed minor bug with switching between scenes automatically after swi…
gracexu94 May 3, 2017
689fee0
forgot to add camera controls for one scene
gracexu94 May 3, 2017
06bc7de
added option to turn off automatic switching and toggle for visibilit…
gracexu94 May 3, 2017
e0f8985
updated instructions on how to manually switch between scenes
gracexu94 May 3, 2017
36a958b
updated readme with final report link
gracexu94 May 3, 2017
17ca30b
disabled dat.gui
gracexu94 May 4, 2017
6611856
disabled gui, for real this time
gracexu94 May 4, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
Binary file not shown.
68 changes: 67 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,67 @@
# FinalProject
# Final Project - Music Visualizer
## CIS700 Procedural Graphics, Spring 2017
## Grace Xu

Using:
- Web Audio API
- Three.js
- Node.js
- web-audio-beat-detector

Ideas for visualizations:
- Basic noise cloud (adapted from HW#1)
- Tempo drives camera control
- Moving line with perturbations driven by amplitude of music

To-do:
- Be able to pause --> DONE
- use spacebar to pause the visualization and music (without getting rid of the baseline visuals)
- Be able to extract useful information from audio file, e.g.: --> DONE
- frequency
- amplitude/loudness
- note?
- tempo (BPM)
- Have at least 4 different interesting visualizations --> 2/4 DONE
- ~Implement camera controller or controller that switches between visualizations at appropiate points in the music~
- Implement framework for switching between multiple scenes with their own cameras --> DONE
- use '0' and '1' on the keyboard to switch manually between current visualizations
- Implement automatic switching between visualizations in response to the music --> DONE
- Add color to at least one of the visualizations --> DONE
- Stretch: make and/or use a different custom shader for one of the visualizations
- Stretch: more interesting/aesthetically pleasing visuals

Original design doc: https://docs.google.com/document/d/13P_lAncqpzsyP1C5bAflfCYHUtCnb10DHtbcka17JA4/edit?usp=sharing
Final report: https://docs.google.com/document/d/1I6gvRuBfne61IPXz5KhxU_N4pdzxq6v4I-XEtToPV70/edit?usp=sharing

Useful links:
- http://stackoverflow.com/questions/153712/creating-music-visualizer
- https://en.wikipedia.org/wiki/Fast_Fourier_transform#Applications
- https://en.wikipedia.org/wiki/Music_visualization
- https://www.airtightinteractive.com/2013/10/making-audio-reactive-visuals/
- https://www.npmjs.com/package/web-audio-beat-detector
- https://github.com/notthetup/awesome-webaudio
- http://joesul.li/van/beat-detection-using-web-audio/
- http://stackoverflow.com/questions/21247571/how-to-get-microphone-input-volume-value-with-web-audio-api
- http://stackoverflow.com/questions/345187/math-mapping-numbers
- https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API
- https://github.com/willianjusten/awesome-audio-visualization
- http://raathigesh.com/Audio-Visualization-with-Web-Audio-and-ThreeJS/
- https://tonejs.github.io/demos
- https://www.html5rocks.com/en/tutorials/webaudio/intro/
- http://stackoverflow.com/questions/14169317/interpreting-web-audio-api-fft-results
- http://stackoverflow.com/questions/14789283/what-does-the-fft-data-in-the-web-audio-api-correspond-to
- http://www.liutaiomottola.com/formulae/freqtab.htm
- http://chimera.labs.oreilly.com/books/1234000001552/ch03.html#s03_2
- http://chimera.labs.oreilly.com/books/1234000000802/ch04.html#deferred_rendering
- https://threejs.org/examples/webgl_geometry_extrude_splines.html
- http://stemkoski.github.io/Three.js/#viewports-dual
- https://rawgit.com/bellbind/c9d885349db114d98734/raw/spiral.html

More inspiration:
- http://hughsk.io/popcorn/
- http://mattdesl.github.io/codevember/21.html
- http://www.dennis.video/
- https://www.uberviz.io/viz/splice/
- http://jojo.ninja/fluctus/
- http://www.michaelbromley.co.uk/experiments/soundcloud-vis/#griffinmcelroy/sets/the-adventure-zone-ost
- https://tariqksoliman.github.io/Vissonance/
1 change: 1 addition & 0 deletions bundle.js.map

Large diffs are not rendered by default.

25 changes: 25 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<title>Final Project: Music Visualizer</title>
<style>
html, body {
margin: 0;
overflow: hidden;
}
canvas {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<label id="guide" style="position:fixed;color:gray; margin:10px;font: 400 14px Verdana, Arial, sans-serif; text-shadow: gray 0 0 0;">Drag and drop a mp3 file!</label>
<label id="visualizerInfo" style="position:fixed;color:gray; margin:10px;margin-top:30px;font: 300 14px Verdana, Arial, sans-serif;">
Press spacebar to pause music, or 'p' to pause camera movement and explore with the mouse.<br>
Press 's' to turn off automatic switching between the visualizers.<br>
Cycle through '0', '1', '2', and '3' to see all the different scenes.<br>
Press 't' to toggle visibility of these instructions. </label>
<script src="bundle.js"></script>
</body>
</html>
1 change: 1 addition & 0 deletions node_modules/.bin/acorn

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/babylon

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/errno

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/gasket

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/gh-pages-deploy

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/jsesc

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/json5

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/loose-envify

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/mime

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/mkdirp

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/ncp

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/ndjson

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/npm-execspawn

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/regjsparser

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/rimraf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/sha.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/uglifyjs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/webpack

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/webpack-dev-server

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading