musica



  • musica
    di renata (utente non iscritto) data: 14/07/2014 20:11:35

    Buonasera. Pur usando excel da tempo infinito sto avvicinandomi da poco alle macro, ma ci capisco poco ma abbastanza per sapere che solo con queste posso risolvere un mio problema. Ho diverse canzoni con accordi per chitarra (una riga di accordi e una di parole) e vorrei cambiare le tonalità di ogni canzone cliccando un tasto che mi indichi di quanti semitoni in più o in meno devono variare tutti gli accordi di quella canzone e cambiarli. Esiste, è fattibile perchè c'è un sito greco che lo fa, ma mi sto rompendo la testa da anni. C'è qualcuno che potrebbe aiutarmi, nonostante la mia poca chiarezza?



  • di lepat (utente non iscritto) data: 15/07/2014 07:33:17

    non credo che excel possa fare una cosa del genere, è dedicato a tutt'altro, il massimo che può fare e riprodurre un file musicale



  • di alfrimpa (utente non iscritto) data: 15/07/2014 09:27:35

    Ciao Renata

    Ho capito perfettamente qual è il tuo problema e qual è l'obiettivo che vuoi raggiungere essendo anch'io un misero suonatore (dovrei dire strimpellatore di chitarra ).

    Ricordo che qualche anno fa volevo fare proprio quello che intendi fare tu in un file di Excel; poi ho abbandonato l'idea anche perchè in rete i siti che raccolgono gli spartiti di migliaia di canzoni offrono la possibilità di trasporre gli accordi (vedi ad esempio www.chordie.com).

    Se, invece, il tuo obiettivo - per varie ragioni - è quello di realizzare un file in Excel io credo che la cosa si possa fare (e forse senza neanche ricorrere alle macro.

    Penso che con le funzioni di ricerca di Excel si possa pervenire ad un buon risultato.

    Il problema è soprattutto come concepire la struttura del file per renderlo il più "universale" possibile; come sai in ogni canzone l'accordo varia di posizione rispetto al testo.

    Comunque io ora sono in vacanza e non ho il pc a disposizione (sto scrivendo con l'iPad); rientrerò a casa ai primi della settimana prossima.

    Se vuoi, quindi, ed hai la pazienza di aspettare, potremmo approfondire la questione e vedere cosa ne esce fuori.

    Un saluto.

    Alfredo





  • di Vecchio Frac data: 15/07/2014 15:00:53

    Per gli ignoranti della materia chitarristica come me sarebbe utile un file di esempio con il risultato desiderato.
    Probabilmente si tratta di applicare una formula matematica ma servirebbe qualche informazione in più.
    Se Renata raccoglie l'invito di alfrimpa (in attesa che torni dalle meritate ferie), attendiamo di approfondire :)





  • di alfrimpa (utente non iscritto) data: 15/07/2014 15:49:48

    Ciao Vecchio Frac

    Mi rendo conto che per chi è a completo digiuno in materia "musicale" è molto difficile comprendere il quesito posto da Renata.

    Comunque non si tratta di applicare nessuna formula matematica.

    Cerco di spiegarmi:

    La scala musicale è così composta:

    DO, DO#, RE, RE#, MI, FA, FA#, SOL, SOL#, LA, LA#, SI e poi si ritorna al DO.

    Ad esempio partendo da un DO trasporlo di un semitono più in alto significa passare ad un DO# oppure se si parte da un MI questo diventa un FA. Ovviamente stesso discorso all'inverso.

    La mia idea, assai primordiale e da testare per bene sul campo, è quella di costruire una tabella con tutte le note e poi, con cerca.vert cercare il valore appropriato qualora si voglia trasporre gli accordi di una canzone di un o più semitoni.

    Il problema più grande, secondo me, come ho già scritto è quello di strutturare il foglio di lavoro in modo da renderlo il più versatile possibile e questo non credo sia una cosa facilissima (ricordo che all'epoca c'ho provato senza riuscirci ).

    Spero di essere stato chiaro.

    Alfredo





  • di alfrimpa (utente non iscritto) data: 15/07/2014 15:59:48

    In sostanza, se la tonalità originale di una canzone è troppo alta (o troppo bassa) per la voce di colui che la deve cantare la si può abbassare (od alzare) per adattarla alla tonalità della voce del cantante. O almeno è questo uno dei principali motivi.

    Concordo con te che avere un file di esempio rappresenterebbe una buona base di partenza ma ho il timore che Renata (correggimi se sbaglio Renata) non sappia da dove cominciare.

    Aspettiamo quindi un suo ulteriore intervento.

    Alfredo





  • di Vecchio Frac data: 15/07/2014 16:30:33

    Grazie Alfredo per la tua spiegazione.
    In realtà io dovrei saperle queste cose, confesso che ho cantato in un piccolo coro (molti anni fa ormai ^_^) e siccome ero un Basso, io e il mio compare dovevamo fare un certo sforzo per abbassare l'ottava senza stonare (appunto).
    Tuttavia a livello teorico si fa sempre più fatica a capire che non a livello pratico, dove poi basta anche una certa sensibilità (aiuta anche l'estensione vocale ma questa è un'altra storia) per adattarsi al contesto.

    Parlavo di formula matematica nel senso che data una regola di trasposizione la si può riprodurre meccanicamente in modo fedele anche per risolvere il problema in questione.
    Comunque ti sento in ottima forma, probabilmente le ferie stanno andando bene nonostante il tempo atmosferico un po' pazzerello :)





  • di alfrimpa (utente non iscritto) data: 15/07/2014 16:59:09

    Beh non è tanto questione di forma; è che la passione per Excel non mi abbandona mai neanche in vacanza.

    Solo che le mie vacanze sono perenni visto che sono in pensione per cui psso attendere tempi (metereologici) migliori .

    Nella Tua veste di ex Moderatore chiedo scusa per l'off topic e restiamo in attesa di quel che dirà Renata.

    Alfredo




  • ri-musica
    di Renata (utente non iscritto) data: 15/07/2014 19:58:01

    Allora, io sono appassionata di una musica particolare e vi potrei rimandare al sito da cui "pesco" che è www.kithara.to solo che è scritto in greco...Purtroppo ci pesco ma molti accordi sono sbagliati e col tempo li ho pazientemente trascritti, ma ogni volta che mi cambia il cantante non posso correre al PC, e la chitarra è bella perchè si può suonare ovunque. L'idea sarebbe stata anche cominciare a fare un piccolo sito di canzoni italiane con questo metodo, ma va troppo oltre.
    Chi dice che non so da dove cominciare forse ha ragione, perchè ho cominciato tante volte ma non sono mai approdata da nessuna parte.
    Indirizzatemi voi, maestri del PC. .
    Scusate il ritardo nell'intervento, ma ero al lavoro.
    Grazie a tutti



  • di lepat (utente non iscritto) data: 15/07/2014 20:10:30

    scusatemi, ormai ci sono entrato, non mi intendo assolutamente di musica, ma non capisco cosa si potrebbe fare con excel



  • di Renata (utente non iscritto) data: 15/07/2014 20:14:58

    Penso che solo con excell si possa fare qualcosa. Ci sono anche altre complicazioni: se nel testo ci sono i diesis, anche tutte le trasposizioni devono avere il diesis e viceversa con i bemolli, anche se re diesis e mi bemolle, ad esempio, sono la stessa nota, come ben sanno i miei colleghi strimpellatori



  • di Vecchio Frac data: 15/07/2014 20:44:53

    Secondo me si tratta solo di quantità da aggiungere o togliere, quindi di una tabella di corrispondenze da imbastire e gestire.
    Renata, prova a realizzare un file di esempio con quello che vorresti ottenere.
    Magari tante teste, tante idee, e qualcosa salta fuori :)





  • di Renata (utente non iscritto) data: 15/07/2014 20:52:37

    Su quel sito segnalato c'è esattamente quello che voglio: le canzoni sono una riga di accordi e una riga di testo. Una casella che si chiama "cambio di tonalità" mi permette di scegliere da +6 a -6. Scegliendo, tutti gli accordi della canzone cambiano a seconda di quello che si è scelto.
    Avevo provato, tempo fa, da stra profana, a impostare una macro che facesse questo, ma non ero stata capace di bloccare: il pratica il DO + 2 diventava RE, il RE diventava MI ecc, però alla fine restava un accordo solo per tutti. E' difficile da spiegare e probabilmente nemmeno tanto utile per la maggior parte delle persone, ma è un problema che mi trascino da anni....



  • di Renata (utente non iscritto) data: 15/07/2014 21:12:51

    In ogni caso bisognerebbe impostare che cambino solo le righe in cui ci sono gli accordi altrimenti, per le canzoni italiane, la parola SOLE, digitando +2, si trasformerebbe il LAE...



  • di Vecchio Frac data: 15/07/2014 21:17:53

    Il sito è bellissimo (io ho sempre amato il greco, purtroppo quello moderno è ben diverso dai miei studi di allora).
    Tuttavia fatico a capire la tua difficoltà :)
    Abbiamo un file di testo, che a righe alternate contiene l'accordo (che ci interessa trasporre) e il testo (che possiamo ignorare).
    Abbiamo una casella di selezione del semitono da reimpostare.
    Detta selezione influenza la trascrizione degli accordi. Mi pare di capire, proprio aggiungendo o togliendo un semitono (cioè una certa quantità al valore della nota rappresentata, poi magari chiarirai cosa rappresenta la "m" minuscola).
    Cosa non ti è (era) riuscito di fare? cioè, quale parte del problema? e come partiresti per risolverlo adesso?






  • di Vecchio Frac data: 15/07/2014 21:23:44

    Un'altra domanda, in base al tuo ultimo intervento.
    C'è una definizione formale di "accordo"? Cioè, una sequenza di simboli (lettere, note, ...) da cui io capisco che sono in presenza di un accordo?






  • di Renata (utente non iscritto) data: 15/07/2014 21:31:38

    la "m" minuscola rappresenta il minore (poi ci sono altre cose tipo "5","7", o "dim" che caratterizzano l'accordo e che non cambiano al cambiare della tonalità. La mia difficoltà maggiore è che quando ci penso e sono in macchina o a letto vedo la possibilità, ma davanti al PC, forse per gli anni passati a pensarci, mi svuoto completamente. Forse se, per restare in tema, mi dessi un "LA" potrei trovare una soluzione



  • di Renata (utente non iscritto) data: 15/07/2014 21:36:34

    Un accordo scritto ha un nome: DO è do maggiore, DOm è do minore, DO7 è do settima. Le note che vengono suonate su ogni strumento possono variare intorno alle 3 note che compongono un accordo maggiore o minore, o alle 4 che compongono una settima. Sulla chitarra si suonano 6 note, cioè sempre quelle 3, magari all'ottava superiore, ripetute. Accidenti, tentando di spiegare la musica mi rendo conto la difficoltà che potete avere voi a spiegare il PC a me



  • di Vecchio Frac data: 15/07/2014 22:02:27

    Dunque confermi l'ipotesi che mi sono fatto, cioè un file di accordi + testo è composto da righe alternate di accordi e testo da cantare. Ecco chiaro il senso della frase di poco fa: " bisognerebbe impostare che cambino solo le righe in cui ci sono gli accordi altrimenti, per le canzoni italiane, la parola SOLE, digitando +2, si trasformerebbe il LAE.", perchè il tuo parser legge "SOL" e lo trasforma in "LA".
    Quindi il primo passo è risolto (si tratta di leggere a righe alterne). E costituisce la morfologia della frase da tradurre.
    Secondo dubbio risolto: ogni volta che la linea di testo che contiene gli accordi presenta un simbolo noto, questa è un accordo con possibili varianti. Essendoci un numero finito di possibilità, è facile enumerarle. Basta anche mettersi d'accordo se le note vengono scritte in italiano o in tedesco. Questo sarà il vocabolario del parser.
    Infine, la posizione delle note da trascrivere non cambia (devono iniziare al'ennesimo carattere in cui si trova l'originale prima della trasposizione). Questa è la sintassi :)
    E poi ci saranno le regole particolari (eccezioni ce ne sono sempre).
    Quando sei partita a spiegare un po' di musica a un profano come me ho immaginato che ti si illuminavano gli occhi, quindi questa passione merita un certo impegno per aiutarti a superare l'ostacolo... l'argomento è interessante e spero di potermi dedicare, giornataccia di domani permettendo :)





  • di Renata (utente non iscritto) data: 16/07/2014 05:28:40

    Grazie, scusa, i miei orari sono un po' particolari. In effetti la posizione sul testo resta la stessa e degli accordi basta cambiare la tonalità, mentre il tipo di accordi resta lo stesso: esempio DOm7 (+2) diventa REm7.
    Resta, volendo, il problema degli diesis # e dei bemolli ♭. Una canzone non contiene mai ambedue, e comunque il brutto è che il FA (-1) diventa MI, come il DO (-1) che è il SI.
    Forse però voglio troppo, ma la mattina presto sono ottimista.
    Buona giornata a tutti



  • di Vecchio Frac data: 16/07/2014 08:22:41

    Forse sono di coccio, forse è l'incoscienza di chi non è dentro un problema, ma io non vedo tante difficoltà :) Appena ho un po' di respiro butto giù una bozza del lavoro.
    Naturalmente non detengo il monopolio della discussione... Avanti anche gli altri :)





  • di alfrimpa (utente non iscritto) data: 16/07/2014 10:26:39

    In verità non ne vedo neanch'io tante difficoltà almeno non nello specifico problemadella trasposizione degli accordi quanto nella struttura generale del foglio.

    Io procederei cosí (non ho il pc quindi per il momento non posso allegare file)

    1) in riga 1 scriverei il primo verso della canzone
    2) in riga 2 scriverei gli accordi in tonalità originale
    3) in riga 3 metterei le formule per la trasposizione degli accordi.

    Gli accordi in tonalità originale vanno scritti, secondo me, in due celle questo perchè ci sono due parti una fissa ed una variabile; mi spiego se abbiamo un MIbm7 (mi bemolle minore settima) la parte variabile è mi bemolle mentre quella fissa è m7.

    Poi creerei due tabelle di ricerca degli accordi una per la trasposizione in aumento e l'altra per quella in diminuzione (magari poi le allego denominandole matricesu e matricegiu).

    Infine supposto ad esempio che in b2 ci sia il primo accordo in tonalità originale ed in z1 il valore di trasposizione io scriverei questa formula

    =se(z1maggiore di 0;cerca.vert(b2;matricesu;z1;falso);cerca.vert(b2;matricegiu;z1;falso)).

    Due precisazioni: scrivo con l'iPad (dove non ho i segni di maggiore e minore) e ripeto non avendo il pc non posso fare nessuna prova fino ad inizio settimana prossima.

    Vecchio Frac cosa ne pensi di questo primo approccio?

    Alfredo





  • di alfrimpa (utente non iscritto) data: 16/07/2014 10:33:51

    Per Vecchio Frac

    Se vai sul sito www.chordie.com e scegli un artista ed una canzone vedrai che anche li c'è la possibilità di trasporre gli accordi esattamente come su kithara.to con la differenza che è in inglese e forse un po' più chiaro del greco.

    Preciso che gli accordi (essendo un sito americano) sono in notazione anglosassone e cioè:
    A= LA
    B = SI
    C = DO
    D = RE
    E = MI
    F = FA
    G = SOL

    Alfredo





  • di Vecchio Frac data: 16/07/2014 11:44:22

    Grazie Alfredo!
    Intanto, e purtroppo prima di vedere il tuo intervento, ho provato a produrre qualcosa.
    Certo dipende anche da come viene introdotto il testo da tradurre.
    E' meglio una riga per il testo e una per gli accordi originali, quindi una per l'accordo tradotto?
    Oppure una parola per cella con gli accordi nella cella sopra/sottostante quella cui si riferiscono?
    Il testo è già pronto e serve importarlo o si preferisce scrivere a mano?
    Qui solo Renata può intervnire.

    Per intanto, allego un file compresso RAR che contiene un testo di prova (preso dal sito greco, la traduzione ahimè è di Google) e un file Excel che contiene una macro da lanciare con Alt-F8.
    provate a scompattare in una cartella e testate il file.
    Dopo aver chiesto di quanti semitoni alzare o abbassare gli accordi, viene letto il file di testo, viene stampato nel foglio1 il contenuto, quindi sulla linea degli accordi viene prodotto l'accordo trasposto.
    E' una bozza nel senso che va raffinato (il codice è un po' buttato giù come viene viene ^_^), ma discutiamo soprattutto se è la strada giusta.

    (ps parlavo di notazione tedesca... è errato, la dicitura corretta è "anglosassone", ho appena letto qualche pagina di Wikipedia per documentarmi ^_^)

    Allego file: "musica (vfrac1).rar"





  • di alfrimpa (utente non iscritto) data: 16/07/2014 12:36:51

    Ciao Vecchio Frac

    Come detto non ho il pc quindi non posso testare il tuo file sino a metà della prossima settimana.

    Comunque, da mago del VBA quale sei, sono sicuro che hai prodotto un qualcosa di valido.

    Ora aspettiamo il riscontro d Renata.

    Alfredo





  • di alfrimpa (utente non iscritto) data: 16/07/2014 13:20:32

    Vecchio Frac, poichè non ce la faccio a resistere sino a metà della prossima settimana , potresti per cortesia pubblicare la macro che hai scritto qui sul forum così comincio a studiarmela?

    In sostanza se ho capito bene fa i seguenti passi:

    1) importa in un foglio Excel il file txt della canzone con gli accordi in tonalità originale;

    2) legge quanto c'è sul foglio e quando trova un accordo effettua la trasposizione (mi incuriosisce molto come hai tradotto in codice questo punto) in base al valore immesso inizialmente.

    Ho compreso bene?

    Alfredo





  • di Vecchio Frac data: 16/07/2014 13:21:02

    Grazie Alfredo, complimento immeritato
    (senza contare che dare del mago a qualcuno qui in Trentino ha un altro significato ^_^)

    e come vedi non sono contrario agli OT nonostante l'anima del moderatore :P





  • di alfrimpa (utente non iscritto) data: 16/07/2014 13:55:51

    ......ed io sono di Napoli quindi non potevo sapere quali reconditi significati si nascondono in Trentino dietro la parola "mago"

    E la macro hai dimenticato di postarla?

    Ed un approccio con le funzioni di ricerca come lo vedi?

    Alfredo





  • di Vecchio Frac data: 16/07/2014 14:43:42

    Ah, scusa non avevo capito che volevi vedere la macro. Mi rendo conto che non puoi vedere il file allegato.
    Provvedo qui adesso ma ricorda che per funzionare ha bisogno (nello stesso percorso del file Excel) di un file di testo chiamato prova.txt il cui contenuto pure allego qui sotto a mo' di esempio.

    L'approccio con le funzioni di ricerca secondo me risulta complesso (bisogna tenere conto dello scivolamento oltre la settima nota se alzi di 3 semitoni, ad esempio, un FA; ok, esiste la funzione RESTO e qualcosa si può rimediare). Tieni presente che io non sono tanto bravo con le formule (qui ci vorrebbe per esempio ninai ^_^)
     
    Option Explicit
    
    Sub import_text()
    Dim fso As Object, f As Object
    Dim i As Integer, s As String
    Dim pos_accordo As Integer
    Dim scala() As Variant, tmp As String
    Dim j As Integer, n As Integer, k As Integer
    Dim char As String, nuovo_accordo As String, m As String
    Dim SEMITONO As Integer
    
        scala = Array("C", "D", "E", "F", "G", "A", "B")
    
        Range("A:K").Clear
    
        Set fso = CreateObject("Scripting.FileSystemObject")
        
        Set f = fso.OpenTextFile(ThisWorkbook.Path & "prova.txt", 1)     ' 1 == FORREADING
    
        Cells(1, "A") = "Testo originale"
        Cells(1, "H") = "Posizione dell'accordo"
        Cells(1, "K") = "Nuovo accordo"
        
        While SEMITONO = 0
            SEMITONO = InputBox("Indica la quantità di semitono da trasporre (da -6 a +6; zero per uscire):", "SEMITONO", 0)
            If SEMITONO = 0 Then Exit Sub
            If SEMITONO < -6 Or SEMITONO > 6 Then SEMITONO = 0
        Wend
        
        i = 2
        
        Do While f.AtEndOfStream <> True
        
            i = i + 1
            
            s = f.ReadLine
            
            Cells(i, "A") = s
            
            If i Mod 2 = 1 Then     'esamina ogni linea dispari degli accordi
            
                Cells(i, "A").Font.Color = vbRed
                
                pos_accordo = InStr(s, Trim(s))    'a quale carattere comincia l'accordo?
                
                Cells(i, "H") = pos_accordo
                
                m = ""
                
                For j = 1 To Len(s)
                
                    char = Mid(s, j, 1)
                    
                    k = InStr(Join(scala, vbNullString), char)
                    
                    If k Then
                    
                        n = k + SEMITONO
                        If k + SEMITONO > 7 Then n = (k + SEMITONO Mod 7) Mod 7
                        If k + SEMITONO < 1 Then n = Abs(k + SEMITONO Mod 7)
                        
                        nuovo_accordo = scala(n - 1)
                    
                        m = m & nuovo_accordo
                        
                    Else
                    
                        m = m & char
                        
                    End If
                    
                    Cells(i, "K") = m
                    Cells(i, "K").Font.Color = vbBlue
                    
                Next
            
            End If
            
        Loop
        
        Set fso = Nothing
    
    End Sub
    
    
    
    
    
    'contenuto del file prova.txt
        Am G Dm Em
    Perché, perché
        Am G
    Perché questa canzone
    F Em
    Dice sempre io
        Am G
    Perché e mi spinge a precipizio
    F Em Am
    Ti perdoniamo, ti perdono, perché






  • di Vecchio Frac data: 16/07/2014 14:52:06

    cit. "In sostanza se ho capito bene fa i seguenti passi:

    1) importa in un foglio Excel il file txt della canzone con gli accordi in tonalità originale;

    2) legge quanto c'è sul foglio e quando trova un accordo effettua la trasposizione (mi incuriosisce molto come hai tradotto in codice questo punto) in base al valore immesso inizialmente.

    Ho compreso bene? "

    ---> Sì, tutto corretto.
    1) se ne occupa l'oggetto "file system object", apre il file di testo, legge una riga alla volta e la trascrive in una riga progressiva del foglio attivo; per determinare se una riga contiene un accordo, assume per convenzione che le righe dispari contengono gli accordi, le righe pari il testo della canzone.

    2) per ogni riga che contiene un accordo, legge carattere per carattere della stringa, se coincide con uno dei valori della scala (l'array iniziale) ne determina la posizione nel vettore dopo aver aumentato o diminuito il suo valore del semitono specificato nell'inputbox iniziale. Il gioco con i diversi Mod della parte centrale (dopo If k Then) serve solo per considerare ciclica la scala di note. Se sforo per esempio di due posizioni oltre il SI con aggiunta di semitoni, devo raggiungere la nota dell'ottava superiore che nell'array occupa una posizione inferiore rispetto all'elemento 6 ("B"). E' la famosa regola dell'orologio ^_^






  • di alfrimpa (utente non iscritto) data: 16/07/2014 15:12:59

    .... e pensare che poc'anzi avevi scritto che oggi per te era un giornataccia.

    Se non lo fosse stata cosa avresti combinato ?

    Lo avevo detto che eri un mago (nel senso letterale del termine )

    Complimenti davvero.

    Alfredo





  • di Vecchio Frac data: 16/07/2014 15:28:25

    Bè il capo è uscito prima, e io mi sto prendendo un po' di respiro (mi hanno cambiato competenze e ci sono giorni in cui impazzisco solo per capire cosa si vuole da me) ^_^
    Il codice è ridondante in alcuni punti. Ero partito con una certa idea e poi l'ho cambiata mentre scrivevo. Proprio ciò che raccomando di *non* fare :)
    Per esempio, è inutile pos_accordo (a quale carattere comincia l'accordo?) se poi esamino comunque carattere per carattere e lo trascrivo tal quale, spazi compresi, nella stringa finale.
    Ma vabbè, per intanto era l'idea che mi serviva, e poi immagino che cambieremo strada ancora (per esempio, mi piace l'idea di scrivere le parole in celle separate, così ogni cella soprastante può avere l'eventuale accordo lungo quanto si vuole, senza bisogno di spazi prima, e con la possibilità di aggiungere variazioni di tonalità o di durata).





  • di Renata (utente non iscritto) data: 16/07/2014 19:37:49

    Buonasera a tutti. Accidenti, mezza pagina di roba e pensare che era semplice. adesso provo a vedere se ci capisco qualcosa o se ci condisco l'insalata .
    Spero di no dai



  • di Renata (utente non iscritto) data: 16/07/2014 19:55:26

    ovviamente per mancanza mia e non vostra. Siete troppo avanti, ma forse pian pianino....



  • di Vecchio Frac data: 16/07/2014 20:24:34

    @Renata
    Ma no, è tutta roba (abbastanza) comprensibile.
    Ho anche cercato di spiegarla :)
    Sarei però più contento, per non andare a casaccio e inventarmi un modo di operare, se avessi già tu stessa un'idea del "come" ti piacerebbe implementare l'idea che hai in testa.
    Preferisci scrivere gli accordi a mano?
    Li importeresti da un file di testo?
    Un userform sarebbe meglio?
    Insomma, per non importi una filosofia "mia", che magari non si taglia neanche bene su quello che vorrebbe essere il risultato finale.





  • di Renata (utente non iscritto) data: 16/07/2014 21:29:16

    Avevo scritto la risposta ma non l'ha pubblicata,credo. La mia storia è un file in word con 253 canzoni di testo in greco con gli accordi in caratteri latini e un indice con collegamento ipertestuale. Tutto qui. Poi mi sono accorta che non mi bastava più perchè cantavamo sia io che un uomo, e ovviamente con tonalità diverse. E ho cominciato a pensarci su. E a chiedere agli amici. Ma nessuno ha saputo darmi una spiegazione.
    Le canzoni ovviamente possono essere anche sistemate in excell, ma ciò non cambia la mia ignoranza. Davanti a voi mi sento piccolissima (ed è una bella occasione per sentirsi tale).



  • di alfrimpa (utente non iscritto) data: 16/07/2014 21:55:01

    Dai Renata non ti buttare così giù.

    Eppure nel tuo primo messaggio di questa discussione hai detto che usi Excel da tempo infinito quindi una certa dimestichezza con questo programma dovresti averla (o no? )

    Comunque, a parte gli scherzi, quando rientro a casa provo a buttar giù qualcosa e vediamo cosa ne viene fuori; cercherò di farlo senza ricorrere al VBA (che come avrai capito è un linguaggio con il quale si può programmare Excel) ma con le funzioni anche perchè se tentassi di farlo farei solo brutte figure dopo quello che ci ha fatto vedere Vecchio Frac.

    In ultimo, solo per curiosità, perchè vuoi "trasporre" il tutto in Excel? Non sarebbe più comodo stampare da Kithara.to le canzoni nella tonalità che ti interessa e raccogliere il tutto in un book?

    A presto.

    Alfredo





  • di Vecchio Frac data: 17/07/2014 10:27:52

    cit. "Non sarebbe più comodo stampare da Kithara.to le canzoni nella tonalità che ti interessa e raccogliere il tutto in un book? "
    --> Io credo che Renata non voglia copiare le canzoni dal sito greco. Quel sito le è utile perchè offre in automatico e in tempo reale la funzionalità di trasposizione degli accordi.
    Con sole formule la sfida potrebbe anche essere interessante, ma io ho dei limiti in questo (che derivano da una piccola esperienza con Lotus 1-2-3).





  • di Vecchio Frac data: 17/07/2014 11:50:22

    cit. "La mia storia è un file in word con 253 canzoni di testo in greco"
    ---> Ecco, l'intervento di Renata ha aggiunto qualcosa in più.
    Dunque non dobbiamo pescare dati: Excel non deve cercare, caricare ed elaborare un file di testo a parte.
    Possiamo aprire il nostro file di Word, copiare la canzone con gli accordi da tradurre (passatemi termini non tecnici), avviare la macro che fa il lavoro di trasposizione.
    Allego alla vostra attenzione quindi una revisione del mio modello ("musica (vfrac2).rar").
    Ho già preso un testo di esempio dal famoso sito greco :)
    In pratica copio del testo originale, lo incollo (a partire da A3 del foglio1) e avvio la macro. That's all.
    Il testo copincollato ha la forma seguente: riga di accordi, riga di testo, riga di accordi, riga di testo, eccetera.
    La macro inserisce una riga vuota tra l'accordo originale e la riga della canzone, quindi ci infila l'accordo "tradotto".





  • di alfrimpa (utente non iscritto) data: 17/07/2014 16:48:57

    Bravissimo Vecchio Frac

    Oramai penso che Renata abbia risolto il suo problema.

    Le basterà copiare in una cartella di lavoro le sue 253 canzoni e lanciare la tua macro ed il gioco è fatto.

    Una piccola domanda: quando la macro inserisce la riga per gli accordi trasposti successivamente la lascia? O rilanciando la macro per cambiare nuovamente tonalità ne inserisce una nuova di riga (con l'iPad non posso aprire il tuo file).

    Peccato, mi hai fatto passare la voglia di provarci con le formule

    Ovviamente scherzo e magari, per puro sfizio, ci proverò.

    Ancora complimenti.

    Alfredo





  • di Renata (utente non iscritto) data: 17/07/2014 19:40:00

    ci sto provando....



  • di alfrimpa (utente non iscritto) data: 17/07/2014 19:55:14

    Dai Renata tienici aggiornati

    Diceva Leonardo Da Vinci: "Provando e riprovando ogni torto si drizza"

    Alfredo





  • di Vecchio Frac data: 17/07/2014 21:14:15

    @Alfredo
    Mi darai il tuo giudizio solo quando avrai provato il file :)
    Considerate questo lavoro solo un primo test.
    Non è applicabile ancora a una raccolta in serie.
    La risposta alla domanda è che adesso la macro inserisce una riga vuota prima di una riga pari di testo.... e non andrebbe lanciata due volte... la strada per gli affinamenti è lunga :)
    Sull'uso delle formule... curioso di vedere come ;)

    @Renata
    Prova comunque a testare il lavoro e dicci se e come può essere trasformato per incontrare le tue esigenze.






  • di alfrimpa (utente non iscritto) data: 17/07/2014 21:47:27

    @ Vecchio Frac

    Non mancherò, appena rientro in sede, di provare il tuo file che - come già detto - sono sicuro che funzionerà a dovere, almeno in questa prima fase.

    Quindi con la tua macro non è possibile, per una stessa canzone, fare due o più trasposizioni (si inserirebbero varie righe in più)?

    La posizione degli accordi trasposti è esattamente sotto quelli in tonalità originale?

    Quanto alla versione con formule è ovvio che testo ed accordi originali devono già avere una forma "strutturata" che al momento non ho idea di come possa essere

    Sarà un lavoro lungo

    Però ci voglio provare; io penso che con un semplice cerca.vert ci si possa arrivare.

    Il problema è come fare per far arrivare sul foglio testo ed accordi originali in una forma coerente con le formule (spero di essermi spiegato)

    Mi conforta il fatto che potrò sempre comunque richiedere il tuo aiuto e, eventualmente, quello dell'altro "mago" Ninai relativamente alle formule.

    Se non ci sei già stato ti auguro buone vacanze.

    Alfredo

    @ Renata

    Facci sapere!!!!!





  • di Vecchio Frac data: 18/07/2014 10:39:44

    @Alfredo
    cit. "Quindi con la tua macro non è possibile, per una stessa canzone, fare due o più trasposizioni (si inserirebbero varie righe in più)? "
    ---> Sì, si può ^_^ lanciando la macro, ogni volta viene richiesto di specificare il numero di semitoni da considerare e viene creata una nuova riga sopra il testo con l'accordo trasformato.

    cit. "La posizione degli accordi trasposti è esattamente sotto quelli in tonalità originale? "
    ---> Sì, in colore blu, e con lo stesso allineamento dell'originale se si ha l'accortezza di scegliere un font a spaziatura fissa (Courier o Consolas, che è il mio font preferito).

    cit. "Il problema è come fare per far arrivare sul foglio testo ed accordi originali in una forma coerente con le formule (spero di essermi spiegato) "
    ---> Sarà necessario un aggiustamento manuale (anche "TEsto in colonne" potrebbe andare bene ma bisogna stare attenti ai delimitatori, nel caso del testo in greco preso da quel sito lo spazio non è uno spazio ma un carattere unicode con un codice speciale).

    cit. "potrò sempre comunque richiedere il tuo aiuto e, eventualmente, quello dell'altro "mago" Ninai relativamente alle formule."
    ---> Naturalmente sì, se posso. Su Ninai (ma anche altri) ci conterei pure io, spero che qualcuno legga il thread ;)

    cit. "Se non ci sei già stato ti auguro buone vacanze. "
    ---> Grazie! Purtroppo già fatte e finite, adesso bisogna lavorare :P






  • di alfrimpa (utente non iscritto) data: 24/07/2014 22:05:48

    Riporto su questa discussione sperando che Renata (che non si sente da un po' di tempo) e Vecchio Frac non se ne siano dimenticati

    Dunque, come promesso, ho quasi terminato di approntare una cartella di lavoro per effettuare la trasposizione automatica degli accordi di una canzone; il tutto con l'esclusivo uso di formule e senza codice VBA. Entro la mattinata di domani conto di allegarlo.

    Ovviamente anche questo è un primissimo quanto grezzo approccio che spero possa essere via via migliorato con il contributo di tutti.

    La cartella di lavoro si compone del:

    Foglio1 ove sono posizionate le formule per la trasposizione automatica degli accordi. Sempre sul foglio1 sono anche posizionate due combobox: una per la scelta della canzone e l'altra per la scelta di quanti semitoni (in aumento o diminuzione) effettuare la trasposizione.

    In altra parte del foglio1 sono posizionate le informazioni "di servizio" (tabella di scansione degli accordi, elenco delle canzoni ecc.).

    Tutti gli altri fogli sono deputati a raccogliere i testi e gli accordi in tonalità originale.

    Al momento, per testare il modello, ho inserito due pezzi "Desperado" e "Hotel California" entrambi degli Eagles.

    Il tutto sembra (e ripeto sembra) funzionare bene (ma l'errore è sempre dietro l'angolo). Poi occorrerà trovare il modo (e qui occorrerà di certo il VBA) per inserire nuove canzoni in maniera opportuna in modo che le funzioni poste nel foglio1 leggano correttamente i dati.

    Ma su questo so di poter contare sul supporto di Vecchio Frac e degli altri amici del Forum.

    Nella speranza che Renata non abbia abbandonato la discussione auguro a Vecchio Frac ed a tutti una buona serata.

    Alfredo





  • di alfrimpa (utente non iscritto) data: 24/07/2014 22:14:59

    Aggiungo che ho utilizzato solo le seguenti funzioni

    Indiretto
    Se
    Cerca.Vert
    Sinistra
    Stringa.Estrai
    Lunghezza

    A domani

    Alfredo





  • di alfrimpa (utente non iscritto) data: 24/07/2014 22:49:36

    @ Vecchio Frac

    Non l'ho scritto prima ma, quando avrai visionato il file, ci tengo ad avere il tuo spassionato parere su quanto ho combinato

    Alfredo





  • di Vecchio Frac data: 25/07/2014 08:56:23

    Ottimo!!
    Sono incuriosito... ma forse è meglio con formule: le soluzioni senza codice spaventano sempre un po' meno le persone, chissà perchè :)





  • di alfrimpa (utente non iscritto) data: 25/07/2014 12:14:01

    Ecco ho allegato il file (ovviamente l'ho chiamato Renata)

    Ho utilizzato per gli accordi la notazione anglosassone sia perché ho utilizzato due canzoni inglesi ma soprattutto, perché con la notazione italiana la presenza del sol (che ha tre lettere e non due) mi avrebbe creato ulteriori problemi nella gestione delle stringhe.

    Speriamo che Renata abbia la possibilità di beneficiare un po' di questo piccolo lavoro.

    Ed ora, Vecchio Frac, forza con le critiche.

    Alfredo





  • di Vecchio Frac data: 25/07/2014 14:11:34

    Un lavoro eccellente: ben progettato, ingegnoso, efficiente, costruito con cura e funzionale.
    Io non sono un formulaio magico (Ninai batti un colpo ^_^) e non avrei saputo produrre questa sfilza di formul(acce).
    Il tutto è fatto per raggiungere lo scopo e lo raggiunge molto bene!
    Grande Alfredo :)
    Personalmente non mi piace infarcire i fogli di formule che poi se ne stanno lì vuote in attesa di produrre un risultato: problema insolubile e quindi lo accettiamo.

    Dal punto di vista logico o strutturale non ho osservazioni particolari ma un paio di cose mi saltano all'occhio.
    1) I nomi dei fogli dovrebbero ricondurre al contenuto: per come sono costruite le formule però è *necessario* lasciare i nomi foglio2, foglio3, ecc. altrimenti le formule sballano.
    Si potrebbe ovviare a questo modificando la formula in A1 del foglio1 affinchè punti al nome del foglio che viene scelto nella casella di testo: perchè far scegliere un nome all'utente se poi il foglio che contiene la canzone perde questo riferimento? Se il foglio2 lo rinomino "Desperado" (perchè contiene tale canzone) e in AA1 inserisco la formula =INDIRETTO(INDIRIZZO(O1;68)) ottengo un brillante risultato :)
    Due precisazioni: con questa soluzione il nome della canzone non deve contenere spazi e non deve superare i 32 caratteri; quindi dovremo avere ad es. "Hotel_California" sia nell'elenco che inizia in BP1 che nel nome della scheda.
    2) Sono brutte le righe vuote nel menu a discesa dei nomi delle canzoni... e poi perchè vincolarsi a sole dieci righe? facciamo in modo che sia l'utente a espandere l'elenco come vuole senza dover ridefinire le proprietà del controllo ogni volta che aggiunge un elemento! Definiamo quindi come origine dati della combobox il nome (poniamo) "elenco_canzoni" e poi definizamo un nuovo nome del foglio di lavoro ("elenco_canzoni") con questa formula: =SCARTO($BP$1;0;0;CONTA.VALORI($BP:$BP);1).

    Sul problema specifico di ricavare l'accordo modificato dal semitono... io non saprei adesso trovare soluzioni alternative per migliorare o semplificare le tue formule (forse si può ripetere quanto calcolavo nel mio codice VBA con la funzione RESTO, ma qui vorrei che parlasse Ninai, ad esempio ^_^)

    Come vedi questi sono dettagli di finezza... ti ripeto un grande applauso e i miei complimenti per il lavoro svolto :)

    p.s. vedendo il tuo lavoro mi sa che il mio codice non fa esattamente quanto voleva Renata... dovrei rimetterci mano :P





  • di ninai (utente non iscritto) data: 25/07/2014 14:33:15

    Ciao a tutti
    viste le ripetute citazioni (a mio avviso improprie), mi sento in obbligo di intervenire, non tanto per discutere delle formule (al momento non riesco a valutarle) ma per esprimere qualche riserva sulla correttezza armonica del procedimento. Le mie nozioni di armonia sono poche e dimenticate nel tempo ma credo che non sia così semplice trasportare gli accordi, tenendo conto di alterazioni varie ( settima, minore, quinta, diminuita, ecc. ecc.), per non parlare poi dei possibili rivolti. Io suono la batteria e di armonia ne capisco poco. Se invece degli accordi fossero le note che compongono l'accordo ad essere trasportate, in questo credo che la procedura sarebbe esatta.



  • di Vecchio Frac data: 25/07/2014 14:41:23

    Ciao Ninai e grazie dell'intervento,
    figurati che io ne so ancor meno di te ^_^ e applico una semplice regola di trasposizione.
    Vediamo se Renata ritrova il filo della discussione :)





  • di alfrimpa (utente non iscritto) data: 25/07/2014 14:54:59

    Ciao Vecchio Frac innanzitutto ti ringrazio del tempo che mi hai dedicato e dei complimenti che mi risultano oltremodo graditi.

    Vengo alle tue osservazioni:

    1) Non vedevo particolari problemi a lasciare inalterati i nomi dei fogli ecco perché ho adottato questa soluzione; ora provo fare la modifica che hai suggerito; secondo te quali vantaggi conseguirei?
    2) Si le righe vuote nella combobox dell'elenco canzoni sono brutte ma prima del tuo suggerimento non sapevo proprio come evitarle.

    @ Ninai

    Grazie anche Te per il tuo intervento.

    Premetto che non ho mai studiato musica (quindi di armonia non ne so nulla) e che sono solo uno "strimpellatore" di chitarra a tempo perso.

    Ho solo cercato di riprodurre (sulla richiesta di Renata) quello che è disponibile su molti siti che riproducono accordi (vedi Chordie.com, E-chords.com per citarne un paio anglosassoni) cioè quello di trasporre gli accordi.

    Per quanto ne so (ma ripeto non ho mai studiato musica) trasporre un DO (nell senso di accordo) di un semitono questo diventa DO# come un MI diventa un FA e così via.

    Comunque a me diverte "giocare" con Excel e per me rappresenta un piacevole passatempo (oltre a tenermi sveglia la mente che alla mia età non è poco )

    Con grande stima verso entrambi.

    Alfredo





  • di Vecchio Frac data: 25/07/2014 20:22:19

    Caro Alfredo,
    cit. "quali vantaggi conseguirei?"
    ---> Bè, direi essenzialmente la comodità per l'utilizzatore di avere fogli dedicati alle canzoni rinominati con il titolo delle canzoni stesse, che non è poco sia esteticamente che a livello di fruizione (invece che "Foglio92", il nome "Yesterday" è ben più confortevole).
    L'idea della combobox dinamica è interessante, spero di essere riuscito a spiegartela bene.






  • di alfrimpa (utente non iscritto) data: 25/07/2014 20:42:23

    Ciao Vecchio Frac

    "Siamo rimasti solo in due due somari e due giganti sulla stada di Girgenti"

    Perdona questa citazione parafrasata dal "Rinaldo in campo" ma visto il tuo nick non ne ho potuto fare a meno

    Tornando seri dico che l'idea della combobox dinamica è ottima e se avessi saputo farlo l'avrei sicuramente inserita.

    Quanto alla tua prima osservazione non ho capito come implementarla; potresti farla tu sul file e riallegarlo così me la guardo?

    Poi rimane il problema principale ossia come "importare" testo ed accordi di altri titoli senza doverli scrivere a mano (sarebbe lungo e noioso) in maniera tale che le formule del foglio1 leggano correttamente i dati.

    Certo che "l'assenza" di Renata non ci aiuta.

    Alfredo





  • di alfrimpa (utente non iscritto) data: 25/07/2014 20:48:25

    In ogni caso, a me resta la soddisfazione di aver concepito, pensato e realizzato un progetto dal nulla e questa è una cosa che mi porto dietro da quando mi sono avvicinato all'informatica e ad Excel (ma anche ad Access) cioè da oltre trent'anni.

    Un caro saluto.

    Alfredo





  • di Vecchio Frac data: 25/07/2014 21:46:34

    cit. "a me resta la soddisfazione di aver concepito, pensato e realizzato un progetto dal nulla"
    ---> Hai detto niente ^_^
    Sono enormi soddisfazioni... poterle fare senza l'assillo del doverle fare per lavoro aiuta molto a restare sereni e concentrati sul problema!

    cit. " potresti farla tu sul file e riallegarlo così me la guardo"
    ---> L'avevo fatto ma il file è rimasto in ufficio. Mo' mi ci rimetto :)

    cit. "rimane il problema principale ossia come "importare" testo ed accordi di altri titoli senza doverli scrivere a mano"
    ---> Io avevo previsto all'inizio il copia incolla da Word ma la tua soluzione prevede necessariamente lo scrivere gli accordi in celle dedicate.

    cit. "Siamo rimasti solo in due" (tre somari e tre briganti)
    ---> Grande ^_^ Mi mancavano i riferimenti ma San Google aiuta molto :P anche se Mimmo Modugno non ha ispirato il mio nick, ma naturalmente qualche riferimento c'è :)





  • di Vecchio Frac data: 25/07/2014 21:53:52

    Allego il file "per renata -2.rar".





  • di alfrimpa (utente non iscritto) data: 25/07/2014 21:57:21

    Ma io non ho consultato San Google e sono andato a memoria cosí i "briganti" sono diventati "giganti".

    Quanto ai "due somari" alludevo proprio a noi due che siamo rimasti soli

    Ti auguro una buona domenica.

    Alfredo





  • di Vecchio Frac data: 25/07/2014 22:20:02

    LOL, io non potevo ricordare ciò che non sapevo... ormai lo avete capito che sono una capra in materia ^_^
    Sì, siamo rimasti noi due ma in fondo è una compagni molto allegra mi pare... magari non ho la tua esperienza di vita ma ormai trotterello pure verso i cinquanta (detto così mi fa pure un po' pensare... ma in fondo no, chissenefrega, siamo ancora qui che ci studiamo il nuovo Excel ^_^)
    Buona domenica... anche se prima viene sabato :P (hanno promesso che diluvierà, vedremo)





  • di ninai (utente non iscritto) data: 26/07/2014 13:39:41

    Ciao a tutti
    premetto che potrei dire delle baggianate, anche perchè non ho ben seguito il topic.
    Volendo rendere dinamiche le formule in A3 e B4:

    in A3:
    =SE(RESTO(RIF.RIGA();3);"";INDIRETTO(INDIRIZZO(1+INT(RIF.RIGA()/3)*2;RIF.COLONNA();4;1;$AA$1)))
    e trascini fino a A5

    in B4:
    =SE(INDIRETTO(INDIRIZZO(2+INT((RIF.RIGA()-1)/3)*2;RIF.COLONNA();4;1;$AA$1))=0;"";INDIRETTO(INDIRIZZO(2+INT((RIF.RIGA()-1)/3)*2;RIF.COLONNA();4;1;$AA$1)))
    e trascini fino a Q4

    a questo punto selezioni: A3:Q5 e trascini in basso a blocchi di tre righe.

    per la formula in B5, devo ancora vederla bene per eventuali alternative.
    Per il resto non so cosa avete fatto con i codici ed eventuali intolleranze con quanto ho proposto sopra.
    Ma voi mi avete istigato, pertanto sopportate i miei sproloqui formulanti :) :) :)



  • di ninai (utente non iscritto) data: 26/07/2014 14:29:03

    CORREZIONE!!
    ho appena notato che anche in A (ovviamente) i possono essere accordi, pertanto la formula di B4 va concepita per A4:
    =SE(INDIRETTO(INDIRIZZO(2+INT((RIF.RIGA()-1)/3)*2;RIF.COLONNA();4;1;$AA$1))=0;"";INDIRETTO(INDIRIZZO(2+INT((RIF.RIGA()-1)/3)*2;RIF.COLONNA();4;1;$AA$1)))

    ed in A3:
    =SE(INDIRETTO(INDIRIZZO(1+INT(RIF.RIGA()/3)*2;RIF.COLONNA();4;1;$AA$1))=0;"";INDIRETTO(INDIRIZZO(1+INT(RIF.RIGA()/3)*2;RIF.COLONNA();4;1;$AA$1)))

    Ho notato inoltre che ,forse, la formula in A5 (quella che traspone) non va , esempio abbassamento tonalità -1 , brano holtel california, F# diventa E, invece che F

    Mi farò sentire


  • correzione traposizione
    di ninai (utente non iscritto) data: 26/07/2014 15:00:26

    una correzione di A5, potrebbe essere:

    =SE(A4="";"";CERCA.VERT(SINISTRA(A4;1+(STRINGA.ESTRAI(A4;2;1)="#"));ACCORDI;$BM$1;FALSO)&SE(STRINGA.ESTRAI(A4;2;1)="#";STRINGA.ESTRAI(A4;2;LUNGHEZZA(A4)-2);STRINGA.ESTRAI(A4;2;LUNGHEZZA(A4)-1)))

    da verificare per bene

    Inoltre
    in precedenza ho letto del problema dei nomi delle canzoni/fogli composti da più parole, per evitare di dover mettere in trattino basso (_), basta mettere in INDIRETTO() l'apostrofo (') , prima e dopo del nome.
    Pertanto, volendo, si potrebbe pescare il nome del foglio dalla convalida dei brani.



  • di renata (utente non iscritto) data: 04/08/2014 13:08:14

    vi leggo e vi ringrazio tutti, scusate l'assenza ma ero e sono lontana, ma sto ancora cercando di mettere a frutto i vostri lavori.



  • di alfrimpa (utente non iscritto) data: 04/08/2014 15:26:47

    Bentornata Renata

    Dai non te ne puoi uscire così

    Hai avuto modo di provare il file (quello allegato da Ninai è il più corretto.

    Facci sapere le tue impressioni e, soprattutto, se soddisfa le tue esigenze.

    Alfredo