RSS
Âû íå çàðåãèñòðèðîâàíû Ðåãèñòðàöèÿ | Ïîèñê | Âîéòè

Ôîðóì êîìïîçèòîðîâ è àðàíæèðîâùèêîâ

Çàäàòü íîâóþ òåìó
Àâòîð
Òåìà: Òðåáóåòñÿ ïîìîùü äëÿ ñîçäàíèÿ ðåàë-òàéì ãàðìîíèçàòîðà
Âðåìÿ: 06.04.2025 17:43 
Ñîâåòñêèé Ñîþç
Ãèòàðà, êëàâèøè

Ãîñïîäà, íóæåí ñîâåò ñïåöèàëèñòà â òåîðèè ìóçûêè...
Ïåðåïðîáîâàë ìíîæåñòâî ãàðìîíèçàòîðîâ äëÿ ðåàë-òàéì èñïîëíåíèÿ è íå ñìîã îáíàðóæèòü òîò, êîòîðûé ïîëíîñòüþ óñòðàèâàåò ïî ïðè÷èíå òîãî, ÷òî âî âñåõ îïðîáîâàííûõ äåâàéñàõ äëÿ ñîçäàíèÿ ãàðìîíèè òðåáóåòñÿ ïðåäîïðåäåëÿòü âûáîð òîíàëüíîñòè, à ýòî íå âñåãäà âîçìîæíî ïðè èìïðîâèçàöèîííîì èñïîëíåíèè.  ðåçóëüòàòå ïðèø¸ë ê íåîáõîäèìîñòè ñîçäàòü ñîáñòâåííîå ïðîãðàììíîå óñòðîéñòâî, îäíàêî îòñóòñòâèå ìóçûêàëüíîãî îáðàçîâàíèÿ íå ïîçâîëÿåò ïðàâèëüíî îöåíèòü ðåàëüíîñòü ðåøåíèÿ ïîñòàâëåííîé çàäà÷è, ïîýòîìó õî÷ó óçíàòü âàøå ìíåíèå.
ß èñõîæó èç ïðåäïîëîæåíèÿ, ÷òî ìîæíî ïîñòàâèòü ïîñòðîåíèå ãàðìîíè÷åñêîé ëèíèè, ñîçäàâàåìîé ïðàâîé ðóêîé èñïîëíèòåëÿ â çàâèñèìîñòü îò àêêîðäà, âçÿòîãî ëåâîé ðóêîé.
 ýòîì ñëó÷àå îòïàäàåò íåîáõîäèìîñòü ïðåäâàðèòåëüíîãî óêàçàíèÿ ãàðìîíèçàòîðó âûáðàííîé òîíàëüíîñòè è êîððåêòèðîâêè â ñëó÷àå å¸ èçìåíåíèÿ èëè ìîäóëÿöèè.
Îáðàçíî ïðîèëëþñòðèðóþ ñâîþ ìûñëü íà ïðîñòîì ïðèìåðå: äîïóñòèì, èñïîëíÿåòñÿ ìåëîäèÿ â òîíàëüíîñòè Am, íî â õîäå èñïîëíåíèÿ âìåñòî Em ëåâîé ðóêîé áåð¸òñÿ Emaj è ãàðìîíèçàòîð àâòîìàòè÷åñêè èçìåíÿåò èñõîäíóþ òîíàëüíîñòü íà Am ãàðìîíè÷åñêèé, çàìåíÿÿ ìàëóþ òåðöèþ, ïîñòðîåííóþ îò íîòû Ìè íà áîëüøóþ...
Íàñêîëüêî ðåàëèñòè÷åí ìîé ïîäõîä ê ôîðìèðîâàíèþ àëãîðèòìà è êàêèå "ïîäâîäíûå êàìíè" ìîãóò ìåíÿ îæèäàòü ïðè åãî ðåàëèçàöèè? Âîçìîæíî ëè âîîáùå, îòêàçàòüñÿ îò ïðåäîïðåäåëåíèÿ òîíàëüíîñòè, åñëè èñïîëüçîâàòü â êà÷åñòâå îòïðàâíîé òî÷êè ïðîãðåññèè òîëüêî âèä òåêóùåãî àêêîðäà?
Áóäó áëàãîäàðåí çà ëþáîé íàì¸ê!
Àâòîð
Òåìà: Re: Òðåáóåòñÿ ïîìîùü äëÿ ñîçäàíèÿ ðåàë-òàéì ãàðìîíèçàòîðà
Âðåìÿ: 07.05.2025 10:55 
Ñîâåòñêèé Ñîþç
Ãèòàðà, êëàâèøè

