C++

ProgHead

Gepokt en gemazeld
Lid sinds
26 februari 2019
Berichten
5.744
Locatie
Zeist
Heeft iemand hier ervaring met C++? Is dat veel moeilijker dan bijvoorbeeld Python of Csound?

Wat voor audio software je ook gebruikt het lijkt wel of die software altijd als onderliggende taal gebruik maakt van C of C++, maar is dat ook zo?
 
Geen ervaring hier met C++, wel met PHP en python en javascript. C++ heeft de naam moeilijker te zijn dan de andere drie, maar los daarvan is er een ander wezenlijk verschil, scriptingtalen als Python en PHP zijn voornamelijk bedoeld voor in een shell omgeving en zijn niet perse gericht of geschikt voor audio toepassingen, maar meer voor het verwerken van data en het opslaan of aanleveren daarvan via, database, web, api, etc.

Met C++ kun je applicaties schrijven die veel meer kunnen dan alleen dat. Eigenlijk kan je alles wel in C++ maken en je bent veel vrijer in de interface die je wilt maken om je software te gebruiken. Daar tegenover staat dat je dan libraries moet gaan gebruiken en die moet je dan wel goed snappen ook.

Als je aan de gang wilt met bijvoorbeeld draaiknoppen te programmeren zal dit in Python niet lukken, in C++ wel, overigens, in Javascript is ook veel mogelijk qua interface en is een stuk makkelijker dan C++ om te leren.
 
Voor als je de javascript aanpak ook wil onderzoeken :


C++ cursus: (ik leer alleen nog naar online, vroeger las ik veel boeken van O'Reilly)

 
C++ is idd wel een stuk moeilijker dan Python.
De basics zijn niet heel moeilijk maar het eco systeem eromheen wel.
Bij C++ zou je alles zelf moeten doen, ook buffers, garbage collection etc. Dat maakt het moeilijker dan Python maar ook veel krachtiger en sneller.

Csound is domain specific programming language waar alle bouwstenen om muziek te maken aanwezig zijn.
Csound is in C geschreven.

Libraries in Python die snel moeten zijn zijn ook in C geschreven.

De reden dat audio programma's in C/C++ zijn geschreven is dat het sneller werk, portable is en beter realtime kan werken.
 
Ik heb aardig wat ervaring met C++. En als je het onder de knie hebt is het een krachtige taal, maar de leercurve is steil. In vergelijk met Python is het ook afhankelijker van het platform waar je voor programmeert.
Een van de grote voordelen van C++ is dat je als programmeur zelf verantwoordelijk bent voor het aanmaken en weggooien van stukken geheugen die je nodig hebt. Vrijwel alle andere talen doen aan 'garbage collection', waarin het systeem het opruimen doet. Maar dat is een behoorlijke invasieve operatie, en je hebt niet zelf in de hand wanneer het gebeurt, dus de performance kan er stevig onder lijden.
Als je audio apps of plug-ins maakt met een platform als JUCE wordt je een beetje geïsoleerd van afhankelijkheden van platforms en plug-in formaten, en, wat best belangrijk is, het programmeren van de user interface.
Ik was behoorlijk onder de indruk van de boeken van Will Pirkle, de eerste is beter dan de tweede:
Designing Audio Effect Plugins in C++
Designing Software Synthesizer Plugins in C++
Naast C++ leer je hier een hoop over DSP.
 
Als je aan de gang wilt met bijvoorbeeld draaiknoppen te programmeren zal dit in Python niet lukken, in C++ wel, overigens, in Javascript is ook veel mogelijk qua interface en is een stuk makkelijker dan C++ om te leren.
Er zijn diverse GUI frameworks voor python zoals TKinter en Qt en vergeet pygame niet. Met die laatste kun je elke interface bouwen die jij wilt en vrij simpel ook. Ook draaiknoppen en real time graphics ala beatsaber/guitar hero.

Muis interactie is ook geen probleem.

Onderschat het niet.
 
Als ik code zie met veel curly brackets, ik ren hard weg, welke taal het ook mag zijn... ;) Maar kan me voorstellen dat C/C++ soms niet te vermijden is, vooral als het moet aansluiten op andere software. Wil je iets programmeren zonder dat het in verband staat met iets anders, om mee te experimenten bijvoorbeeld en het kan stand-alone werken, in bijna elke general purpose taal zal dat wel lukken. Grote verschillen bestaan in performance, om een indruk te krijgen zie hier, met deze tabel...

