MIDIsynth

Dessa blev ej nominerade för omröstningen
Floaf
Inlägg: 11
Blev medlem: 6 november 2008, 20:47:45
Ort: Norrköping
Kontakt:

MIDIsynth

Inlägg av Floaf »

Hej!
Jag tänkte presentera mitt lilla projekt som är en synth som styrs av midisignaler.
Jag har tyvärr ingen bra ursäkt men tiden har varit lite knapp med det här projektet så det har inte riktigt blivit klart kodmässigt, men det är ju sådant som alltid går att vidareutveckla.

Tanken med projektet är att jag dels ville lära mig hur avancerade ljud man kan generera, vad AVR:en klarar av så att säga, och dessutom att ta emot meddelanden om vilka ljud som ska spelas via midi. Att ta emot midisignalerna visade sig vara mycket lättare än väntat eftersom det gick att ta emot dem via UART:en så den delen är interruptbaserad.

När vi kommer till ljudgenereringen så är det den delen jag skulle vilja lägga lite mer tid på och implementera lite fler features och framför allt fler ljud än det enda som finns just nu. Dock är koden tillräckligt snygg att andra utan större problem borde kunna lägga till egna features och ljud.
Ljudet som finns idag är en multipel sågtandsvåg. Varje ton/stämma består av fyra sågtandsvågor som har en liten skillnad på frekvensen, vilket innebär att man får en fylligare ton. Med 16 Mhz klockfrekvens så klarar den att generera 8 simultana stämmor. Dock så räcker inte kraften till för att implementera ADSR-ramper, men tanken är att jag ska offra en stämma för att även få in dessa.

När det gäller design av kretskortet så är det i ett första-prototyp-stadie eftersom jag inte har en kretskortsmonterad midikontakt på (elfa hade leveranstid på dessa så det hade inte hunnits med) och då hoppade jag även över en RCA/teleplugg. Helst hade jag velat använda en i2c/twi-baserad D/A-omvandlare för ljudet och jag införskaffade en TC1320EOA för detta ändamål. Dock upptäckte jag efteråt att maxfrekvensen för datatrafiken till denna var 100 khz vilket inte alls räcker eftersom jag har en samplingsfrekvens på 16 khz och därför behöver skicka i minst 16 x 8 = 128 khz och kanske även behöver adressera D/A:n inför varje nytt värde vilket skulle innebära 256 khz. Så nödlösningen blev att använda mig av resistorer för D/A-omvandlingen.
Jag har även satt dit de tre tryckomkopplarna på kretskortet för att kunna slå på och av features, men dessa är inte implementerade. Det sitter även Två lysdioder på och dessa implementerade jag för 40 minuter sedan :-) Den ena lyser konstant när synthen är strömsatt och den andra blinkar vid inkommande (och implementerad) midimeddelande.

Bilagor kommer in i denna mapp!
http://floaf.net.nyud.net/midisynth/

// Floaf

(.nyud.net tillagt av mrfrenzy för att snabba upp visningen lite)
Låst