Ãîñïîäà, 167 âåëè÷àéøèõ óìîâ ÷åëîâå÷åñòâà ïðîñìîòðåëî ìîé ïîñò, íî íèêòî íå îçâó÷èë ñâîåãî ìíåíèÿ!
Áóäó áëàãîäàðåí çà ëþáîé êîììåíòàðèé...
Àâòîð
Òåìà: Re: Òðåáóåòñÿ ïîìîùü äëÿ ñîçäàíèÿ ðåàë-òàéì ãàðìîíèçàòîðà
Âðåìÿ: 08.05.2025 18:12 
HHîâãîðîä
Pà800, Pa4x, TritonR RolandC200,PC361,

ïîõîæå Âàì íàäî çàïèñàòüñÿ íà ïðèåì ê ÈÈ, íå íóæíî òîãäà ïðîãðàììó ñîçäàâàòü, òîíàëüíîñòü êîíå÷íî íàäî áû îïðåäåëèòü, íî ìîæíî îïûòíûì ïóòåì, êàê âàðèàíò
Àâòîð
Òåìà: Re: Òðåáóåòñÿ ïîìîùü äëÿ ñîçäàíèÿ ðåàë-òàéì ãàðìîíèçàòîðà
Âðåìÿ: 10.05.2025 10:17 
Ñîâåòñêèé Ñîþç
Ãèòàðà, êëàâèøè

Ñïàñèáî! Õî÷åòñÿ îáîéòèñü áåç âìåøàòåëüñòâà "ïîòóñòîðîííèõ ñèë". Ïóñêàé, ëó÷øå áóäåò åù¸ îäíà ñïåöèàëèçèðîâàíàÿ ãðóïïà â Plogue Bidule, íå òðåáóþùàÿ äîñòóïà â èíòåðíåò (êîòîðûé íå âñåãäà äîñòóïåí â ðàçúåçäàõ ïî çàõîëóñòüþ))
Àâòîð
Òåìà: Re: Òðåáóåòñÿ ïîìîùü äëÿ ñîçäàíèÿ ðåàë-òàéì ãàðìîíèçàòîðà
Âðåìÿ: 15.05.2025 18:03 

«Think Different»

Îòâåò îò ÈÈ:
===
Âàø ïîäõîä ê ãàðìîíèçàöèè äåéñòâèòåëüíî èíòåðåñåí è èìååò ïðàâî íà ñóùåñòâîâàíèå, íî åãî ðåàëèçàöèÿ ñîïðÿæåíà ñ ðÿäîì íþàíñîâ. Ðàçáåð¸ì êëþ÷åâûå àñïåêòû:

1. Îòêàç îò ïðåäîïðåäåë¸ííîé òîíàëüíîñòè: ðåàëèñòè÷íîñòü
Äà, ýòî âîçìîæíî, åñëè èñïîëüçîâàòü òåêóùèé àêêîðä ëåâîé ðóêè êàê "îïîðíûé çâóê" äëÿ ãàðìîíèçàöèè ìåëîäèè ïðàâîé. Òàêîé ïîäõîä áëèçîê ê ïðèíöèïàì:

Àäàïòèâíîãî àêêîìïàíåìåíòà (Korg/Karma, Roland VariPhrase)

Ãàðìîíèçàöèè ïî èíòåðâàëüíûì øàáëîíàì (íàïðèìåð, òåðöèè/ñåêñòû íàä áàñîì)

Ïðèìåð ñ çàìåíîé Em → Emaj è ïåðåõîäîì â A ãàðìîíè÷åñêèé ìèíîð êîððåêòåí â ýòîì êîíêðåòíîì ñëó÷àå, íî òðåáóåò îñòîðîæíîñòè â äðóãèõ êîíòåêñòàõ.

