Forum - Banjo Ben Clark

Beta testers needed / Play with my app! It's fun!

I received the second email today and it looks great.

1 Like

So cool. Automation is magical. Thanks for the confirmation!

1 Like

@Mark_Rocka This thing is awesome.
I used it to work on my vamping after this weekend’s lesson and I love it.

1 Like

Great to hear! Thank you!

I’ve had enough users (including myself more than once) wonder why there was no sound on their iphones… only to discover the switch on the side of the phone was set to Silent.

I know some apps actually still play sound when that switch is set to silent, so I dug in today. Long story short, I got it working. The app now respects the phone’s current volume setting regardless of the switch position.

I have a feeling this is going to save me a lot of trouble tickets.

2 Likes

Broken link @Mark_Rocka

Bottom of this link https://cqsys-ares.com/mark_sandbox/

Header: Your Next Jam Starts Here

Start Playing Free https://cqsys-ares.com/app Page not found

Also at the top of the page Try my trainer free

We’re not using that link any more. All of my production code now rolls out to jamtrainer.com

You can get straight to the app by going to https://jamtrainer.com/app

2 Likes

@Mark_Rocka, I received the third email today. It looks great.

1 Like

Nice! Thanks for the update! I would have never guessed that getting emails to look good was so hard. Turns out, all the various email apps render them differently, so finding something that looks decent on all of them is a lot of work.

Glad it came through looking nice.

1 Like

Just for the record, I also got the ear training email today and it looked good! No issues spotted.

2 Likes

This is such good news. You have no idea. Thanks!

Just got a chance to register and poke around in the app, this is incredible. Nice work!

1 Like

I know I’ve been a bit quiet for a few days. I haven’t stopped working on the project. Quite the opposite, in fact. It’s just that I’ve been cleaning the code and making it more efficient. A few days of streamlining things now will make new additions going forward way easier. For example, if we decide we need a new color theme, it’s now literally a matter of giving a specific set of variables new color IDs and everything just falls in to palce.

It wasn’t ALL grunt work, though. I did spend a big chunk of today adding a walking bass line. Check it out and let me know what you think. Just turn on Walking bass in the side bar under Audio/Mix.

image

2 Likes

I listened to the walking Bass on a couple of songs. It was walking the entire way on every measure; that is, it was playing on every & in every square. I am not an expert on this; though it seems the walking notes are usually for leading into chord changes.

Walking guitar notes do that. A walking bass line usually walks the whole song. Not exactly a bluegrass thing, but it fits in enough songs to make it an option. Maybe I should make a 3rd bass option to walk into chord changes like guitar walking does.

2 Likes

What you said, not exactly a bluegrass thing makes sense. I believe it will be good add the 3rd bass option to walk into the chord changes.
I just googled the topic, here is an excerpt: (The Tasteful Moderation section for the bluegrass application).

"When to Use It:

  • Instrumental Solos: It is highly effective during fast-tempo fiddle, mandolin, or banjo solos to add a swing or jazzy feel.
  • Leading into a New Section: Bass players often use a walking line to transition from the Chorus back to the Verse, or the Verse into the Chorus.
  • Tasteful Moderation: Unlike jazz, where walking lines are constant, bluegrass bass usually limits walking to strategic measures to avoid cluttering the vocal lines."
1 Like

Was playing around with Walking Bass and Walking Guitar last night and noticed that on 12 Bar Blues when I turned on Walking Guitar there was no guitar walking.

1 Like

Interesting! Turns out, it has to do with the fact that there are 7th chords messing up the walk. I’ll get on that now. Thanks!

Found it! I have a helper that strips out the variations in chords so the walk cycle can fire without having to monitor every chord and every variation. 7th chords weren’t in the list.

I’ll get that fix loaded up later today. Thanks for the report!

Whew! What a day! Today was spent chasing bugs and more code efficiency. Everything crossed out was tested today, and any related bugs resolved and retested. Once I got done with the list, I had another one created. Those are the ones at the bottom that aren’t crossed out. That’s what I’ll be starting on tomorrow.

