Difference between revisions of "Developers"

From MOD Wiki
Jump to navigation Jump to search
Line 11: Line 11:
 
For aggressive optimization, add these:<br>
 
For aggressive optimization, add these:<br>
 
<code>-ffast-math -fprefetch-loop-arrays -funroll-loops -funsafe-loop-optimizations</code>
 
<code>-ffast-math -fprefetch-loop-arrays -funroll-loops -funsafe-loop-optimizations</code>
 +
 +
Building binaries for the MOD Duo can be easily done using the [https://github.com/moddevices/mod-plugin-builder mod-plugin-builder].
  
 
== Linux ==
 
== Linux ==
Line 20: Line 22:
 
* https://www.kernel.org/doc/man-pages/
 
* https://www.kernel.org/doc/man-pages/
 
* http://pubs.opengroup.org/onlinepubs/9699919799/functions/contents.html
 
* http://pubs.opengroup.org/onlinepubs/9699919799/functions/contents.html
 +
 +
== Toolchain ==
 +
 +
As of release 1.1, the MOD Duo uses:
 +
* GCC 4.9.2
 +
* glibc 2.21
 +
* binutils 2.25
 +
 +
== Libraries ==
 +
 +
The following libraries are available inside the Duo:
 +
* acl
 +
* alsa
 +
* armadillo
 +
* audiofile
 +
* boost
 +
* cairo
 +
* dbus
 +
* expat
 +
* ffi
 +
* fftw (single and double variants)
 +
* ffmpeg
 +
* flac
 +
* fluidsynth
 +
* fontconfig
 +
* freetype
 +
* gio/giomm
 +
* glib/glibmm
 +
* icu
 +
* jack
 +
* libgig
 +
* libjpeg/libturbojpeg
 +
* liblo
 +
* libogg
 +
* libpng
 +
* libsamplerate
 +
* libsigc
 +
* libsndfile
 +
* libvorbis
 +
* libxml2
 +
* lilv
 +
* mxml
 +
* ncurses
 +
* ne10
 +
* pcre
 +
* pixman
 +
* python (3.4)
 +
* qt5 (core, network, sql and xml)
 +
* readline
 +
* serd
 +
* sord
 +
* sratom
 +
* systemd (219)
 +
* zita-convolver
 +
* zita-resampler
  
 
== JACK ==
 
== JACK ==
Line 34: Line 91:
  
 
Audio and MIDI plugins in MOD Duo are done in LV2 format.<br>
 
Audio and MIDI plugins in MOD Duo are done in LV2 format.<br>
 
+
MOD provides custom LV2 extensions (for MOD specific data and HTML interfaces).
  
 
For more information see:
 
For more information see:
Line 41: Line 98:
 
* http://moddevices.com/ns/modgui/
 
* http://moddevices.com/ns/modgui/
  
== Devices Support ==
+
== USB Device Support ==
  
* Several MIDI USB devices
+
* Several USB-MIDI devices
 
* Arduino running MocoLufa firmware (to create midi-controllers)
 
* Arduino running MocoLufa firmware (to create midi-controllers)
* Playstation 3 and 4 Controllers
+
* PlayStation 3 and 4 Controllers
* Guitar Hero Controller (Red Octane XBOX controller)
+
* Guitar Hero Controller (Red Octane Xbox version)
  
 
== Hardware Specification ==
 
== Hardware Specification ==

Revision as of 09:59, 26 September 2016

The MOD Duo as of today (release 1.1) runs Linux, version 3.4, with realtime patch.
ALSA is used for the audio driver. JACK runs inside as audio server backend, with mod-host loading each LV2 plugin as a new JACK client.
SSH is open by default, user 'root' and password 'mod'.

There's no X11 or any other kind of graphical interface. In fact, X11 libs are not even available.

The CPU is cortex A7, running at constant 912MHz.
The default compile flags are:
-mcpu=cortex-a7 -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -mvectorize-with-neon-quad

For aggressive optimization, add these:
-ffast-math -fprefetch-loop-arrays -funroll-loops -funsafe-loop-optimizations

Building binaries for the MOD Duo can be easily done using the mod-plugin-builder.

Linux

Being Linux, developers have access to UNIX and POSIX APIs.
This means <unistd.h>, <pthread.h> and <stdlib.h> for example.

For more information see:

Toolchain

As of release 1.1, the MOD Duo uses:

  • GCC 4.9.2
  • glibc 2.21
  • binutils 2.25

Libraries

The following libraries are available inside the Duo:

  • acl
  • alsa
  • armadillo
  • audiofile
  • boost
  • cairo
  • dbus
  • expat
  • ffi
  • fftw (single and double variants)
  • ffmpeg
  • flac
  • fluidsynth
  • fontconfig
  • freetype
  • gio/giomm
  • glib/glibmm
  • icu
  • jack
  • libgig
  • libjpeg/libturbojpeg
  • liblo
  • libogg
  • libpng
  • libsamplerate
  • libsigc
  • libsndfile
  • libvorbis
  • libxml2
  • lilv
  • mxml
  • ncurses
  • ne10
  • pcre
  • pixman
  • python (3.4)
  • qt5 (core, network, sql and xml)
  • readline
  • serd
  • sord
  • sratom
  • systemd (219)
  • zita-convolver
  • zita-resampler

JACK

Also known as Jack Audio Connection Kit, is the audio server running inside the MOD.
Developers can create JACK clients to interact with the audio data directly (without being managed by the plugin host).

For more information see:

NOTE: As of release 1.1, MOD Duo uses JACK2.

LV2

Audio and MIDI plugins in MOD Duo are done in LV2 format.
MOD provides custom LV2 extensions (for MOD specific data and HTML interfaces).

For more information see:

USB Device Support

  • Several USB-MIDI devices
  • Arduino running MocoLufa firmware (to create midi-controllers)
  • PlayStation 3 and 4 Controllers
  • Guitar Hero Controller (Red Octane Xbox version)

Hardware Specification

CPU:

  • Dual Core ARM A7 1.0GHz
  • 4GB Flash Storage, 1GB RAM

AUDIO CODEC:

  • Cirrus Logic, 24 bit / 48 kHz AD/DA
  • DAC/ADC: 104dB Dynamic Range. -90dB THD+N

CONTROLLER:

  • 2 knobs with LCD screen
  • 2 foot switches with color LEDs

I/O CONNECTIONS:

  • MIDI IN/OUT – Standard DIN 5 pins
  • Control Chain – RJ45 connector – for additional controllers
  • USB HOST – USB 2.0 Standard-A type, supporting: USB Bluetooth, USB Wifi, USB MIDI
  • USB DEVICE – USB 2.0 Standard-B type, supporting: USB Ethernet Connection