2. Ïîäâîäíûå êàìíè:
Õðîìàòè÷åñêèå íîòû â ìåëîäèè: Åñëè ïðàâàÿ ðóêà èãðàåò G♯ (õàðàêòåðíî äëÿ A ãàðìîíè÷åñêîãî ìèíîðà), à ëåâàÿ áåð¸ò Cmaj — âîçíèêíåò äèññîíàíñ (G♯ ïðîòèâ G íàòóðàëüíîãî â C-ìàæîðå).

Òðèòîíîâàÿ çàìåíà: Àêêîðä ëåâîé ðóêè ìîæåò áûòü àëüòåðèðîâàííûì (íàïðèìåð, G7♭5 âìåñòî Cmaj), ÷òî ïîòðåáóåò èíîé ëîãèêè ãàðìîíèçàöèè.

Ìîäàëüíûå çàìåíû: Àêêîðä Dm7 â ëåâîé ðóêå ìîæåò îòíîñèòüñÿ êàê ê C-ìàæîðó, òàê è ê D-äîðèéñêîìó ëàäó — âûáîð òåðöèé äëÿ ìåëîäèè áóäåò ðàçíûì.

Íåàêêîðäîâûå òîíû: Ïðîõîäÿùèå èëè âñïîìîãàòåëüíûå íîòû â ìåëîäèè íå äîëæíû ëîìàòü ãàðìîíèþ.

3. Àëãîðèòìè÷åñêèå ðåøåíèÿ:
Áàçîâûé âàðèàíò (ïðîñòîé äæàç/ïîï):

python
def harmonize(note, chord):
# Ïðîñòåéøàÿ ëîãèêà: òåðöèÿ/ñåêñòà íàä áàñîì
if chord.type == "maj":
return note + 4 semitones # Ìàæîðíàÿ òåðöèÿ
elif chord.type == "m":
return note + 3 semitones # Ìèíîðíàÿ òåðöèÿ
Ïðîäâèíóòûé âàðèàíò (ó÷¸ò êîíòåêñòà):

Àíàëèçèðîâàòü ôóíêöèþ àêêîðäà (T-S-D) äàæå áåç òîíàëüíîñòè.

Äëÿ äîìèíàíò (G7) ðàçðåøàòü òåðöèþ/ñåïòèìó â òîíèêó (B → C, F → E).

Èñïîëüçîâàòü îáðàáîòêó non-chord tones (çàäåðæàíèÿ, ïðîõîäÿùèå).

4. Êîãäà ïîäõîä ñðàáîòàåò èäåàëüíî:
 æàíðàõ ñ ÷¸òêîé àêêîðäîâîé ñåòêîé (áëþç, ðîê-í-ðîëë).

Ïðè èñïîëüçîâàíèè äèàòîíè÷åñêèõ øàáëîíîâ (íàïðèìåð, òîëüêî òåðöèè/ñåêñòû).

Åñëè ìåëîäèÿ óêëàäûâàåòñÿ â ïåíòàòîíèêó èëè áëþçîâûé çâóêîðÿä.

5. Êîãäà âîçíèêíóò ïðîáëåìû:
 õðîìàòè÷åñêèõ ïàññàæàõ (íàïðèìåð, â äæàçîâûõ èìïðîâèçàöèÿõ Êîëòðåéíà).

Ïðè áûñòðûõ ìîäóëÿöèÿõ (àêêîðä ëåâîé ðóêè ìîæåò áûòü èíòåðïðåòèðîâàí äâîÿêî).

 ïîëèòîíàëüíûõ èëè àòîíàëüíûõ êîíòåêñòàõ.

6. Ñîâåòû ïî ðåàëèçàöèè:
Äîáàâüòå ðåæèì "ñòðîãîé äèàòîíèêè" (îòñåèâàåò õðîìàòè÷åñêèå íîòû).

Èñïîëüçóéòå ìàøèííîå îáó÷åíèå íà ïðèìåðàõ ðåàëüíûõ àêêîìïàíåìåíòîâ.

Ââåäèòå ðó÷íóþ êîððåêöèþ ÷åðåç MIDI-êîíòðîëëåðû (íàïðèìåð, äëÿ âûáîðà ìèêñîëèäèéñêîãî vs. äîðèéñêîãî ëàäà).

Ïðèìåð äëÿ âàøåãî ñëó÷àÿ (Em → Emaj):
python
current_chord = "Emaj" # Ëåâàÿ ðóêà
melody_note = "E" # Ïðàâàÿ ðóêà

