Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sequencer Implementation #130

Open
10 of 50 tasks
jmidt opened this issue Aug 12, 2019 · 2 comments
Open
10 of 50 tasks

Sequencer Implementation #130

jmidt opened this issue Aug 12, 2019 · 2 comments
Assignees

Comments

@jmidt
Copy link
Member

jmidt commented Aug 12, 2019

Sequencer

The sequencer controls the 8 samplers. When editing the sequencer steps, the musical keyboard keys change to change sampler (black keys) and edit steps (white keys). Features are below, with those already implemented marked with a check mark.
GFI marks something suitable for a newcomer to get started on.

  • Tempo (controls global clock)
  • Start/stop (controls global clock)
  • Sequencer screen
    • Per-trigger settings
      • 3. conditional trigs
        • Chance / 2 in 4 etc
        • Draw 2 in 4 as ○ ● ○ ○
        • Single encoder, turn CW for X in Y, CCW for chance
      • 2. velocity
      • parameter locks?
    • Global
      • 1. Tempo / swing
      • 4. Sequence length
  • Elegant solution for substeps
    • Ratchets/Retriggers?
    • Finite list of selectable combinations
    • Full access to individual substeps with led "zoom"
  • Move file handling out to the Sequencer, from the individual Samplers.
  • Mutes
  • 5. Sends for samplers
    • Sampler objects own their own Sends
    • Sequencer::sends_screen() to get
  • 6. Variations
    • 1 base sequence, 4 variations, of which zero or one can be active at any time
    • variations are "diffs", i.e. only contain changes to the base sequence, not a copy of the base sequence
    • variations can be
      • queued for the next "round" (click)
      • switched on instantly and held with a momentary switch (shift + click)
      • queued and enabled for all future rounds
      • switched on instantly and kept on
    • step-toggles in variations have three states: on, off, "as in base"
  • Future extensions:
    • Longer sequences than 16 steps.
      • Pages? +/- could be reused to switch pages
    • GFI Long press (or press and encoder turn) does not toggle step
    • Choke groups
    • Mute groups
    • Parameter locks
      • Only sampler and sends props need to be lockable
    • Velocity view - view velocity on LEDs.

Global clock

  • Count microsteps (192?) with an unsigned int
  • clock range in ProcessData (last time, current time)
  • check if the desired step is in clock range
  • Sent from engine manager
  • Control through separate ClockManager
    • void start(), void stop(bool reset = true), void reset()
    • float bpm()
  • Future extensions
    • "Subscribe" to clock "events", i.e. handle every 16th etc.
      • Done by checking data.clock.contains_multiple, data.clock.count_multiple and data.clock.position_of_multiple
    • GFI swing
@topisani topisani self-assigned this Aug 14, 2019
@jmidt
Copy link
Member Author

jmidt commented Aug 15, 2019

I added a small point about switching to a sampler track automatically when pressing either sequencer or sampler button.

@jmidt
Copy link
Member Author

jmidt commented Aug 19, 2019

Added a point about the file handling. This should be done in the sequencer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants