[Python] Algoritmo di ricerca per parole
Riccardo Lemmi
riccardo a reflab.com
Mar 23 Set 2014 20:28:20 CEST
Daniele Varrazzo wrote:
> On 2014-09-23 13:53, Giuseppe Amato wrote:
>> Il giorno 23 settembre 2014 14:41, Daniele Varrazzo
>> <piro a develer.com> ha
>> scritto:
>
>>> Per curiosita', avevo anche io provato a trasporre gli accordi [1]
>>> in quel
>>> programmino di cui parlavo qualche giorno fa. Non ho il problema
>>> della
>>> spaziatura perche' gli accordi non li definisco per posizione ma
>>> sono
>>> inseriti nel testo [C]cosi'. Ma il risultato non e' corretto perche'
>>> non
>>> gestisce le note enarmoniche (scrivo C#, ma a volte dovrebbe essere
>>> Db, a
>>> seconda della chiave della canzone). Tu sai come si fa?
>>>
>>
>> Avevo visto :) . Bisognerebbe appunto conoscere la chiave della
>> canzone, ma
>> con i soli accordi la vedo dura.
>
> E se la conosci? (ad es. direi "--xpose C -3" per dire al mio
> programma che la canzone e' in Do e la voglio tre semitoni piu' bassa)
> C'e' un algoritmo?
>
> -- Daniele
In questa libreria:
http://code.google.com/p/mingus/wiki/mingusIndex
sono presenti molte funzionalitą utili a questo scopo.
Ad occhio sapendo la tonalitą farei prima la conversione in grado della scala
e poi la trasposizione... sono metodi gią presenti in mingus.
Pił o meno una cosa di questo tipo:
import mingus.core.progressions as progressions
import mingus.core.chords as chords
mychords = ['C', 'E', 'D']
mychords_as_notes = [chords.from_shorthand(c) for c in mychords]
myprog = [g[0] for g in progressions.determine(mychords_as_notes, "C", True)]
new_chords = progressions.to_chords(myprog, "A")
print mychords
print myprog
print new_chords
print [chords.determine(c) for c in new_chords]
Chiaramente possono andare storte molte cose :)
--
Riccardo Lemmi
Maggiori informazioni sulla lista
Python