if current_chord == "Emaj":
harmonized_note = melody_note + 4 # Ìàæîðíàÿ òåðöèÿ → G♯
else:
harmonized_note = melody_note + 3 # Ìèíîðíàÿ òåðöèÿ → G
Âûâîä: Âàø ïîäõîä ðåàëèñòè÷åí äëÿ ìíîãèõ ñòèëåé, íî ïîòðåáóåò "ïîäñòðàõîâêè" ÷åðåç àíàëèç êîíòåêñòà è îáðàáîòêó èñêëþ÷åíèé. Ðåêîìåíäóþ íà÷àòü ñ ïðîñòûõ èíòåðâàëüíûõ ïðàâèë è ïîñòåïåííî óñëîæíÿòü ëîãèêó. Äëÿ òåñòèðîâàíèÿ ïîïðîáóéòå îáðàáîòàòü ñòàíäàðòíûå äæàçîâûå ïðîãðåññèè (ii-V-I) è áëþçîâóþ ñåòêó
Àâòîð
Òåìà: Re: Òðåáóåòñÿ ïîìîùü äëÿ ñîçäàíèÿ ðåàë-òàéì ãàðìîíèçàòîðà
Âðåìÿ: 15.05.2025 18:07 

«Think Different»

Êàê íà÷àòü ñ ïðîñòûõ èíòåðâàëüíûõ ïðàâèë è ïîñòåïåííî óñëîæíÿòü ëîãèêó?
==============
Îòëè÷íûé ïëàí!
Ðàçáåð¸ì ïîøàãîâóþ ñòðàòåãèþ ðåàëèçàöèè âàøåãî ãàðìîíèçàòîðà — îò ïðîñòûõ èíòåðâàëüíûõ ïðàâèë ê ñëîæíîé ëîãèêå. Âîò êîíêðåòíûé ïóòü:

Ýòàï 1: Áàçîâûå èíòåðâàëüíûå ïðàâèëà (ãîðèçîíòàëüíàÿ ãàðìîíèÿ)
Ïðèíöèï: Ãàðìîíèçàöèÿ ñòðîèòñÿ èñêëþ÷èòåëüíî îò íîò ìåëîäèè è òåêóùåãî àêêîðäà áåç ó÷¸òà òîíàëüíîñòè.

Øàã 1.1: Òåðöèè è ñåêñòû
Ïðàâèëî:
Äëÿ êàæäîé íîòû ìåëîäèè (melody_note) äîáàâëÿåì èíòåðâàë îò òåêóùåãî àêêîðäà (current_chord):

Åñëè àêêîðä ìàæîðíûé (C, G7, Emaj):
Ãàðìîíèÿ = ìàæîðíàÿ òåðöèÿ (↑4 ïîëóòîíà) èëè ìàëàÿ ñåêñòà (↓3 ïîëóòîíà îò âåðõíåé íîòû).
Ïðèìåð: Ìåëîäèÿ E + àêêîðä C → G (òåðöèÿ) èëè A (ñåêñòà îò C).

Åñëè àêêîðä ìèíîðíûé (Am, Dm7):
Ãàðìîíèÿ = ìèíîðíàÿ òåðöèÿ (↑3 ïîëóòîíà) èëè áîëüøàÿ ñåêñòà (↓4 ïîëóòîíà).
Ïðèìåð: Ìåëîäèÿ E + àêêîðä Am → G (òåðöèÿ) èëè C (ñåêñòà îò A).

Êîä (Python-ïñåâäîêîä):

python
def harmonize(melody_note, current_chord):
if current_chord.type == "maj":
return [melody_note + 4, melody_note - 3] # Òåðöèÿ è ñåêñòà
else:
return [melody_note + 3, melody_note - 4]
Øàã 1.2: Ó÷¸ò áàçîâîãî çâóêà àêêîðäà
Äîïîëíèòå ãàðìîíèþ íîòîé àêêîðäà (ïðèìà) è êâèíòîé äëÿ ïëîòíîãî çâó÷àíèÿ:
Ïðèìåð: Àêêîðä C → äîïóñòèìûå íîòû: C (ïðèìà), E (òåðöèÿ), G (êâèíòà).
Ìåëîäèÿ G → ãàðìîíèÿ C èëè E.

