home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca

 
FORUM: Musica ed elettronica
Ti piace la musica e l'elettronica... discutine qui.


Sampler con vecchio PC
     
Autore Messaggio opzioni
fetente




una ogni 10 livelli


postato il:
08.03.2023, alle ore 16:42
Sampler con vecchio PC 

Ciao a tutti, scrivo perché google mi ha proposto un articolo riguardante un programma chiamato open amiga sampler (sembra che google sappia cosa mi interessa...). Si tratta di un campionatore che utilizza la porta seriale per attraverso un adc esterno per campionare suoni. Mi chiedevo, esiste un programma simile per pc? Vorrei utilizzare un vecchio PII 350 MHz.
Grazie a tutti!
nautiluso




una ogni 10 livelli una ogni 10 livelli


postato il:
10.03.2023, alle ore 22:04
Credevo utilizzasse la parallela. Comunque vedo che usano in sostituzione di Amiga un Arducoso

https://github.com/echolevel/open-amiga-sampler/wiki/That-WA…

molto bello il progetto..come campionatore però ti direi che esistono millemila programmi per pc ..basta pensare al microfono di win..o forse non ho capito cosa cerchi?
fetente




una ogni 10 livelli


postato il:
11.03.2023, alle ore 08:47
In questo caso l'arducoso è un teensy che è tipo un raspberry. La mia idea era quella di riattare i vecchi pc per farli diventare campionatori tipo akai S2000, senza usare una scheda audio ma utilizzando la parallela proprio come si faceva con l'Amiga. So che è il classico progetto da nostalgici, ma a quanto pare c'è qualcuno più nostalgico di me se ci sono montagne di persone che utilizzano ancora commodore 64 e amiga... e ci sono anche montagne di persone che utilizzano ancora gli S2000! Io ho scritto un programma in C++ 3.0 in dos 7. Per adesso rileva solo la lettura della parallela per il campionamento e funziona senza problemi. Poi ho visto quell'articolo sui convertitori per Amiga e mi sono chiesto se qualcuno non avessa già fatto qualcosa.
double_wrap




una ogni 100 livelli
una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
11.03.2023, alle ore 17:17
Il <collo di bottiglia> della parallela e' che legge solo 8 bit, inoltre servirebbe sapere a che velocita' il tuo programma riesce a leggerla.
Un arduino legge tranquillamente 38500 campioni al secondo (poco meno dell'AKAI2000 che pero' lavora a 16 bit) che permettono di gestire a circa 16 KHz audio.
Il dos non permette il timesharing per cui o campioni dalla parallela oppure elabori, pero' qualcosa si dovrebbe fare lavorando con un buon buffer.
Se ti interessa qui su grix c'e' un codice in C++/arduino che genera la trasformata di fourier quasi live di un segnale fino a 16 KHZ, dovrebbe essere agevole convertirlo in C++ per il dos.

Se ti basta acquisire a 8 bit e memorizzare per poi codificare off line in mp3 o altro non dovresti avere problemi se riesci a campionare e memorizzare almeno a 40.000 samples al secondo.

Facci sapere e magari condividi il tuo codice, di appassionati di dos e vecchi pc (non si butta nulla!) ce ne sono parecchi in giro.






"se peso cado, ma se cado non peso"
adamatj.altervista.org
double_wrap




una ogni 100 livelli
una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
11.03.2023, alle ore 17:42
Dimenticavo la cosa piu' importante di tutte.
In ingresso al campionatore e' indispensabile un filtro che tagli drasticamente tutte le frequenze maggiori del doppio della frequenza di campionamento. E' il filtro anti-aliasing e non e' affatto semplice realizzarne uno efficiente, normalmente si usano filtri digitali.
Tuttavia per le prime prove amatoriali ci si puo' accontentare di un filtro analogico passa basso molto (ma molto) ripido, almeno a 6-8 poli.



"se peso cado, ma se cado non peso"
adamatj.altervista.org
fetente




una ogni 10 livelli


postato il:
14.03.2023, alle ore 12:25
Grazie mille Double_wrap per il tuo intervento. Purtroppo il tempo che ho a disposizione è veramente poco quindi avanzo di un passetto alla volta. Avevo in giro un 4060 settato a poco più di 10 KHz e l'ho usato per il timing di campionamento (visto che il c per dos non lo gestisce). In pratica leggo ogni clock e campiono in un array il valore che arriva dall'adc. Appena trovo due minuti lo taro a 20 KHz. La velocità di lettura della mia parallela si aggira intorno agli 85 KHz quindi non dovrebbero esserci problemi.
E' un campionamento a 8 bit, ma profuma così tanto di anni 80 che non riesco a resistere!
Se ci pensate bene sarebbe un bel modo di riattare i pc vecchi. Resta il fatto che la ram gestita dal dos è 640k e io sono riuscito a riservarne 512k. Sono comunque 25 secondi circa di registrazione che non è poco...
double_wrap




una ogni 100 livelli
una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
14.03.2023, alle ore 12:49
fetente:
[CUT] la ram gestita dal dos è 640k e io sono riuscito a riservarne 512k. [CUT]

Mi ricordo che il DOS5 poteva gestire oltre i 640K col driver EMM386 per usare la cosiddetta <memoria espansa> di qualche megabit usando la tecnica della paginazione a finestra (o qualcosa del genere). Magari il tuo compilatore C ha qualcosa di simile a <malloc> per accedere alla memoria espansa.

Molti programmi commerciali di allora usavano la memoria espansa, come Lotus123 e WORD. In fondo anche windows 3.1 era un <programma dos> e usava ben 8 mega di ram sui vecchi pc486 per i primi programmi di office ed anche per FlightSimulator.

Se cerchi in rete qualcosa probabilmente trovi sulla gestione della memoria espansa da parte dei compilatori.




"se peso cado, ma se cado non peso"
adamatj.altervista.org
fetente




una ogni 10 livelli


postato il:
14.03.2023, alle ore 18:02
Tutto vero. Io uso dos 7 con EMM386 e farmalloc per l'allocazione della memoria, ma nulla da fare. Se vado oltre, il programma si blocca. L'unica cosa che non ho ancora provato è cercare di allocare più di 640k di memoria dopo aver compilato il programma per vedere se è un problema solo di debugger ma sono scettico...
fetente




una ogni 10 livelli


postato il:
14.03.2023, alle ore 18:03
Per la cronaca, uso Turbo C++ ver 3
fetente




una ogni 10 livelli


postato il:
30.03.2023, alle ore 10:42
Riciao a tutti. Nel frattempo ho fatto notevoli passi avanti. Ho usato un 4060 per il timing di sampling (sempre attraverso la parallela) e la lettura avviene correttamente fino a circa 20 khz. Oltre non ho ancora provato.
Per gestire le otto linee della porta sia in ingresso che in uscita, ho deciso di usare due 74HC623 attivati da due linee della parallela.
Questi ultimi due, però, mi stanno facendo diventare scemo... Al momento stò provando la linea in ingresso, ovvero l'ADC legge e invia in digitale gli otto bit al 623 ma la parallela non legge niente. I livelli logici letti con il tester sono corretti e se ci metto un led quello si accende e si spegne correttamente. Se collego direttamente l'ADC alla parallela quella legge correttamente. Passare attraverso il 623, invece, non funziona. Ho provato a mettere resistenze in pull-down e pull-up ma non fa differenza.
HELP!!!!
segui questo thread con grixFC, per questa funzione devi aver installato il software grixFC

torna su
     

Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito




 







 
 
indietro | homepage | torna su copyright © 2004/2024 GRIX.IT - La community dell'elettronica Amatoriale