Git Product home page Git Product logo

music-visualizer-4-friend's People

Contributors

c-kenny avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

music-visualizer-4-friend's Issues

Feature suggestions

  • Make inner waveform change stroke width, colour and zoom to music beat
  • Allow the positions of the diamonds + fins to be "toggle-able". Right now it works on an offset + user joystick position, so at rest it snaps back to the original place. It was suggested to be able to keep the fins out a fixed position that the user is happy with without having to leave their thumb in that position.

Refactor ideas

Divide classes up into managed objects such as diamonds, bezier fins etc for easier state management

Add logging

Should be able to toggle logging with 'L' or 'l' as keyboard shortcuts to stdo

Make more elements dynamic with a Xbox 360 controller

Currently the (x,y,a,b) and "left-joystick" can be used to control elements in the Visualizer.

This leaves:

  • Right joystick
  • Directional-pad
  • start / options buttons
  • left and right triggers
  • left and right top bumpers
  • Xbox 360 home button (? can we even capture this?)

Ideas:

  • Right joystick controls the rotation of the inner fins
  • Directional pad controls volume / cycle between songs in a playlist/folder
  • Triggers alter the r/g/b values, if can capture trigger depletion/100
  • Bumpers: switch between style of visualizations, these are the most "snappy" buttons on the controller
  • Xbox 360 home button, toggle showing story of the visualizer

Bezier fins don't adjust to canvas size

The fins which build up the inner piece don't resize with the canvas (like the diamonds do).

This is because they were created with a small 400 x 400 canvas size to pay tribute to the original small Halo 3 emblems.

Well now we are on laptop screens so it needs to scale up.

Change the bezier fins to be relative to canvas height/width.

Attached screenshot of how they look on a 1200x1200x canvas size.

Enable full screen mode

Currently the frame is restricted to a pre-defined width/height. This is likely be an interesting change, given any mathematically defined shapes were on the pretence that the output screen was fixed size.

Outcomes:

  • Get full screen mode working
  • Set a keyboard shortcut

Visualizer sometimes fails to re-open song again

The visualizer appears to play the song the first time, but sometimes it can't play the same song again in quick succession.

Leading to errors like:

getsockopt(): Bad file descriptor

and

Assertion 'pa_close(m->fd) == 0' failed at pulsecore/shm.c:288, function pa_shm_free(). Aborting.
Could not run the sketch (Target VM failed to initialize).
For more information, read revisions.txt and Help โ†’ Troubleshooting

and