Ýòàï 2: Ó÷¸ò òèïà àêêîðäà (âåðòèêàëüíàÿ ãàðìîíèÿ)
Öåëü: Óëó÷øèòü çâó÷àíèå äëÿ ñëîæíûõ àêêîðäîâ (ñåïòàêêîðäû, sus4, dim).

Øàã 2.1: Ñåïòàêêîðäû
Äëÿ G7 (äîìèíàíòñåïòàêêîðä) äîáàâëÿåì ìàëóþ ñåïòèìó (F):
Ïðèìåð: Ìåëîäèÿ B → ãàðìîíèÿ D (òåðöèÿ) + F (ñåïòèìà).

Äëÿ m7 (ìèíîðíûé ñåïòàêêîðä) — áîëüøóþ ñåïòèìó (G♯ â Ami7).

Øàã 2.2: Àêêîðäû ñ ðàñøèðåíèÿìè
Äëÿ Cadd9 ðàçðåøàåì íîíó (D) â ãàðìîíèè.
Ïðèìåð: Ìåëîäèÿ E → ìîæíî äîáàâèòü D (íîíà) âìåñòî òåðöèè.

Ýòàï 3: Êîíòåêñò è ïëàâíîñòü ãîëîñîâåäåíèÿ
Öåëü: Èçáåãàòü ñêà÷êîâ è äèññîíàíñîâ ïðè ñìåíå àêêîðäîâ.

Øàã 3.1: Ïðàâèëà ãîëîñîâåäåíèÿ
Äâèæåíèå ãîëîñîâ: Ïðåäïî÷èòàéòå øàãè íà ñåêóíäó/òåðöèþ, à íå ñêà÷êè.
Ïðèìåð:
Ïðåäûäóùàÿ ãàðìîíèÿ: E (äëÿ àêêîðäà C).
Íîâûé àêêîðä: Am → ëó÷øå âûáðàòü C (øàã íà òåðöèþ), à íå G (ñêà÷îê íà êâèíòó).

Øàã 3.2: Ðàçðåøåíèå äèññîíàíñîâ
Åñëè ìåëîäèÿ ñîäåðæèò íåàêêîðäîâûé òîí (íàïðèìåð, F íàä C), ãàðìîíèÿ äîëæíà äâèãàòüñÿ â áëèæàéøóþ àêêîðäîâóþ íîòó:
F → E (äëÿ C) èëè G (äëÿ Am).

Ýòàï 4: Ðàñøèðåííûå ïðàâèëà (òîíàëüíîñòü è ìîäóëÿöèè)
Öåëü: Ó÷åñòü òîíàëüíûé êîíòåêñò áåç åãî ÿâíîãî óêàçàíèÿ.

Øàã 4.1: Àâòîîïðåäåëåíèå òîíàëüíîñòè
Àíàëèçèðóéòå ïîñëåäîâàòåëüíîñòü àêêîðäîâ (íàïðèìåð, C → G7 → C = C-ìàæîð).
Àëãîðèòì:

Çàïîìèíàéòå ïîñëåäíèå 3-4 àêêîðäà.

Èùèòå äîìèíàíòó (G7) → ïðåäïîëàãàéòå òîíèêó (C).

Øàã 4.2: Ìîäóëÿöèè
Ïðè ðåçêîé ñìåíå àêêîðäà (íàïðèìåð, C → F♯m), âðåìåííî ïåðåêëþ÷àéòå ãàðìîíèçàöèþ íà íîâûé ëàä.
Ïðèìåð:
Àêêîðä F♯m → èíòåðïðåòèðóéòå êàê D-ìàæîð (îòíîñèòåëüíûé ìàæîð) è èñïîëüçóéòå åãî äèàòîíèêó.

Ýòàï 5: Îáðàáîòêà èñêëþ÷åíèé
Ïðîáëåìíûå ñëó÷àè è ðåøåíèÿ:

Õðîìàòè÷åñêèå íîòû:

Åñëè ìåëîäèÿ èãðàåò G♯ íàä C, çàìåíÿéòå íà G (íàòóðàëüíóþ) èëè A (äëÿ ïëàâíîñòè).

Áëóæäàþùèå àêêîðäû:

