Editing digitale della partitura Creazione di plugin

Slides:



Advertisements
Presentazioni simili
Lezione 6 Strutture di controllo Il condizionale
Advertisements

Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
Basi di OpenOffice Calc – 2009 A cura di: Di Cicco – Giannini - Periloso.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
CONTROLLO DELLA CONCORRENZA
Logica Lezz
© 2007 SEI-Società Editrice Internazionale, Apogeo
Editing digitale della partitura Introduzione a MuseScore
Editing digitale della partitura Testo cantato e impaginazione
Unità didattiche 1) Figure e Valori musicali
VISUAL BASIC.
Terza Lezione → Navigare nel file System → parte 2
Dispositivi MIDI in Java
7. Strutture di controllo Ing. Simona Colucci
Script Marco D. Santambrogio –
Trasmettitori e ricevitori
IL CONCETTO DI ALGORITMO
Il Binding Nicolò Sordoni.
Web MIDI API - Esempi Lezione 24
I vincoli di integrità Alcuni aspetti della realtà NON possono essere modellati solamente con entità, attributi e relazioni, per esempio i vincoli di integrità.
I FILES AD ACCESSO SEQUENZIALE
Asynchronous JavaScript and XML
Informatica per l’Ingegneria
CICLO DO – WHILE LINGUAGGIO C.
realizzato dal prof.Conti Riccardo
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Derive 5 28/12/2018 Lavoro didattico per Apprendere - lezione su materia specifica di Retucci Anna - classe 3C Terza edizione.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Strutture di Controllo
Programmazione e Laboratorio di Programmazione
I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI Numeri.
TEORIA ELEMENTARE DEGLI INSIEMI.
Derive 5 di Anna Retucci 02/01/2019
Lettura di input MIDI da Web MIDI API
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Standard MIDI File: eventi MTrk
Codici rilevatori di errori
Definizione di linguaggio di programmazione
Esercitazione su Instruction Level Parallelism
Web MIDI API - Esempi Lezione 17
Esercitazione su SMF Lezione 12
Esercizi sulla Web MIDI API
Collegamento di input e output tramite Web MIDI API
WORD 28/02/2019 Informatica - WORD.
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
APPUNTI SUL LINGUAGGIO C Allocazione dinamica della memoria
Programmazione e Laboratorio di Programmazione
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Programmazione e Laboratorio di Programmazione
UNIT 12 INTERFACCIA SERIALE.
Uno step sequencer Lezione 18
APPUNTI SUL LINGUAGGIO C
Unità 1 Programmi base.
Lezione Terza Primi passi di programmazione
Criteri Metodologici di base 2
Programmazione e Laboratorio di Programmazione
Lezione 7 Editing digitale della partitura Creazione di plug-in con interfaccia grafica Laboratorio di Informatica Musicale – Prof. Luca A. Ludovico.
La programmazione strutturata
Docente: Sabato Bufano
Algoritmi.
Corso di Fondamenti di Informatica
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Editing digitale della partitura Creazione di plugin Lezione 6 Editing digitale della partitura Creazione di plugin Laboratorio di Informatica Musicale – Prof. Luca A. Ludovico

Riassunto Nella lezione precedente si è visto: la sintassi di base per creare un plugin la rappresentazione gerarchica di una partitura in MuseScore il concetto di cursore l’estrapolazione di informazione catalografica (metadati) e simbolica da una partitura esistente Durante questa lezione si vedrà: come organizzare il codice in funzioni come gestire la selezione come creare una partitura ex novo come aggiungere metadati e simboli musicali a partiture già esistenti Editing digitale della partitura - Prof. Luca A. Ludovico 6. Creazione di plugin