RunnableTask.run(): A caught exception occured on thread main-Display-.x11_:0.0-1-EDT-1: RunnableTask[enqueued true[executed false, flushed false], tTotal 0 ms, tExec 0 ms, tQueue 0 ms, attachment null, throwable java.lang.RuntimeException: Waited 5000ms for: <606b9b77, 2bb22bf5>[count 2, qsz 1, owner <main-FPSAWTAnimator#00-Timer0>] - <main-Display-.x11_:0.0-1-EDT-1>]
java.lang.RuntimeException: Waited 5000ms for: <606b9b77, 2bb22bf5>[count 2, qsz 1, owner <main-FPSAWTAnimator#00-Timer0>] - <main-Display-.x11_:0.0-1-EDT-1>
	at jogamp.common.util.locks.RecursiveLockImpl01Unfairish.lock(RecursiveLockImpl01Unfairish.java:198)
	at jogamp.newt.WindowImpl$ResizableAction.run(WindowImpl.java:2118)
	at jogamp.newt.DisplayImpl.runOnEDTIfAvail(DisplayImpl.java:450)
	at jogamp.newt.WindowImpl.runOnEDTIfAvail(WindowImpl.java:2782)
	at jogamp.newt.WindowImpl.setResizable(WindowImpl.java:2154)
	at com.jogamp.newt.opengl.GLWindow.setResizable(GLWindow.java:370)
	at processing.opengl.PSurfaceJOGL$5.run(PSurfaceJOGL.java:452)
	at com.jogamp.common.util.RunnableTask.run(RunnableTask.java:127)
	at jogamp.newt.DefaultEDTUtil$NEDT.run(DefaultEDTUtil.java:375)
DefaultEDT.run(): Caught exception occured on thread main-Display-.x11_:0.0-1-EDT-1: RunnableTask[enqueued false[executed true, flushed false], tTotal 5001 ms, tExec 5001 ms, tQueue 0 ms, attachment null, throwable java.lang.RuntimeException: Waited 5000ms for: <606b9b77, 2bb22bf5>[count 2, qsz 1, owner <main-FPSAWTAnimator#00-Timer0>] - <main-Display-.x11_:0.0-1-EDT-1>]
java.lang.RuntimeException: Waited 5000ms for: <606b9b77, 2bb22bf5>[count 2, qsz 1, owner <main-FPSAWTAnimator#00-Timer0>] - <main-Display-.x11_:0.0-1-EDT-1>
	at jogamp.common.util.locks.RecursiveLockImpl01Unfairish.lock(RecursiveLockImpl01Unfairish.java:198)
	at jogamp.newt.WindowImpl$ResizableAction.run(WindowImpl.java:2118)
	at jogamp.newt.DisplayImpl.runOnEDTIfAvail(DisplayImpl.java:450)
	at jogamp.newt.WindowImpl.runOnEDTIfAvail(WindowImpl.java:2782)
	at jogamp.newt.WindowImpl.setResizable(WindowImpl.java:2154)
	at com.jogamp.newt.opengl.GLWindow.setResizable(GLWindow.java:370)
	at processing.opengl.PSurfaceJOGL$5.run(PSurfaceJOGL.java:452)
	at com.jogamp.common.util.RunnableTask.run(RunnableTask.java:127)
	at jogamp.newt.DefaultEDTUtil$NEDT.run(DefaultEDTUtil.java:375)
java.lang.RuntimeException: Waited 5000ms for: <606b9b77, 2bb22bf5>[count 2, qsz 0, owner <main-FPSAWTAnimator#00-Timer0>] - <main-FPSAWTAnimator#00-Timer0-FPSAWTAnimator#00-Timer1>
	at processing.opengl.PSurfaceJOGL$2.run(PSurfaceJOGL.java:410)
	at java.lang.Thread.run(Thread.java:748)
RuntimeException: Waited 5000ms for: <606b9b77, 2bb22bf5>[count 2, qsz 0, owner <main-FPSAWTAnimator#00-Timer0>] - <main-FPSAWTAnimator#00-Timer0-FPSAWTAnimator#00-Timer1>

and

cb_connection_has_error() returned true
mmap() failed: Bad file descriptor
getsockopt(): Bad file descriptor
xcb_connection_has_error() returned true
Invalid shared memory segment size
Failed to create permanent mapping for memfd region with ID = 3067716039
Failed to regester memfd mempool. Reason: could not attach memfd SHM ID to pipe
IllegalArgumentException: Mixer not supported: default [default], version 4.19.0-5-amd64

Closing the visualizer and waiting ~60s seems to resolve this. Thinking the file may remain open when though it's supposed to close() upon exit.

Using the hand drawn style kills FPS performance

The hand drawn style provided by the Handy library, creates a less formal style of the visualizer. We've noticed that when this option is toggled on, frame rate performance drops.

To investigate:

  • Do we have to perform the calculations on each frame
  • Can we get away with more "loose" edges, and less demanding stressful operations per line drawn.

Currently 'h' will toggle on the hand drawn style.

Add play/pause

As a visualizer enthusiast, I should be able to toggle play/pause using the keyboard shortcut 'p' or 'P'.

Tell the story of the visualizer, in the visualizer

As a new curious user, I want to know the origins of why this visualizer was born.

Explain:

  • inspiration of visualizer
  • where the shape elements come from (i.e. the H3 emblem)
  • ability to break the visualizer into smaller disgest-able chunks

While demo'ing the visualizer to a friend, it became clear that the visualizer combined with its story was more powerful than the visualizer itself.

Going forward, I'm anticipating a 'start-up screen state' which lays out the context of how this was born.

Video demo is not current.

Ideally have a script which uses ffmpeg/obs to capture the output, so that keeping an example output up to date with the source is seamless.

Add ability to choose new song

Right now the visualizer loads 1 song on repeat. Would be nice to be able to select/open a new song or even maybe a directory for extra credit.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.