Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
wiki:programming_libraries [2012/04/25 19:47] – add MPI link emrumwiki:programming_libraries [2017/01/30 03:59] (current) – [libraries for audio processing and signal processing (DSP)] flatmax
Line 32: Line 32:
  
  **RtMidi** - [[http://www.music.mcgill.ca/~gary/rtmidi/]] - Cpp library for midi IO  **RtMidi** - [[http://www.music.mcgill.ca/~gary/rtmidi/]] - Cpp library for midi IO
 +
 + **WebAudio** - [[http://www.w3.org/TR/webaudio/]] - W3C WebAudio API 2012
 +\\
 +
 +\\
 +
 +===== libraries for audio processing and signal processing (DSP) =====
 +
 +  * [[http://code.google.com/p/ugen/| UGen++ audio processing API ]] synthesis framework in C++. It provides oscillators, filters, envelopes and event management etc.
 +
 +  * [[http://code.google.com/p/pyo/| Python digital signal processing module ]] written in C to help digital signal processing script creation. 
 +
 + * [[http://jamoma.org/ | Jamoma DSP ]] - interface for C++, with an emphasis on real-time signal processing
 +
 + * [[http://www.flatmax.org/gtkiostream/html/JackClientTest_8C-example.html | gtkIOStream jackd client ]] - trivialises using jackd for audio input and output DSP processing.
  
 \\ \\
Line 54: Line 69:
   * [[http://www.boost.org/doc/libs/1_39_0/boost/interprocess/detail/atomic.hpp| Boost Atomic.hpp (c++) ]]   * [[http://www.boost.org/doc/libs/1_39_0/boost/interprocess/detail/atomic.hpp| Boost Atomic.hpp (c++) ]]
   * [[http://threadingbuildingblocks.org/| Intel® Threading Building Blocks (Intel TBB) ]]   * [[http://threadingbuildingblocks.org/| Intel® Threading Building Blocks (Intel TBB) ]]
 +  * [[http://lttng.org/urcu| Userspace RCU library]] - User-level Read-Copy Update, Lock-free data structures (RCU lock-free hash table with auto-resize, queues, stacks), atomic operations, efficient user-level wait/wake-up
   * [[http://www.ioremap.net/node/224| libsync - Atomic operations and userspace RCU ]]   * [[http://www.ioremap.net/node/224| libsync - Atomic operations and userspace RCU ]]
   * [[http://www.pjsip.org/docs/latest/pjlib/docs/html/index.htm| PJLIB ]] - A small footprint framework library written in C for making scalable applications. Includes Atomic Ops.   * [[http://www.pjsip.org/docs/latest/pjlib/docs/html/index.htm| PJLIB ]] - A small footprint framework library written in C for making scalable applications. Includes Atomic Ops.
 +  * [[http://www.flatmax.org/gtkiostream/html/ThreadTest_8C-example.html| gtkIOStream thread]] and [[http://www.flatmax.org/gtkiostream/html/classMutex.html| gtkIOStream mutex ]] - Set of mutex and thread C++ headers to trivialise threading. Can use either pthreads or GLib threads.
 +
 +\\
  
 \\ \\
 ===== Lockfree (non-blocking) Data Structures - Libraries ===== ===== Lockfree (non-blocking) Data Structures - Libraries =====
 \\ \\
 +  * [[http://lttng.org/urcu| Userspace RCU (read-copy-update) ]]
 +  * [[http://lwn.net/Articles/262464/| What is RCU - Article ]]
   * [[http://sourceforge.net/projects/mc-fastflow/| FastFlow - Lockfree FIFO Queues ]]   * [[http://sourceforge.net/projects/mc-fastflow/| FastFlow - Lockfree FIFO Queues ]]
   * [[http://atomic-ptr-plus.sourceforge.net/| Atomic Ptr Plus ]]   * [[http://atomic-ptr-plus.sourceforge.net/| Atomic Ptr Plus ]]
Line 71: Line 92:
   * [[http://tim.klingt.org/code/projects/boost-lockfree| Boost.Lockfree ]] - A boost-like, but NOT boost, library for lockfree structs.   * [[http://tim.klingt.org/code/projects/boost-lockfree| Boost.Lockfree ]] - A boost-like, but NOT boost, library for lockfree structs.
   * [[http://www.noble-library.org/| Noble library ]] - a library of non-blocking synchronization protocols    * [[http://www.noble-library.org/| Noble library ]] - a library of non-blocking synchronization protocols 
 +  * [[http://lttng.org/urcu| Userspace RCU library liburcu-cds]] - Userspace RCU Lock-free data structures (RCU lock-free hash table with auto-resize, queues, stacks)
 +  * [[https://github.com/OpenMusicKontrollers/varchunk| varchunk ]] - rt-safe, lock-free, zero-copy, contiguous-chunk ringbuffer optimized for event handling. 
 +
 \\ \\
  
 ===== Parallel Programming ===== ===== Parallel Programming =====
  
 +\\
 +  * [[http://www.par4all.org/features/| Par4all compiler ]] - Generates OpenCL, CUDA or OpenMP parallel code from (sequenciel) C code.
 \\ \\
   * [[http://openmp.org/wp/about-openmp/| OpenMP (Open Multi-Processing) ]]  - OpenMP is an API (Application Programming Interface) that supports multi-platform shared memory multiprocessing programming.    * [[http://openmp.org/wp/about-openmp/| OpenMP (Open Multi-Processing) ]]  - OpenMP is an API (Application Programming Interface) that supports multi-platform shared memory multiprocessing programming. 
Line 93: Line 119:
   * [[http://www.khronos.org/registry/cl/| OpenCL API ]]   * [[http://www.khronos.org/registry/cl/| OpenCL API ]]
   * [[http://www.macresearch.org/opencl_episode1| OpenCL Tutorial ]]   * [[http://www.macresearch.org/opencl_episode1| OpenCL Tutorial ]]
 +  * [[http://mathema.tician.de/software/pyopencl| PyOpenCL ]] - use OpenCL parallel computation API from Python
 +  * [[http://packages.python.org/pyfft/| PyFFT ]] - fast fourier transform with OpenCL (or Cuda) using Python
 +\\
 \\ \\
   * [[http://upc.gwu.edu/| Unified Parallel C]]  - UPC is an extension of the C programming language designed for high-performance computing.   * [[http://upc.gwu.edu/| Unified Parallel C]]  - UPC is an extension of the C programming language designed for high-performance computing.
Line 155: Line 184:
 \\ \\
 Related Articles: Related Articles:
 +  * [[http://www.thinkingparallel.com/2006/08/18/more-information-on-pthread_setaffinity_np-and-sched_setaffinity/| example ]]
   * [[http://www.ibm.com/developerworks/linux/library/l-affinity/index.html| Take charge of processor affinity]]   * [[http://www.ibm.com/developerworks/linux/library/l-affinity/index.html| Take charge of processor affinity]]
   * [[http://www.gnugeneration.com/books/linux/2.6.20/kernel-api/| The Linux-Kernel API (2.6.20) ]]   * [[http://www.gnugeneration.com/books/linux/2.6.20/kernel-api/| The Linux-Kernel API (2.6.20) ]]
Line 167: Line 197:
   * [[http://stackoverflow.com/questions/939778/linux-api-to-list-running-processes| list running processes ]]   * [[http://stackoverflow.com/questions/939778/linux-api-to-list-running-processes| list running processes ]]
   * [[http://kernelnewbies.org/KernelHacking| kernel hacking]]   * [[http://kernelnewbies.org/KernelHacking| kernel hacking]]
 +\\
 +  * [[http://www.open-mpi.org/projects/hwloc/| hwloc - portable multi threading ]]
 \\ \\
 Part of an Answer at [[http://stackoverflow.com/questions/766395/how-does-sched-setaffinity-work| stackoverflow.com]] : Part of an Answer at [[http://stackoverflow.com/questions/766395/how-does-sched-setaffinity-work| stackoverflow.com]] :
Line 193: Line 225:
 </code> </code>
  
 +\\
 +\\
 +\\
  
 ===== GUI libraries - create graphical user interfaces ===== ===== GUI libraries - create graphical user interfaces =====
Line 201: Line 236:
 ==== 2-dimensional ==== ==== 2-dimensional ====
  
- **Juce** (framework) - [[http://www.rawmaterialsoftware.com/juce.php]] .+ **Juce** (framework) - [[http://www.rawmaterialsoftware.com/juce.php| Juce]]  and [[http://www.anticore.org/jucetice/| Juced ]]
  
  **Sfml** - [[http://www.sfml-dev.org/features.php]] .  **Sfml** - [[http://www.sfml-dev.org/features.php]] .
Line 219: Line 254:
  **WxWidgets** - [[http://www.wxwidgets.org/]] .  **WxWidgets** - [[http://www.wxwidgets.org/]] .
  
- **Ultimate++** - [[http://ultimatepp.org/www$uppweb$overview$en-us.html]] - Cpp cross-platform Framework+ **Ultimate++** - [[http://ultimatepp.org/www$uppweb$overview$en-us.html]] - Cpp cross-platform Framework .
  
- + **gtkIOStream** - [[http://sourceforge.net/projects/gtkiostream/]] - Inline headers for C++ iostream style GTK GUI building .
-.+
  
 ==== with 3-dimensional capabilities ==== ==== with 3-dimensional capabilities ====
Line 277: Line 311:
  
  **MoSync** - [[http://www.mosync.com/]] - Cpp, for Smartphones etc.  **MoSync** - [[http://www.mosync.com/]] - Cpp, for Smartphones etc.
 +
 + **Kivy** - [[http://kivy.org/]] - Python library for rapid development, innovative ui, multi-touch apps
 +
 + **Tizen** - [[https://www.tizen.org/]] - "Environment for application developers, based on HTML5. "
 +
  
 . .
wiki/programming_libraries.txt · Last modified: 2017/01/30 03:59 by flatmax