talentabel.jpg

... met in de tweede kolom de snelheid. De top 3 voor de snelste talen met C, Rust en C++ is niet zo'n grote verrassing, denk ik. Dat Python niet zo snel is, ook niet. Mooie verrassing is nummer vier, Ada. Wil daar 'ns naar kijken, als liefhebber talen als Pascal en Delphi past dat er goed bij. Dat Pascal op nummer 1 staat voor het minste geheugengebruik, derde kolom, ook niet echt een verrassing.

Maar ja, veel hangt af waarvoor je het gebuikt. We hebben het 'ns gehad over B4A, zou mijn eerst keuze zijn voor iets dat op een Android-ding moet draaien, bijvoorbeeld.
 
Wat is nu precies je doel, want “ff” c++ leren is er gewoon niet bij, dat kost gewoon een behoorlijke inspanning (wil je goed worden dan spreek je van jaren, als je nog geen solide programmeer basis hebt).

Als je simpel weg een synth wil maken, met een gui, dan lijkt mij dit veeeel eenvoudiger om mee te beginnen: Max for Live | Ableton (aangevuld met javascript)

zie hier voor meer info: What is Max? | Cycling '74

heb je de basis daarvan een beetje onder de knie, dan kan je daarna in dezelfde omgeving Java of C++ gebruiken.
 
Laatst gewijzigd:
Dit topic is om wat ervaringen van gebruikers/kenners van C++ te vernemen. En ik heb hier al heel wat nuttige antwoorden gelezen, waarvoor dank.

Ik ken al programma's waarmee je betrekkelijk eenvoudig synths kunt maken: ChucK, Csound/Cabbage, PureData, Faust, SynthEdit. Maar daar gaat dit topic niet over.
 
Ik had in school 6 maanden C gehad en heb dan wat later in Juce een softwarematige Mackie Control gebouwd. Is al meer dan 10 jaar geleden en volgens mij is JUCE ondertussen wel verbeterd zowel qua tutorials als gebruiksvriendelijkheid(projucer). Gewoon je in vastbijten en beginnen. Ik kan nog altijd niet echt programmeren.
 
Wat is nu precies je doel, want “ff” c++ leren is er gewoon niet bij, dat kost gewoon een behoorlijke inspanning (wil je goed worden dan spreek je van jaren, als je nog geen solide programmeer basis hebt).

Als je simpel weg een synth wil maken, met een gui, dan lijkt mij dit veeeel eenvoudiger om mee te beginnen: Max for Live | Ableton (aangevuld met javascript)

zie hier voor meer info: What is Max? | Cycling '74

heb je de basis daarvan een beetje onder de knie, dan kan je daarna in dezelfde omgeving Java of C++ gebruiken.
++10
 
  • Duimpje
Duimpjes: L56
Heeft iemand hier ervaring met C++? Is dat veel moeilijker dan bijvoorbeeld Python of Csound?

Wat voor audio software je ook gebruikt het lijkt wel of die software altijd als onderliggende taal gebruik maakt van C of C++, maar is dat ook zo?
Om antwoord te geven op je vragen: ja, ja, en ja.
 
Mwah, dat het altijd zo is? FL Studio is bijvoorbeeld voornamelijk geschreven in Delphi, met wat assembler, en niet C/C++.
 
En als je dit wil op pikken ... ik heb hier nog 4 cursusboeken Delphi die je hebben mag voor 20 euro totaal (excl. verzending)...

Dank je, maar ik kan al aardig uit de voeten met Delphi. Iemand anders wellicht die meeleest? Het is een prettige taal, in elk geval.
 
Belangrijkheid hangt af van de toepassing, als je toepassing, als je audio software wil gaan schrijven dan is C++ waarschijnlijk de beste keus. Maar als je een beetje wil pielen, dan zou ik wat makkelijkers kiezen. Maar C++ leren daar is natuurlijk niks mis mee.
 
Back
Top