Fado Sound Suite – generatore ed elaboratore di suoni e musica

Fado Sound Suite è un progetto a cui sto lavorando da tempo. In poche parole è un sintetizzatore modulare realizzato con Qt e poche altre librerie. Permette di generare suoni e musica e di applicare effetti sonori in tempo reale. Inoltre sono a disposizione dei moduli per mixare, sempre in tempo reale, i segnali provenienti da file e dal microfono. Può essere quindi utilizzato per registrare un brano sintetizzato, registrare una esecuzione o per applicare degli effetti in tempo reale. Read more

Funzione per la codifica dei dati da inviare via HTTP POST

Per gestire le comunicazioni web della propria applicazione viene usata la classe QNetworkAccessManager.

Questa classe possiede ovviamente i metodi necessari per effettuare richieste di tipo GET, POST, PUT e HEAD, ovvero tutto il necessario per gestire con comodità la maggior parte delle comunicazioni via HTTP.

In particolare il metodo post è così definito:

QNetworkReply *	post ( const QNetworkRequest & request, const QByteArray & data )

Curiosamente però, volendolo usare è necessario comporre manualmente il parametro data che, come sappiamo, risulta essere una lista di coppie chiave=valore separate dalla e commerciale &.

Può quindi risultare utile una funzione come questa:

QByteArray NetworkAccessManager::postDataEncoding(ParamHash hash)
{
  QStringList list;
  QHashIterator i(hash);
  while (i.hasNext()) {
    i.next();
    list << i.key()+"="+QUrl::toPercentEncoding(i.value());
  }
  
  return list.join("&").toUtf8();
}

dove ParamHash è semplicemente un hash di stringhe definito in questa maniera:

typedef QHash<QString, QString> ParamHash;