You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#rb trivial #okforgith public #jira UE-112796 #ROBOMERGE-SOURCE: CL 15917254 in //UE5/Release-5.0-EarlyAccess/... #ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v786-15839533) [CL 15920942 by maxwell hayes in ue5-main branch]
77 lines
1.8 KiB
C++
77 lines
1.8 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
|
|
namespace Audio
|
|
{
|
|
namespace EMusicalScale
|
|
{
|
|
// Any additions to this Enum should also be added to MetasoundMidiNoteQuantizerNode.cpp
|
|
// in the "#pragma region Metasound Enums" area to show up as options in that Node
|
|
enum Scale
|
|
{
|
|
Major,
|
|
Dominant7th_Mixolydian,
|
|
Minor_Dorian,
|
|
HalfDiminished_Locrian,
|
|
Diminished,
|
|
MajorPentatonic,
|
|
Lydian,
|
|
Bebop_Major,
|
|
HarmonicMajor,
|
|
LydianAugmented,
|
|
Augmented,
|
|
SixthModeOfHarmonicMinor,
|
|
Diminished_BeginWithHalfStep,
|
|
Blues,
|
|
Bebop_Dominant,
|
|
Spanish_or_Jewish,
|
|
LydianDominant,
|
|
Hindu,
|
|
WholeTone,
|
|
Chromatic,
|
|
DiminishedWholeTone,
|
|
MinorPentatonic,
|
|
Bebop_Minor,
|
|
MelodicMinor,
|
|
Bebop_MinorNumber2,
|
|
HarmonicMinor,
|
|
Diminished_BeginWithWholeStep,
|
|
Phrygian,
|
|
NaturalMinor_Aeolian,
|
|
HalfDiminished_LocrianNumber2,
|
|
|
|
Count
|
|
};
|
|
}
|
|
|
|
struct SIGNALPROCESSING_API ScaleDegreeSet
|
|
{
|
|
public:
|
|
// ctor
|
|
ScaleDegreeSet(const TArray<float>& InScaleDegrees, const TArray<float>& InChordTones = {});
|
|
|
|
TArrayView<float> GetScaleDegreeSet(bool bChordTonesOnlyIfApplicable = false);
|
|
|
|
private:
|
|
TArray<float> ScaleDegrees;
|
|
TArray<float> ChordTones;
|
|
};
|
|
|
|
class SIGNALPROCESSING_API FMidiNoteQuantizer
|
|
{
|
|
public:
|
|
static float QuantizeMidiNote(const float InNote, const float InRoot, EMusicalScale::Scale InScale, bool bChordTonesOnlyIfApplicable = false);
|
|
static float QuantizeMidiNote(const float InNote, const float InRoot, const TArrayView<float> InScaleDegrees);
|
|
|
|
private:
|
|
static float QuantizeValueToScaleDegree(const float InValue, const TArrayView<float> InScaleDegrees);
|
|
|
|
public:
|
|
// Statically-defined scale/chord tone definitions.
|
|
static TMap<EMusicalScale::Scale, ScaleDegreeSet> ScaleDegreeSetMap;
|
|
|
|
}; // class FMidNoteQuantizer
|
|
} // namespace Audio
|