clone45 / voxglitch

Modules for VCV Rack
GNU General Public License v3.0
98 stars 16 forks source link

ArpSeq: Tooltip Displays "Perfect Fifth Up" at fourth #234

Open commonhare opened 6 months ago

commonhare commented 6 months ago

As title says. Did not check all the other positions.

clone45 commented 6 months ago

Thanks for reporting this. I'll try to get a patch out in a week or two with both of your bugs patched!

commonhare commented 6 months ago

If you want to wait a day, I can try to go through every inch of it. (Just a hobbyist, no skills, but can be thorough in an amateur way.)

On Sat, 6 Jan 2024 at 18:33, Bret Truchan @.***> wrote:

Thanks for reporting this. I'll try to get a patch out in a week or two with both of your bugs patched!

— Reply to this email directly, view it on GitHub https://github.com/clone45/voxglitch/issues/234#issuecomment-1879777322, or unsubscribe https://github.com/notifications/unsubscribe-auth/AT3D2WULG6KSE4BBMWOHLVDYNGKIRAVCNFSM6AAAAABBOVHVGCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNZZG43TOMZSGI . You are receiving this because you authored the thread.Message ID: @.***>

clone45 commented 6 months ago

That's way to kind of you! If it would bring you happiness, by all means!!

commonhare commented 6 months ago

Just to check I'm understanding how things work, please consider this setup (screen shot attached) that appears to reveal incorrect quantisation for keys other than C-Major:

If this is done with tables/arrays, maybe it's just a copy/paste error.

I just want to make sure I am not fundamentally misunderstanding your module, VCV Rack in general, math, music, the world...

Very respectfully, Brett

On Sat, Jan 6, 2024 at 7:21 PM Bret Truchan @.***> wrote:

That's way to kind of you! If it would bring you happiness, by all means!!

— Reply to this email directly, view it on GitHub https://github.com/clone45/voxglitch/issues/234#issuecomment-1879792453, or unsubscribe https://github.com/notifications/unsubscribe-auth/AT3D2WR3TLJJCJ7VMAWCZA3YNGP35AVCNFSM6AAAAABBOVHVGCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNZZG44TENBVGM . You are receiving this because you authored the thread.Message ID: @.***>

clone45 commented 6 months ago

Hi Brett!

Your screenshot didn't come through. Could you send it to my email at clone45@gmail.com?

It's highly likely that there are some bugs that need addressing. I trusted ChatGPT to generate my scale arrays, and I'm finding some discrepancies. However, I haven't located the ones that you're talking about just yet.

My first place that I looked was my scale definitions:

const bool Quantizer::chromaticScale[12] = { true, true, true, true, true, true, true, true, true, true, true, true };
const bool Quantizer::majorScale[12] = { true, false, true, false, true, true, false, true, false, true, false, true };
const bool Quantizer::minorScale[12] = { true, false, true, true, false, true, false, true, true, false, true, false };
const bool Quantizer::pentatonicScale[12] = { true, false, true, false, false, true, false, true, false, false, true, false }; // Possibly incorrect
const bool Quantizer::dorianScale[12] = { true, false, true, true, false, true, false, true, false, true, true, false };
const bool Quantizer::phrygianScale[12] = { true, true, false, true, false, true, false, true, true, false, true, false };
const bool Quantizer::lydianScale[12] = { true, false, true, false, true, false, true, true, false, true, false, true };
const bool Quantizer::mixolydianScale[12] = { true, false, true, false, true, true, false, true, false, true, true, false };
const bool Quantizer::harmonicMinorScale[12] = { true, false, true, true, false, true, false, true, true, false, false, true };
const bool Quantizer::melodicMinorScale[12] = { true, false, true, true, false, true, false, true, false, true, false, true };
const bool Quantizer::bluesScale[12] = { true, false, true, true, true, true, false, true, false, true, true, false }; // possibly incorrect
const bool Quantizer::wholeToneScale[12] = { true, false, true, false, true, false, true, false, true, false, true, false }; // possibly incorrect
const bool Quantizer::diminishedScale[12] = { true, true, false, true, true, false, true, true, false, true, true, false }; // possibly incorrect

In order to test them, I wrote a python script that, given a string in the format "C, D, Eb, F, G, A, B", creates an array of booleans. Using that script, I fed all of the scales in the compared the output to my current arrays. I found that 4 scales don't seem to match up and may need updating: pentatonic, blues, whole tone, and dimished.

However, if you're seeing issue with the major and minor scales, the I definitely need to dig in deeper.

Here's my python script:

import re

def scale_to_booleans(scale_string):
    # Map of notes to their positions in a 12-note octave starting with C
    note_map = {
        'C': 0,
        'C#': 1, 'Db': 1,
        'D': 2,
        'D#': 3, 'Eb': 3,
        'E': 4,
        'F': 5,
        'F#': 6, 'Gb': 6,
        'G': 7,
        'G#': 8, 'Ab': 8,
        'A': 9,
        'A#': 10, 'Bb': 10,
        'B': 11
    }

    # Initialize an array of 12 booleans, all set to False
    notes = [False] * 12

    # Split the input string into individual notes
    scale_notes = re.split(r'[,\s]\s*', scale_string)

    # Process each note
    for note in scale_notes:
        if note in note_map:
            notes[note_map[note]] = True

    # Convert boolean values to 'true'/'false' strings
    bool_strings = ['true' if note else 'false' for note in notes]

    return '{ ' + ', '.join(bool_strings) + ' }'

# Example usage
scale_string = input("Enter a scale string (e.g., 'C D Eb E G A'): ")
print(scale_to_booleans(scale_string))

I'll try to take a deeper look at this later tonight. Thanks!