Comments (4)
Yes! Thanks @tttp . I have some thoughts in response, and some further questions:
- Functionality is already in place to drag to rotate the "keyboard" (the outer area with black/white keys) and the "scale" (the inner polygon). To begin dragging, you need to find a place where the cursor shows an open hand. On the keyboard, you can drag from any of the inactive keys (because clicking on the active keys plays them). This behavior does make it impossible to drag the keyboard with a chromatic scale where there are no inactive notes, but oh well. Similarly, on the scale polygon you can drag from anywhere that's not a chord emblem. This dragging should also work on touch devices, although I would expect that multi-touch probably would not work.
- I have been working on adding animation to the rotation, but it has actually been quite a challenge. Issues #54 and #17 describe the goals here, which include rotating the keyboard and the scale when the user clicks on those "transpose" and "mode shift" buttons.
- I have also been planning to add a "30 second tour" button to the app that I hope would allow users to better discover the features, like drag to rotate. I've now put those specs into #55.
Questions:
- As you were exploring the tool, were you able do discover the "drag to rotate" feature? If not, do you think you might have discovered it, had those elements rotated into place (with animation) after clicking the "mode" buttons?
from octave-compass.
Hi,
No, I did completely miss the option to rotate. Really nice!
Two suggestions for discoverability:
- maybe using a different cursor would help? eg. all-scroll or move?
- and/or animate both the keyboard and compass when you load the page?
and to sort out the keyboard: keeping the background for spinning, and only play the note when you click on the letter "box"?
from octave-compass.
different cursor
- Yeah I guess you're right that
grab
is probably too similar topointer
and most users will miss that visual cue. I'm not sure aboutall-scroll
though because the app doesn't respond to scroll events and I don't want to give users the impression that it does. What aboutmove
? https://developer.mozilla.org/en-US/docs/Web/CSS/cursor
animate both the keyboard and compass when you load the page
- Yes, excellent. I just added #57 to track this feature
only play the note when you click on the letter "box"
- That's actually how I originally built it, but after playing around with it, I decided it was too easy to miss the note button with your finger, especially on small screens. I wanted to prioritize that functionality β keeping that app as much like an "instrument" as possible, and making it easy for the user to "play" it. So I chose to sacrifice a little bit of "transposition" UX for some gain in "note playing" UX.
from octave-compass.
I just finished a bunch of improvements to this app, which I hope will address this issue. If not, please feel free to comment here with a specific suggestion π
from octave-compass.
Related Issues (20)
- Use a Shepard Tone for the sound HOT 1
- In the "alternate names" overlay, don't display the tonal center name
- troubleshoot no audio on iPhone 6
- Change "Show all" button to hyperlink
- Make "staff" and "about" buttons different since they don't offer paralell things
- Donβt show augmented chords by default
- grouping of the chords HOT 5
- Animate rotation when transposing and mode-shifting HOT 1
- Add "tour" functionality
- Refactor chord data to no longer rely on "weight" property
- Animate the keyboard and scale polygon when the user loads the page HOT 1
- Display available chords as a heirarchical list
- Play scale degrees by pressing the number keys on the keyboard
- Use a status bar at the bottom for general info
- Add a keyboard to play notes in multiple octaves
- Implement Add To Home Screen
- Play piano samples instead of oscillator
- Audio clipping HOT 1
- Disable click-to-hold for buttons within chord table
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from octave-compass.