Äëÿ àêêîðäîâ âíå òîíàëüíîñòè (íàïðèìåð, Db7 â C-ìàæîðå) èñïîëüçóéòå ýíãàðìîíè÷åñêóþ çàìåíó (Db7 = C#7 → ðàçðåøàéòå â F#m).

Èíñòðóìåíòû äëÿ òåñòèðîâàíèÿ
Ïðîèãðûâàòåëü àêêîðäîâ + MIDI-êëàâèàòóðà:

Çàïóñêàéòå àêêîðäû ëåâîé ðóêîé, ïðîâåðÿéòå ãàðìîíèþ ïðàâîé.

Âèçóàëèçàöèÿ:

Îòîáðàæàéòå íîòû ãàðìîíèè íà ïèàíîðîëëå (íàïðèìåð, â MuseScore èëè DAW).

Þíèò-òåñòû:

python
assert harmonize("E", "C") == ["G"] # Ìàæîðíàÿ òåðöèÿ
assert harmonize("E", "Am") == ["C"] # Ñåêñòà îò ìèíîðà
Ïðèìåð ïðîãðåññèè äëÿ îòëàäêè
Ïðîñòàÿ: C → G7 → Am → F (C-ìàæîð).

Ìåëîäèÿ: E → D → C → A.

Ãàðìîíèÿ: G → B → E → C.

Ñ ìîäóëÿöèåé: C → E7 → Am (ìîäóëÿöèÿ â A-ìèíîð).

Ìåëîäèÿ: G → G♯ → E.

Ãàðìîíèÿ: E → B → C (E7 òðàêòóåòñÿ êàê äîìèíàíòà ê Am).

×òî äàëüøå?
Íà÷íèòå ñ Ýòàïà 1, ðåàëèçóéòå òåðöèè/ñåêñòû.

Äîáàâüòå Ýòàï 2 äëÿ ñåïòàêêîðäîâ.

Óñëîæíÿéòå ëîãèêó ïî ìåðå òåñòèðîâàíèÿ íà ðåàëüíûõ ïðîãðåññèÿõ.

Êëþ÷åâàÿ èäåÿ: "Îøèáî÷íàÿ" ãàðìîíèÿ èíîãäà äà¸ò èíòåðåñíûé çâóê — ôèêñèðóéòå òîëüêî ÿâíûå äèññîíàíñû.
Àâòîð
Òåìà: Re: Òðåáóåòñÿ ïîìîùü äëÿ ñîçäàíèÿ ðåàë-òàéì ãàðìîíèçàòîðà
Âðåìÿ: 15.05.2025 18:12 

«Think Different»

Êàê ïîíÿòü "Îøèáî÷íàÿ" ãàðìîíèÿ èíîãäà äà¸ò èíòåðåñíûé çâóê — ôèêñèðóéòå òîëüêî ÿâíûå äèññîíàíñû"?
==========================
Ýòî âàæíûé ôèëîñîôñêèé è ïðàêòè÷åñêèé ìîìåíò â ìóçûêå, îñîáåííî â èìïðîâèçàöèè è àëãîðèòìè÷åñêîé ãàðìîíèçàöèè. Ðàçáåð¸ì åãî íà ïðèìåðàõ, ÷òîáû áûëî ïîíÿòíî, ãäå «îøèáêà» ñòàíîâèòñÿ «èíòåðåñíûì ðåøåíèåì», à ãäå — ðåàëüíîé ïðîáëåìîé.

1. ×òî òàêîå «îøèáî÷íàÿ ãàðìîíèÿ»?
Ýòî ñî÷åòàíèå íîò, êîòîðîå ôîðìàëüíî íàðóøàåò êëàññè÷åñêèå ïðàâèëà (íàïðèìåð, ïàðàëëåëüíûå êâèíòû, òðèòîí â ìåëîäèè, íåðàçðåø¸ííûé äèññîíàíñ), íî ìîæåò çâó÷àòü âûðàçèòåëüíî â îïðåäåë¸ííîì êîíòåêñòå.

Ïðèìåðû:
Äæàç: Àêêîðä C7♯9 (ñ äèññîíèðóþùèì G♯) — òåõíè÷åñêè «îøèáêà» â C-ìàæîðå, íî ýòî ôèðìåííûé çâóê áëþçà.

Ðîê: Power-àêêîðä E5 + íîòà F â ìåëîäèè — ñîçäà¸ò íàïðÿæåíèå, íî ðàáîòàåò â õàðä-ðîêå.

Êëàññèêà: ×àéêîâñêèé íàìåðåííî èñïîëüçóåò «çàïðåù¸ííûå» ïàðàëëåëè äëÿ äðàìàòèçìà.

2. Êàêèå äèññîíàíñû — «ÿâíûå», à êàêèå — «èíòåðåñíûå»?
Ôèêñèðóéòå (èñïðàâëÿéòå) òîëüêî ýòè ÿâíûå äèññîíàíñû:
Ìàòðèöà äèññîíàíòíîñòè (÷åì âûøå ÷èñëî, òåì õóæå):

0 (êîíñîíàíñ): Ïðèìà, îêòàâà, êâèíòà.

1 (ìÿãêèé äèññîíàíñ): Áîëüøèå/ìàëûå òåðöèè è ñåêñòû.

2 (ðåçêèé äèññîíàíñ): Ñåêóíäû, òðèòîíû, ìàëûå ñåïòèìû.

3 (êàêîôîíèÿ): Áîëüøèå ñåïòèìû, êëàñòåðû (íàïðèìåð, C + C♯).

→ Ïðàâèëî: Åñëè ìåëîäèÿ è ãàðìîíèÿ äàþò ñî÷åòàíèå ñ îöåíêîé ≥2, ñòîèò ïåðåñìîòðåòü íîòó.

Êîíòåêñòíûå îøèáêè:

Íåðàçðåø¸ííûé âåäóùèé òîí: Ìåëîäèÿ èãðàåò B (ââîäíûé òîí â C-ìàæîðå), à àêêîðä ñìåíÿåòñÿ íà Am (íå ðàçðåøàÿ â C).

Ïàðàëëåëüíûå îêòàâû/êâèíòû: Äâå ãîëîñîâûå ëèíèè äâèæóòñÿ îäèíàêîâûìè èíòåðâàëàìè — çâó÷èò ïðèìèòèâíî.

Îñòàâëÿéòå «èíòåðåñíûå» äèññîíàíñû:
Ïðîõîäÿùèå/âñïîìîãàòåëüíûå íîòû: Ìåëîäèÿ èãðàåò F ìåæäó E è G íàä àêêîðäîì C — ýòî âðåìåííûé äèññîíàíñ, êîòîðûé ðàçðåøàåòñÿ.

Àëüòåðèðîâàííûå àêêîðäû: G7♭9 â äæàçå — äèññîíàíñ, íî ýòî «ïðàâèëüíûé» äèññîíàíñ.

Ïåäàëè: Îðãàííûé ïóíêò íà C â áàñó, ïîêà ãàðìîíèÿ ìåíÿåòñÿ — ñîçäà¸ò íàïðÿæåíèå, íî îñîçíàííî.

3. Êàê ýòî ðåàëèçîâàòü â àëãîðèòìå?
Øàã 1: Îöåíêà äèññîíàíñà
python
def is_dissonant(note1, note2):
interval = abs(note1 - note2) % 12 # Èíòåðâàë â ïîëóòîíàõ
dissonant_intervals = {1, 2, 6, 10, 11} # Ñåêóíäû, òðèòîíû, ñåïòèìû
return interval in dissonant_intervals
Øàã 2: Ïðàâèëà ôèëüòðàöèè
Ƹñòêîå ïðàâèëî:
Åñëè íîòà ìåëîäèè è íîòà ãàðìîíèè îáðàçóþò òðèòîí (interval = 6), çàìåíè ãàðìîíèþ íà áëèæàéøóþ êîíñîíèðóþùóþ íîòó.
Ïðèìåð: Ìåëîäèÿ B + àêêîðä F7 → B è F = òðèòîí → çàìåíè F íà E♭ (ìàëóþ òåðöèþ).

Ãèáêîå ïðàâèëî:
Åñëè äèññîíàíñ äëèòñÿ ìåíüøå äîëè òàêòà (íàïðèìåð, 16-ÿ íîòà â ïîòîêå âîñüìûõ), îñòàâü åãî êàê ïðîõîäÿùèé.

Øàã 3: Êîíòåêñòíûé àíàëèç
Åñëè àêêîðä G7 (äîìèíàíòà), ðàçðåøàéòå äèññîíàíñû (íàïðèìåð, F è B) â íîòû òîíèêè (E è C äëÿ C-ìàæîðà).

Åñëè àêêîðä Csus4, òî äèññîíàíñ (F ïðîòèâ G) — ýòî ÷àñòü ñàóíäà, íå èñïðàâëÿòü.

4. Ïðèìåðû èç ïðàêòèêè
Õîðîøàÿ «îøèáêà»:
Àêêîðä: C

Ìåëîäèÿ: E → F → G (F — ïðîõîäÿùàÿ íîòà)

Ãàðìîíèÿ: G → A → E
Ðåçóëüòàò: Ìèìîë¸òíûé äèññîíàíñ F+A (òåðöèÿ), íî çâó÷èò ñâåæî.

Ïëîõàÿ îøèáêà:
Àêêîðä: C

Ìåëîäèÿ: G → G♯ → A

Ãàðìîíèÿ: E → E → F
Ïðîáëåìà: G♯ + E = óâåëè÷åííàÿ ñåêñòà (ðåçêî), îñîáåííî åñëè çàäåðæàòüñÿ.

5. Ñîâåòû äëÿ âàøåãî ãàðìîíèçàòîðà
Ðåæèìû ñòðîãîñòè:

Ñòðîãèé: Èñïðàâëÿòü âñå äèññîíàíñû ≥2.

Äæàçîâûé: Ðàçðåøàòü òîëüêî òðèòîíû.

Ýêñïåðèìåíòàëüíûé: Èãíîðèðîâàòü âñå ïðàâèëà, çàïèñûâàòü ðåçóëüòàò — èíîãäà ïîëó÷èòñÿ ãåíèàëüíî.

Âèçóàëèçàöèÿ:
Ïîìå÷àéòå äèññîíèðóþùèå íîòû êðàñíûì â èíòåðôåéñå, íî äàâàéòå âûáîð — èñïðàâèòü èëè îñòàâèòü.

Òåñòîâûå ïðîãðåññèè:
Ïðîâåðÿéòå àëãîðèòì íà òàêèõ ïðèìåðàõ:

C → G7 → C (êëàññèêà, äîëæíî áûòü ãëàäêî).

Cm → Fm → B♭7 (áëþç, äèññîíàíñû óìåñòíû).

Îáðàòíàÿ ñâÿçü îò ìóçûêàíòîâ:
Åñëè æèâîé ïèàíèñò ãîâîðèò «çâó÷èò ñòðàííî, íî êðóòî» — ýòî óñïåõ. Åñëè «ôàëüøèâèò» — èñïðàâëÿéòå.

Êëþ÷åâàÿ ìûñëü
Ìóçûêà — ýòî íå ìàòåìàòèêà. Àëãîðèòì äîëæåí ôèëüòðîâàòü ÿâíûå ëÿïû (íàïðèìåð, ñëó÷àéíûå êëàñòåðû), íî íå óáèâàòü êðåàòèâ.
Êàê ñêàçàë Ø¸íáåðã: «Åñëè ýòî çâó÷èò õîðîøî — ýòî ïðàâèëüíî».
Âàø ãàðìîíèçàòîð ìîæåò ñòàòü ñîàâòîðîì, à íå ïðîñòî êîððåêòîðîì.
Àâòîð
Òåìà: Re: Òðåáóåòñÿ ïîìîùü äëÿ ñîçäàíèÿ ðåàë-òàéì ãàðìîíèçàòîðà
Âðåìÿ: 15.05.2025 18:17 

«Think Different»

Ïðèÿòíî óäèâë¸í!
֏!
Àâòîð
Òåìà: Re: Òðåáóåòñÿ ïîìîùü äëÿ ñîçäàíèÿ ðåàë-òàéì ãàðìîíèçàòîðà
Âðåìÿ: 17.05.2025 21:24 
Ñîâåòñêèé Ñîþç
Ãèòàðà, êëàâèøè

liusi, ñïàñèáî çà ðàçâ¸ðíóòûé îòâåò ïî ñóùåñòâó (åñòü õîðîøèé ïîâîä äëÿ ðàçìûøëåíèé)!
 ýòîò ôîðóì ìîãóò ïèñàòü òîëüêî çàðåãèñòðèðîâàííûå ïîëüçîâàòåëè!