This is the boring part of this project, but possibly the most necessary. If anyone wants to jump in on a section or two, let me know.

  1. Playback interruptions & races (your richest vein)
  • Double-tap / triple-tap Play fast → exactly one count-in, one song, no doubled audio
  • Press Pause during the count-in → cancels cleanly (no song starting from measure 1 a beat later)
  • Press Stop during the count-in → clean, returns to Ready
  • Play → Pause → Play → Pause rapidly several times → no zombie scheduler, highlight stays on the right cell
  • Tap a cell to play-from while already playing → old playback dies, new one starts clean
  • Restart button mid-song, and mid-pause → fresh count-in from top both times
  • Hit Stop exactly on a section boundary / chord change → no timeSig-undefined crash, no double-boom at the seam
  • Let a song loop many times unattended → no drift, no slowdown, no stacking
  1. Audio lifecycle (the iPad-at-a-jam reality)
  • Start a song, background the app for 30s, return → auto-pauses, resumes clean (no machine-gun burst of stacked beats)
  • Background during the count-in specifically → returns sanely
  • Let the app sit idle 5+ min, then Play → first count-in click and downbeat both audible (the cold-start fix)
  • Phone call / Siri / alarm mid-song (iOS) → auto-pause, then auto-resume after
  • Plug/unplug headphones or a Bluetooth speaker mid-song
  • Flip the hardware mute switch mid-song → audio keeps coming through (media channel)
  • Manually lock the screen mid-song → playback auto-pauses; unlock → auto-resumes. (Wake lock prevents the automatic idle-lock during a song; it does not keep audio playing through a deliberate lock.)
  1. Network flakiness & offline (where the phantom-library class hides)
  • Cold load (clear site data) on slow/throttled connection, then go offline as the library appears → every card still opens (not phantom)
  • Open a song offline, edit, save → persists; reconnect → syncs
  • Go offline mid-session-sync
  • Toggle airplane mode on/off repeatedly while browsing the library
  • First-ever visit offline with empty cache → Play shows the right “connect to internet” message, and a later online Play actually recovers (doesn’t stay silently dead)
  • After a deploy, follow the SW update steps — then also test the stale case (skip the update) to confirm you can tell the difference
  1. Editing edge cases & the dirty/save prompt
  • Edit a chord, hit Save, immediately hit Back → no false “unsaved changes” prompt
  • Toggle a setting (walking notes, capo) then toggle it back → behaves sanely on Back
  • Open a global song, edit it, Back → “Save Copy” path works
  • Multi-cell select within a section → Copy / Cut / Delete; check no orphaned split cells left behind
  • Delete a fill cell and a split cell → reverts to underlying chord / cleans up correctly
  • Build a song with every meter (2/4, 3/4, 4/4, 6/8, 9/8) in different sections, then play through the transitions
  • Per-section BPM differences + change global BPM mid-playback → all sections shift by the delta live
  • Capo + transpose + change Accidentals (sharps/flats/auto) all on one song → chord names and sounding names stay correct everywhere (grid cells, split cells, /bass labels)
  1. Boundary / “weird data” inputs
  • Very long song name, lyrics, notes; emoji / special chars in fields
  • A song with one cell; a song with a huge number of sections/measures
  • Max BPM, min BPM; capo at extreme values
  • Empty section; section with only effect/rest/stop cells
  • Import a Strum Machine export with voltas, half-measures, 6/8 mid-bar changes → imports with the ⚑ flag and warnings, never a failed/silent import
  • Import a JT backup → restores songs + lists, skips existing IDs
  1. Sharing / embed / session (multi-device)
  • Generate a share link, open it logged-out → “Save to My Library” works
  • Embed link in an iframe somewhere → plays, editing UI hidden
  • Host a Jam Session, join from a second device → song + mix pushes to follower; follower who owns the song uses their own copy
  • Follower tweaks their mix mid-session → host heartbeats don’t stomp it
  • Share/session while an instrument is temporarily muted → recipient gets that mix (known tradeoff — confirm it’s the intended behavior, not a surprise)
  1. MP3 export parity
  • Export a 4/4 song → no long silent tail; length is right
  • Export with swing turned up → exported swing matches live
  • Export a song with fills, walking notes, count-in, multiple meters → matches what you hear live, beat for beat
  1. Input methods & accessibility
  • Foot pedal: works after backgrounding/foregrounding (focus regained); starts playback; arrows/PageUp/Space all fire
  • Spacebar and pedal honor the sbKeyAction pref (pause vs stop), and “pause” shows the floating popup
  • Tap-to-edit the BPM number and Max BPM number → the input keeps focus (pedal catcher doesn’t steal it)
  • All four themes on every screen — especially selected/playing cells, toggles, colored chips (the night theme’s blue-on-blue class of bug)
  • Jam Mode on a wide chord (F#m, B ♭) → font auto-sizes to fit, doesn’t overflow
  1. Separate audio paths (don’t forget these exist)
  • Games (Name That Chord, Degree Trainer) after the app’s been idle → first chord isn’t clipped (they use a different audio entry than the song scheduler)
  • Tuner + drone
  • Run a game, then go straight to playing a song → audio context is healthy for both
  1. Account & auth lifecycle
  • Sign up → verification email arrives; tap link → verified banner clears
  • Password reset end-to-end; reset for an unregistered email (should silently 200, no enumeration)
  • Log in on a second device → songs sync down
  • Sign out mid-edit with unsaved changes → prompted?
  • Token expiry / revocation while online (vs the offline-null suppression you already hardened)
  1. Lists & list playback
  • Create / rename / delete a list; add one song to multiple lists
  • Play a whole list → does it advance song-to-song correctly, honor each song’s tempo/meter?
  • Delete a song that’s a member of a list → removed from the list cleanly, no dangling entry
  • Prev/Next song navigation within a list vs the full library
  1. Global library, publishing & admin review
  • Publish a song already in the global library → Replace / New Entry / ✕ modal; name-collision (not just ID) routes to Replace
  • Publish carries savedMix; publisher-account gating
  • Admin review queue: approve/reject; an approved song appears for a different user
  • Open a global song, edit, Back → “Save Copy” creates a personal copy (don’t mutate global)
  1. Arrangement editor
  • Build a custom arrangement (Intro, A×2, B, A); reorder, duplicate, remove
  • Arrangement + per-section meter/BPM changes → transitions play right
  • Delete a section that’s referenced in the arrangement → arrangement updates, no crash
  1. Walking bass across meters & combos
  • Walking bass in 2/4 and 3/4 (only 4/4 is built — confirm the others fall through gracefully , no crash/wrong octave)
  • Walking bass + capo, + guitar licks, + splits/effects, + the octave-leap-resolve rule at phrase boundaries
  • Walking bass MP3-export parity vs live
  1. Count-in / loop-range / auto-speed-up matrix
  • Count-in on/off, double, “every repeat” — in each meter, and with play-from-cell (which skips count-in)
  • Loop a single cell; loop range + walking bass; loop range that starts mid-section in a different meter
  • Auto speed-up: raises BPM each loop to Max, then holds; Max BPM tap-to-edit; Auto+ with a loop range
  1. Effect/split/cell-conversion combinatorics
  • Every cell type (rest, skip, ring ◇, stop-cut !, note ♩, root/slash, split-half, split-third) created, converted between, and deleted
  • Split a cell then apply an effect to one half; copy/paste cells that carry effects and fills
  • A fill spanning a section boundary; transpose/key-change with fills present (underlying chord rewrite)
  1. Legacy data & storage limits
  • Open a very old saved song (legacy feel, missing swingIntensity / walking / walkingBass / per-section timeSig+bpm) → loads with sane defaults, no false-dirty
  • SM imports with each warning category (volta, half-measure, 6/8 mid-bar, 3-chord, push) → ⚑ flag, never silent fail
  • localStorage quota exceeded (_persistSongs falls back to personal-only)
  1. Tab view parsing & sync
  • Tab with the label-line vs tab-line | asymmetry (beat 4 of even measures); tab offset; tab loop
  • Highlight stays aligned across a meter change; edit tab text then play; Tab ⇄ Jam Mode mutual exclusivity
  1. Chrome you rarely re-test

*Chord fingering charts: every instrument × type, Scales mode, key changes (watch the 1st-string dot-clip fix)

  • Print → confirm pure B&W in every theme, font sizes, diagram inclusion, long-song page breaks
  • Cross-tab: same account in two tabs editing the same song; SW CACHE_VERSION bump forcing a sample re-fetch, then offline
1 Like