reksa97 / tiralabra-synth Goto Github PK
View Code? Open in Web Editor NEWSimple synthesizer created with Java for an university course
License: MIT License
Simple synthesizer created with Java for an university course
License: MIT License
Projekti ladattu koneelle 30.11. klo 15.05
Projektisi vaikuttaa oikein hienolta. Näin asiaan vihkiytymättömänä minun on vähän vaikea pysyä kärryillä ohjelman sisäisestä toiminnasta. Mutta sain ohjelman kyllä toimimaan ja pystyin sillä soittamaan muutamia epävireisiä sävelmiä. Ilmeisesti kuitenkaan kaikkia ylä- ja keskirivin näppäimiä ei ole kartoitettu sävelmiin esim. q ei tuota mitään ääntä. Tämä olisi ehkä hyvä tuoda ilmi itse ohjelmassa, esimerkiksi jos ohjelmassa olisi jokin "Help"-valikko.
Koodi vaikuttaa oikein toimivalta ja hyvin refaktoroidulta. Toiminnallisuudet ja käyttöliittymät on eroteltu selvästi eri paketeihin ja luokat on muodostettu järkevästi. Oikeastaan ainoa asia mikä kävi silmiin, on luokan ADSR suuri attribuuttimäärä. Voisiko näitä vähentää esimerkiksi antamalla luokalle double ja boolean tyyppiset taulukot, joiden kukin indeksi vastaa jotakin noista attribuuteista?
Dokumentointi on pääosin hoidettu hyvin. Koodissa on vielä jonkin verran jäljellä kommentoitua koodia, eli nämä tiedot kannattaisi siirtää javadociin. Muuten dokumentointi vaikuttaa kattavalta. Tosiaan voisit ehkä dokumentoida ohjelman käyttöä tarkemmin mm. rivikomentojen suhteen.
Ohjelmassa on kattava testaus ainakin rivikattavuuden suhteen (>99%). Testit itsessään vaikuttavat testaavan järkeviä asioita.
Kaiken kaikkiaan hyvin tehty ohjelmointityö, jonka taustalla on selvästi harrastuneisuutta tai muuta mielenkiintoa aihetta kohtaan.
Ladattu 6.12.2018 n. 23:45
Hyvää työtä. Työ vaikuttaa oikein hienolta!
Joitain huomioita:
Saattoi sattua vain huono lataushetki, (vai onko tässä mahdollisesti ongelmana että olen w10:ssä?) mutta:
Javadoc puuttuu jostain kohdista, vaikka sitten kommentoituja selityksiä on. Nämähän voisi samantien hoitaa javadoccina kaikki?
Johonkin dokumenttiin voisi merkitä selkeämmin mitkä ovat - huomioon ottaen kurssin tarkoituksen - oleelliset algoritmit ja tietorakenteet ja mitä aika ja tilavaatimuksia näillä on. Sitten tietysti myös kun testausta tehdään, niin sen, että päästiinkö vaatimuksiin.
Muuten koodi on mielestäni pääosin ihan kunnossa. Tosin projektissa on juuri synteettisaattoriin liittyviä erityisia muuttujia ja metodeita niin paljon, että vaikea seurata.
Joitain huomioita koodista:
Rakenne
Arkkitehtuuri: Jollain kaaviolla (dokumentointiin) voisi selventää mikä luokka riippuu mistäkin. Miten tieto etenee näppäimestä ääneksi? Luokkia voisi ehkä myös jakaa lisää, katso nimeäminen. En tiedä onko tässä koodin tasolla mitään pielessä sen enempää. Muista kuitenkin Single resposibilty principle ja riippuvuuksien minimointi.
Nimeäminen: Luokkien nimet eivät ole kovin intuitiivisia. Implementation -dokumentti auttoi paljon, muuten olisin varmaan ollut aika hukassa. Esimerkiksi synth näyttää nyt huolehtivan bufferoinnista, joistain ulkoasuseikoista(?) ja jostain muusta (audioinfo). "Keyboard" luokasta ajattelisin ehkä ennemmin jotain input-lukijaa. Luokassa kuitenkin myös jo tehdään taajuudet. Toisaalta utils paketissa on lisää keyboard - toiminnallisuutta. ADSR -luokka ei oikein nimenä sano mitään, toisaalta voi olla että ääniin jotenkin perehtyneelle luokka on ihan intuitiivinen.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.