Uso di funzioni Per organizzare in maniera più efficace il codice, è possibile utilizzare le funzioni. Le funzioni rendono il codice più leggibile, e permettono il riuso del codice quando la stessa sequenza di operazioni deve essere eseguita più volte, anche su valori differenti (parametri della funzione). In Javascript, le funzioni hanno la seguente sintassi: function nome_funzione (val1, val2, …, valn) { // fai qualcosa return value } Il passaggio di parametri è opzionale, e i parametri non sono tipizzati. Editing digitale della partitura - Prof. Luca A. Ludovico 6. Creazione di plugin

Uso di funzioni La restituzione di un valore è opzionale: è possibile chiudere una funzione con un’istruzione return senza valore, o giungere alla sua naturale conclusione (chiusura della parentesi graffa). Non è possibile restituire più di un valore. Per non smarrire il valore restituito, deve aver luogo un assegnamento all’istante di chiamata della funzione. Ad esempio, se ci si aspetta che una funzione restituisca un valore: var valoreRestituito = miaFunzione(valoreDaPassare) Editing digitale della partitura - Prof. Luca A. Ludovico 6. Creazione di plugin

Esempio Esempio: LeggiNomeParti.qml In questo esempio, viene mostrato un esempio di funzione con e senza restituzione di valori. Inoltre, si mostra come recuperare altre informazioni di partitura, in particolare il nome esteso e abbreviato delle parti, con un opportuno ciclo sulla struttura dati curScore.parts. Altro esempio: TrascriviSimboli2.qml (scorsa lezione) Editing digitale della partitura - Prof. Luca A. Ludovico 6. Creazione di plugin

Come ciclare su parti e voci All’interno di una partitura, un’accollatura si compone di più pentagrammi, ciascuno dei quali può contenere al massimo 4 voci. Un cursore di default si posiziona sulla prima voce (indice 0) del primo pentagramma (indice 0), ma può essere chiaramente riposizionato. Per considerare tutte le voci di tutti i pentagrammi, si possono sfruttare le seguenti proprietà dell’oggetto Score: nstaves – numero di pentagrammi. E’ poi necessario ciclare sulle singole voci di ciascun pentagramma, quindi introdurre nel codice un doppio ciclo; ntracks – numero di tracce, ossia nstaves · 4 (numero di voci per pentagramma). Così è sufficiente un ciclo. Un cursore ha infatti 3 valori interi configurabili: track, staffIdx (che corrisponde alla divisione intera track / 4) e voice (che corrisponde al resto della divisione intera track % 4). Editing digitale della partitura - Prof. Luca A. Ludovico 6. Creazione di plugin

Creazione di accordi, note e pause Esistono diversi approcci per aggiungere/sostituire note. E’ possibile appoggiarsi alla posizione corrente del cursore e sovrascrivere (vedi prossima slide): cursor.setDuration(1,4) cursor.addNote(60) Oppure è possibile creare un elemento nota ex-novo, impostarne le proprietà e aggiungerlo a un elemento accordo già esistente (vedi più avanti): var miaNota = newElement(Element.NOTE) // imposta proprietà della nota Editing digitale della partitura - Prof. Luca A. Ludovico 6. Creazione di plugin

Inserimento/sostituzione di note Nel file di esempio AggiungiNote.qml si mostra come inserire (o sovrascrivere) 5 note all’inizio di una partitura, nel primo pentagramma e nella prima voce. Nel file di esempio AggiungiQuarto.qml si mostra una variante di questo approccio: come inserire (o sovrascrivere) una nota da un quarto come terzo simbolo nella prima voce del primo pentagramma, muovendosi in termini di step del cursore. Editing digitale della partitura - Prof. Luca A. Ludovico 6. Creazione di plugin

Modifica di accordi già presenti Per modificare notazione già presente, come di consueto si utilizza un cursore per spostarsi di simbolo in simbolo. Se si aggiunge una nota all’accordo puntato dal cursore, la nota assumerà la durata dell’accordo. var accordo = cursor.element var n1 = newElement(Element.NOTE) n1.pitch = 60 // C4 pitch n1.tpc1 = 14 // C tonal pitch class (non transposed) n1.tpc2 = 14 // C tonal pitch class (transposed) accordo.add(n1) Esempi: RaddoppiaOttava.qml aggiunge una nota all’ottava sopra, mentre ImpostaPitch.qml elimina tutte le note di ogni accordo e le sostituisce con altre. Editing digitale della partitura - Prof. Luca A. Ludovico 6. Creazione di plugin

Creazione di elementi Più in generale, la sintassi var nome_elemento = newElement(nome_classe) può essere applicata alla creazione di un gran numero di elementi, che poi possono essere aggiunti alla struttura dati opportuna. Ad esempio, è possibile creare una pausa (cioè un’istanza di classe Rest) con la seguente sintassi: var miaPausa = newElement(Element.REST) Ad esempio, è possibile creare un simbolo di tremolo: var newTremolo = newElement(Element.TREMOLO) come mostrato in AggiungiSimboliAccordo.qml. Editing digitale della partitura - Prof. Luca A. Ludovico 6. Creazione di plugin

Gestione della selezione corrente Spesso il funzionamento di un plugin deve essere limitato all’area selezionata dall’utente. Per determinare se esiste un’area selezionata: Si riavvolge il cursore all’inizio della selezione tramite var cursor = curScore.newCursor() cursor.rewind(1) Se non esiste un cursor.segment (ossia un segmento corrente), allora si può scegliere di operare sull’intera partitura, cioè dal pentagramma 0 a curScore.nstaves – 1 Altrimenti si legge il pentagramma corrente, poi si riavvolge il cursore alla fine dell’area selezionata tramite cursor.rewind(2) e si legge il pentagramma corrente. Si salva inoltre il valore del tick finale, cioè quello fino a cui operare. Esempio: GestisciSelezione.qml Editing digitale della partitura - Prof. Luca A. Ludovico 6. Creazione di plugin

Parte 2 ESERCITAZIONE Editing digitale della partitura - Prof. Luca A. Ludovico 6. Creazione di plugin

Esercizi Si scriva un plugin che conta il numero di pause nella prima voce del primo pentagramma la cui durata è superiore o uguale a 1/8. Per la verifica sui valori ritmici, si utilizzi l’attributo duration di element, che è una frazione composta dai valori interi duration.numerator e duration.denominator. Si scriva un plugin che conta il numero di accordi presenti nella sola voce 2 che contengano una nota il cui pitch sia 60. Per preparare un esempio efficace di partitura per i test, si rammenti che 60 corrisponde al Do centrale. Editing digitale della partitura - Prof. Luca A. Ludovico 6. Creazione di plugin

Esempi di domande d’esame Si calculi il numero di pause contenute nell’intera partitura, scorrendo tutte le voci di ogni pentagramma Si calcoli sull’intera partitura il numero di note scritte come Do naturale (tpc1 = 14) di durata pari a un quarto Si calcoli sull’intera partitura il numero di accordi costituiti da almeno 3 note. Si scriva un plugin per contare il numero di simboli musicali (accordi e pause) all’interno di una selezione Si raddoppi all’ottava inferiore tutte le note il cui pitch è maggiore o uguale a 72. Editing digitale della partitura - Prof. Luca A. Ludovico 6. Creazione di plugin