Domanda

Sono interessato a scoprire se esiste un programma o una libreria in grado di eseguire le seguenti attività e sarebbe adatto per essere eseguito come parte di un processo lato server su un sito web. (Va bene se ci vuole più del massimo di 200 millisecondi che è ragionevole per una singola richiesta di pagina - Posso eseguirlo come un processo asincrono.)

Il compito è questo: ho come input una serie di file audio e ho alcuni dati su quando ogni file audio dovrebbe iniziare a essere riprodotto in una sequenza temporale. Il programma dovrebbe generare un file audio che è un mix dell'audio in ingresso, combinato usando i dati della timeline. Cioè, voglio un mixer audio che funzioni in modalità batch e non in tempo reale.

Ho fatto alcune ricerche su Google, ma mi è sembrato un po 'frustrato perché non sono esattamente sicuro di cosa dovrei cercare. La maggior parte dei mixer audio sembra orientata verso applicazioni in tempo reale come i giochi, e non sono sicuro di come trovare qualcosa che fa questo compito come qualcosa di simile a un'utilità da riga di comando: prendere semplicemente input e produrre output il più velocemente possibile.

Spero che questa domanda abbia un senso.

Modifica: qualcuno ha commentato Csound , quindi lo ha eliminato. Che cos'è Csound? È relativamente semplice fare ciò che sto chiedendo? Tieni presente che i miei file audio di input possono essere lunghi tra 10-50 secondi e non sono interessato alla distorsione del tono.

Come lo faresti in Csound?

C'è qualcos'altro oltre a Csound che può fare questo genere di cose?

È stato utile?

Soluzione

Puoi sicuramente usare Csound per questo, e potrebbe essere implementato in diversi modi. Sfortunatamente, il mio studio ancora abbastanza nascente di Csound è stato più coinvolto nella sintesi audio e nella composizione algoritmica che nel campionamento e nell'elaborazione, quindi non posso offrire suggerimenti per un'implementazione solida.

Tuttavia, immagino che il file dell'orchestra del tuo progetto (la parte di un programma Csound che contiene la sintesi audio e le informazioni di elaborazione, contenute in moduli chiamati strumenti ) implicherebbe l'opcode soundin , che legge da un file audio, quindi ridimensionerebbe l'ampiezza di vari flussi e li mescolerebbe prima di passare all'output.

La linea temporale verrebbe probabilmente gestita nel file di spartito (la parte di un programma Csound che gestisce l'inizializzazione di strumenti e tabelle di funzioni), che tradurrebbe i dati della vostra linea temporale in tempi di riproduzione.

Puoi anche cercare la subroutine GEN01 di Csound, che legge i dati audio da un file in una tabella di funzioni.

Altri suggerimenti

Se sei disposto a prendere in considerazione l'esecuzione di script batch come parte di questo processo, potresti trovare SoX utile . Il suo "quotatore" e "remix" i comandi sembrano essere utili, anche se potrebbe essere necessario rendere spazio vuoto all'inizio dei file audio per gestire gli offset.

Dovresti dare un'occhiata a SuperCollider . Forse quello farebbe il trucco per te.

Qualcosa come i OpenAL binding di PHP ?

Puoi guardare la BASS Audio Library . Non riesco a vedere se può mescolare più velocemente del tempo reale, poiché è bloccato dal firewall, ma in passato l'ho trovato facile da usare.

Probabilmente stai ricevendo molti suggerimenti su soluzioni audio in tempo reale a causa del modo in cui hai formulato la tua domanda:

  

Il programma dovrebbe emettere un audio   file che è un mix dell'input   audio, combinato utilizzando la sequenza temporale   i dati.

" Ingresso audio " è molto vago. Per me suona come un flusso di input dal vivo (come un microfono). Se non hai affatto a che fare con flussi di I / O live, sì, Csound sarebbe un probabile candidato. Ci sono molti tutorial online di Csound.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top