C++: Difference between revisions

From EMC23 - Satellite Of Love
Jump to navigation Jump to search
No edit summary
mNo edit summary
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
C++
About C++
Uses include for [[Vst]] and [[VCVRack]] plugin development.


C++ (pronounced cee plus plus) is a general purpose programming language developed by Bjarne Stroustrup starting in 1979 at Bell Labs. It is immensely popular, particularly for applications that require speed and/or access to some low-level features. It is considered to be an intermediate level language, as it encapsulates both high and low level language features.
Uses include [[Vst]] and [[VCVRack]] plugin development.


== Framework Supported by EMC ==  
== Tutorial frameworks ==
[[JUCE]]
* https://exercism.org/tracks/cpp


== Frameworks & Libraries Supported by EMC ==
* [[PortAudio]]
PortAudio is a free, cross-platform, open-source, audio I/O library.  It lets you write audio programs in 'C' or C++ that will compile and run on many platforms including Windows, Macintosh OS X, and Unix (OSS/ALSA). It is intended to promote the exchange of audio software between developers on different platforms. It provides a very simple API for recording and/or playing sound using a simple callback function.


== IDEs Supported By EMC ==
* [[RtAudio]]
RtAudio is a set of C++ classes that provide a common API (Application Programming Interface) for realtime audio input/output across Linux, Macintosh OS-X and Windows operating systems. RtAudio significantly simplifies the process of interacting with computer audio hardware. It was designed with the following objectives:


* Windows: 2 IDEs are recommended [[Code Blocks]](open source) and [[Visual Studio]] (Closed Source). I find [[Visual Studio]] has more support from [[Juce]] and I will be supporting this IDE for the present.
** object-oriented C++ design
** simple, common API across all supported platforms
** only one source and one header file for easy inclusion in programming projects
** allow simultaneous multi-api support
** support dynamic connection of devices
** provide extensive audio device parameter control
** allow audio device capability probing
** automatic internal conversion for data format, channel number compensation, (de)interleaving, and byte-swapping
** RtAudio incorporates the concept of audio streams, which represent audio output (playback) and/or input (recording). Available audio devices and their capabilities can be enumerated and then specified when opening a stream. Where applicable, multiple API support can be compiled and a particular API specified when creating an RtAudio instance. See the API Notes section for information specific to each of the supported audio APIs.
 
* [[VULT]]
 
 
* [[JUCE]]
JUCE has hundreds of classes covering a vast range of tasks from high-level user-interface handling right down to low-level collections, networking, strings, etc. Supported platforms are OSX, Windows, Linux, iOS and Android, and the Introjucer project management tool makes it a breeze to create and maintain cross-platform projects.
 
== IDEs  ==
 
* Windows:  
** [[Visual Code]]
** [[Code Blocks]](open source)
** [[Visual Studio]] (Closed Source).
I find [[Visual Studio]] has more support from [[Juce]].


* MAC
* MAC

Revision as of 16:14, 1 September 2021

About C++

C++ (pronounced cee plus plus) is a general purpose programming language developed by Bjarne Stroustrup starting in 1979 at Bell Labs. It is immensely popular, particularly for applications that require speed and/or access to some low-level features. It is considered to be an intermediate level language, as it encapsulates both high and low level language features. Uses include Vst and VCVRack plugin development.

Tutorial frameworks[edit]

Frameworks & Libraries Supported by EMC[edit]

PortAudio is a free, cross-platform, open-source, audio I/O library. It lets you write audio programs in 'C' or C++ that will compile and run on many platforms including Windows, Macintosh OS X, and Unix (OSS/ALSA). It is intended to promote the exchange of audio software between developers on different platforms. It provides a very simple API for recording and/or playing sound using a simple callback function.

RtAudio is a set of C++ classes that provide a common API (Application Programming Interface) for realtime audio input/output across Linux, Macintosh OS-X and Windows operating systems. RtAudio significantly simplifies the process of interacting with computer audio hardware. It was designed with the following objectives:

    • object-oriented C++ design
    • simple, common API across all supported platforms
    • only one source and one header file for easy inclusion in programming projects
    • allow simultaneous multi-api support
    • support dynamic connection of devices
    • provide extensive audio device parameter control
    • allow audio device capability probing
    • automatic internal conversion for data format, channel number compensation, (de)interleaving, and byte-swapping
    • RtAudio incorporates the concept of audio streams, which represent audio output (playback) and/or input (recording). Available audio devices and their capabilities can be enumerated and then specified when opening a stream. Where applicable, multiple API support can be compiled and a particular API specified when creating an RtAudio instance. See the API Notes section for information specific to each of the supported audio APIs.


JUCE has hundreds of classes covering a vast range of tasks from high-level user-interface handling right down to low-level collections, networking, strings, etc. Supported platforms are OSX, Windows, Linux, iOS and Android, and the Introjucer project management tool makes it a breeze to create and maintain cross-platform projects.

IDEs[edit]

I find Visual Studio has more support from Juce.
  • MAC
  • Linux

Hardware[edit]

Bela

Books[edit]

The Audio Programming Book