Hallo zusammen,
ich brauche eine MCU für einen 16-Kanal Drumcomputer.
Die Klangerzeugung ist sample-basiert in hoher Qualität (16bit, 44.1khz)
Gleichzeitig brauche ich noch Reserven für etwas digitales processing
(tune +/- 6 semitones und decay) und einen Sequencer.
Welchen Chip könnte man da nehmen? Ich befürchte mit einem PIC 32 komme
ich nicht weit.
Vielen Dank und Grüße
David
Das STM32F7-Discovery Board hat 16+1 MByte Flash, 8 MByte SDRAM, einen
microSD-Slot und somit eine Menge Speicher für Samples. Der integrierte
WM8994-Audio-Codec (mit Klinken-Buchse) hat einen "Hi-fi 24-bit
4-channel DAC" mit 96 kHz Sample Rate. Der Controller läuft mit bis zu
216 MHz und hat DSP-Extensions. Über das Touch-LCD könntest du eine
Benutzeroberfläche bauen.
http://www.st.com/en/evaluation-tools/32f746gdiscovery.html
Das ist schonmal nich uninteressant, aber für den weiteren Analogen
Signalweg benötige ich eben diese 24 mono kanäle DAC vor/nach dem DAC.
Nach dem DACs gehts voll analog durch LP/HP Filter und dann in einen
Mixer bzw. in Einzelausgänge.
Ach so war das gemeint. Warum mixt du nicht direkt auf dem
Drumcomputer/Mikrocontroller? Was willst du mit 24 Einzelausgängen,
alles auf einzelne Lautsprecher geben?
Kannst ja mal nach Codecs mit 24 Ausgängen suchen, die du dann per I²S,
AC97 o.ä. mit dem Controller verbindest. Einen MCU mit so vielen
Ausgängen wirst du wohl nicht finden. Du müsstest mal genau im
Datenblatt nachlesen ob der SAI-Block so viele Kanäle kann.
Die Einzelausgänge finde ich immer praktisch, wenn man in ein Mischpult
geht um die Kanäle separat zu bearbeiten (EQ, Comp., FX etc.)
Bis zur Stereosumme digital zu bleiben macht die Angelegenheit
allerdings deutlich einfacher.
Hm...
Ich könnte zum beispiel mehrere TI PCM1774 die jeweils 2 kanäle können
nehmen. Bleibt die Frage ob die MCU fürs berechnen von 24* 16bit
genügend power hat.
david schrieb:> Ich könnte zum beispiel mehrere TI PCM1774 die jeweils 2 kanäle können> nehmen
Da gibt's aber einige die mehr können.
david schrieb:> Bleibt die Frage ob die MCU fürs berechnen von 24* 16bit genügend power> hat.
Definiere "Berechnen". Programmier das einfach erstmal in C auf dem PC,
ermittle die benötigte Rechenleistung, und suche danach die passende MCU
aus. Der F7 hat jedenfalls ne Menge Rechenleistung. Für mehr bleiben
fast nur noch DSP's übrig, und die sind schwieriger & teurer zu
programmieren. .
Mit "berechnen" meine ich nicht nur die Möglichkeiten die Tonhöhe zu
manipulieren (+/- 6 Halbtöne) und den Decay der Samples. Ist ja
eigentlich nicht besonders rechenintensiv, sondern allein den
Datendurchsatz.
Ich will halt in CD-Qualität (16bit, 44.1kHz) gleichzeitig 24 mono
Spuren (eigentlich 8 Mono und 16 Stereo) abfeuern können.
Dann wären das 24 (mono Kanäle) 16bit 44.1kHz = 16934,4kBit/s oder
16MBit/s
Plus Reserven für OS und die Paar FX.
David schrieb:> Dann wären das 24 (mono Kanäle) 16bit 44.1kHz = 16934,4kBit/s oder> 16MBit/s
Das ist für so einen Controller an sich kein Problem dank DMA. Wenn der
dann aber pro Sample noch 200 Takte Berechnung machen soll wird's eng.
Daher muss der Algorithmus abgeschätzt werden.
David schrieb:> PIC24FJ256GB210-I/PT
Ich sehe da keine I2S Schnittstelle und kein DMA. Wie willst du die
Audio Daten da heraus bekommen? Wo willst du die Samples speichern, auf
einem SPI Flash? Ist das schnell genug?
Warum für eine Rechen aufwändige Aufgabe auf einen 16bit 32Mhz
Controller mit 16MIPS beschränken wenn es viel schnellere gibt? Der F7
hätte 32bit, 216 MHz, 462 MIPS, eine FPU, 2x I2S, QSPI und SDMMC für das
Laden der Samples.
David schrieb:> Welchen Chip könnte man da nehmen?
Den, für den du die Software schon hast.
Du willst doch nicht ernsthaft alles selber schreiben, das wird noch nie
fertig.
David schrieb:> Ich will halt in CD-Qualität (16bit, 44.1kHz) gleichzeitig 24 mono> Spuren (eigentlich 8 Mono und 16 Stereo) abfeuern können.> Dann wären das 24 (mono Kanäle) 16bit 44.1kHz = 16934,4kBit/s oder> 16MBit/s
8 Mono + 16 Stereo sind 40 Kanäle oder 3.5 MByte/Sekunde.
Eigentlich wäre das eine interessante Aufgabe für ein FPGA.
Der PIC hat beides I2S und SPI und hat 40MIPS bei 32MHz kostet nur 3EUR.
DMA bietet dann der PIC24H aber auch gleich mit.
Ich kenne mich per se nicht so gut aus, aber mit den F7 kenne ich mich
mal gar nicht aus :-(
Haben ist besser als brauchen :-)
Nein, man ist flexibler, wenn man z. B. mal eine Snare oder Kick separat
durch nen Kompressor jagen möchte, Snare dann noch etwas Hall und so
weiter...
Die Stereospuren werden auch nur als Stereopaar einzeln rausgeschliffen.
Macht in Summe 8 Mono-Out und 2 Stereo-Out (dort werden die 8
Stereospuren zu je 2 Sub-Gruppen á 4 zusammengelegt).
Und damit ich mir keine Gedanken über ein komplexes Routing machen muss,
gibt es ne Stereosumme und Einzelausgänge. Das geht wunderbar analog.
Bei der Aufgabe würde ich eventuell über ein modulares Design
nachdenken. Bau eine einfache Baugruppe die nur einen Stereokanal
bedient und die Rohdaten direkt von einer SD-Karte lädt. Ein separater
Controller steuert dann das Zusammenspiel. Wenn du Leiterplatten machen
lässt gibt's die beim Freundlichen aus Fernost sowieso wenigstens im
10er Pack. Controller zur Bewältigung eines Stereo Kanals gibt es wie
Sand am Meer, von Hand gut lötbar und preiswert. Den analogen Kram musst
du sowieso mehrfach auslegen. Das hat auch den Vorteil, dass du nur
relativ kleine Platinen brauchst, die in der Summe preiswerter sind.
Mit anderen Worten Bau einfach so viele "Drumcomputer" wie du analoge
Einzelausgänge brauchst.
David schrieb:> Haben ist besser als brauchen :-)>> Nein, man ist flexibler, wenn man z. B. mal eine Snare oder Kick separat> durch nen Kompressor jagen möchte, Snare dann noch etwas Hall und so> weiter...
Ja, dass Einzelausgänge sinnvoll sind, ist mir schon klar.
> Die Stereospuren werden auch nur als Stereopaar einzeln rausgeschliffen.> Macht in Summe 8 Mono-Out und 2 Stereo-Out (dort werden die 8> Stereospuren zu je 2 Sub-Gruppen á 4 zusammengelegt).
Ach so, ich war jetzt davon ausgegangen, dass du die insgesamt 24 Kanäle
alle einzeln rausführen willt.