[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