nicolasbrailo / PianOli

Android baby game
GNU General Public License v3.0
59 stars 18 forks source link

Available chord progressions #95

Open RustoMCSpit opened 8 months ago

RustoMCSpit commented 8 months ago

so i could play chords i want looped and then i could do melodies on top

juleskers commented 7 months ago

I'm not in favour of this idea, but won't close it just yet until @nicolasbrailo and @pserwylo have had a say.

Given that the current app has zero understanding of beats, or even time at all, there is no foundation to build upon.

Additionally, the UI required for e.g. loop resetting, clearing button, displaying where in the current loop we are, etc would turn this app from a child's toy into a music workstation, which I don't think is a good direction for PianOli.

@RustoMCSpit from the overall direction of your (good!) suggestions (thanks for being involved!) I get the impression you are looking for something far more capable than the children's toy that is PianOli. Have you had a look at https://onlinesequencer.net/ yet? That is a complete, browser-based midi sequencer, far more capable than PianOli is ever hoping to be.

RustoMCSpit commented 7 months ago

mmm, well maybe a good idea then would be to include https://github.com/ldrolez/free-midi-chords and let users see what notes are being played by shading the note as pressed. this would let users play with putting melody over chords and could be put below "Available melodies" as "Available chord progressions"

RustoMCSpit commented 7 months ago

im chaging the title

juleskers commented 7 months ago

Ah, thanks for including that link, that really clears up what you were getting at.

Some form of "background beat" I think would fit, and now that you mention it, is also commonly seen on physical children's toys, so it would definitely fit our audience.

I also think "play the following hardcoded notes repeatedly" is far more achievable than "loop arbitrary notes from user input".
We could even cheat and make a single long recording of the beat, and repeat that (which is trivial in the android API, and would sidestep all the timekeeping from our code)

I also like how a metronome / background beat provides a natural learning progression from "hitting the screen makes noise" to "making noise with rhythm".

RustoMCSpit commented 7 months ago

I also like how a metronome / background beat provides a natural learning progression from "hitting the screen makes noise" to "making noise with rhythm".

well then with the chord progression youd have to be able to input a bpm. you could also have it alternate between two chord progressions every 4 bars

juleskers commented 7 months ago

As a side note, I am having to look up about 70% of the musical jargon you use, and it's a good learning experience :-) I appreciate how your musical background is helping us think more in the direction of musical education!

Links for other musically-challenged (did I do a good job duck-duck-go-ing?:

As for the feature request specifically, I am struggling a bit on how to chart a path towards the "full" feature set.

  1. chord progressions have the advantage that they don't require additional sound samples, but seem to have a very deep configurability hole. as in: a musicial power user would want lots of knobs to turn to make it "sound good", "pleasing" and "interesting". I personally feel very overwhelmed at the breadth of this, and I don't see a middle ground between "uselessly limited" and "full-on composing configuration", but that is likely my extremely-limited musical background showing.
    So far, I have learned:
    • at which BPM
    • Which chords is played (e.g. C-major, G-minor)
    • Which progression(s) / inversions are chained (i.e. is it always C F G C F G .., or do we "mix it up")
    • Maybe alternate (in what sequence?) with a secondary chord?
    • There even seems to be something called "circle progressions"
  2. A simple metronome would perhaps be a good "minimal viable product" for "playing something automatically at all".
    • would need two new samples, one "accent" tick for the primary beat, one "normal" tick for the others (e.g. in 3/4 time: TICK-tick-tick, TICK-tick-tick)
    • Configuration knobs aren't too bad: BPM and time (3/4, 4/4, 3/8, others?)
  3. a 'cheat' alternative could be to provide a small selection of hardcoded "background beats" (for example "simple metronome 3/4", "simple metronome 4/4", "jazzy", "pop" and "rock") as long audio tracks, that loop forever.
    • Advantage: no time-keeping needed whatsoever in our code
    • Disadvantage: no time-keeping in our code, so no incremental progress towards the other features
    • Disadvantage: no BPM options, since I don't think the Android audio API provides playback-speed options (at least not without distorting the frequencies)
  4. Full on looping of user-input is a milestone I want to list for completeness sake, but I think it's too far beyond the current capabilities of our children's toy to delve to deep in its design. Options 1+2 would however help in building some foundations in that direction.
RustoMCSpit commented 7 months ago

we could just have the user select a chord progression from https://github.com/ldrolez/free-midi-chords and input a bpm and have it loop as a minimal viable product.

we can make it more technical down the line

RustoMCSpit commented 7 months ago

circle progressions

do you mean this? https://www.youtube.com/watch?v=CqEPCpYywVg