Subversion Repositories svn.mios


Rev 1149 | Blame | Compare with Previous | Last modification | View Log | RSS feed

HEADER 3 MIOS Studio 2

<H1>MIOS Studio 2</H1>

<CENTER><IMG SRC="mios_studio/mios_studio.png" width=803 height=676></CENTER></P>

<P CLASS=INFO>MIOS Studio 2 is a <A HREF="" TARGET="_blank">Juce</A> based, platform-independent MIDI processing environment which allows to upload an application binary to a <A HREF="mbhp_core.html">MIOS8</A>, <A HREF="mbhp_core_stm32.html">STM32F1</A>, <A HREF="mbhp_core_stm32f4.html">STM32F4</A> and <A HREF="mbhp_core_lpc17.html">LPC17</A> core. It also provides MIDI monitors, a virtual MIDI keyboard, a terminal to communicate with MIOS32 applications (partly also used by MIOS8 applications), a SysEx transfer tool and configuration tools for <A HREF="midio128.html">MIDIO128</A> and <A HREF="midibox_cv_v1.html">MIDIbox CV V1</A>, a SysEx Librarian and a Filebrowser.</P>

<H2>Four simple steps to upload a MIOS application</H2>
<P CLASS=DESC>Start MIOS Studio and select the IN (1) and OUT (2) port of the MIDI interface to which you core module is connected:
<CENTER><IMG SRC="mios_studio/mios_studio_4steps.png" width=802 height=386></CENTER></P>

<P CLASS=DESC>MIOS Studio will automatically try to contact the core whenever a new MIDI port has been selected, and determine the run state. The detected application will be displayed in the query window.</P>

<P CLASS=DESC>You can repeat this check by pressing the Query button.</P>

<P CLASS=DESC>Select the .hex file you want to upload by pressing the browser button (3).</P>

<P CLASS=DESC>Thereafter press the start button to upload the binary (4).</P>

<P CLASS=DESC><B>DONE!</B> - if the upload should fail, please continue at the <A HREF="howto_debug_midi.html">MIDI troubleshooting guide</A>.

<H2>MIOS Terminal</H2>

<P CLASS=DESC>The MIOS Terminal is a very helpful debugging tool for MIOS32 applications. It displays strings which are sent with the <A HREF="" TARGET="_blank">MIOS32_MIDI_SendDebugMessage</A> or <A HREF="" TARGET="_blank">MIOS32_MIDI_SendDebugHexDump</A> function.</P>

<P CLASS=DESC>Some MIOS32 applications even provide an interactive command interface:</P>

<CENTER><IMG SRC="mios_studio/mios_studio_terminal32.png" width=802 height=218></CENTER></P>

<P CLASS=DESC>A small number of MIOS8 applications are sending messages to the terminal as well, e.g. to give you instructions for testing pin connections:</P>

<CENTER><IMG SRC="mios_studio/mios_studio_terminal8.png" width=801 height=331></CENTER></P>

<P CLASS=DESC>Note: MIOS8 won't respond to a command string sent to the PIC microcontroller. This feature is provided by MIOS32 only!</P>

<H2>SysEx Tool</H2>

<P CLASS=DESC>A simple SysEx upload/download/load/save/edit tool which should be self-explaining:
<CENTER><IMG SRC="mios_studio/mios_studio_sysex.png" width=863 height=529></CENTER></P>

<H2>SysEx Librarian</H2>

<P CLASS=DESC>The SysEx Librarian allows to upload/download/load/save/organize banks of various MIDIboxes (and other MIDI devices):
<CENTER><IMG SRC="mios_studio/mios_studio_sysex_lib2.png" width=727 height=550></CENTER></P>

<P CLASS=DESC>Beside of the classic send/receive/load/save functions for banks/patches/buffers (current patch), it provides a "Transaction" and "Assembly" bank. The Assembly bank is a temporal storage which allows to compose a new bank from different .syx files or received dumps. Once it's ready, the Transaction bank can be completely cleared, the Assembly bank can be moved into the Transaction bank, and then stored into a new .syx file, and/or transfered to the MIDIbox</P>

  <LI>for handling MIDIbox SID patches correctly, you need firmware version v2.041 or higher!</LI>
  <LI>for handling MIDIbox 808/Dr patches correctly, you need firmware version v1.3 or higher!</LI>

<H2>OSC Tool</H2>

<P CLASS=DESC>This tool allows you to send and receive OSC datagrams:
<CENTER><IMG SRC="mios_studio/mios_studio_osc.png" width=853 height=553></CENTER></P>

<P CLASS=DESC>Similar to the SysEx window, there is one frame to enter data that should be sent, and another frame which displays received messages.</P>

<P CLASS=DESC>Enter the remote host and port over which datagrams should be sent. You can either enter the IP address or the host name of the host that should receive outgoing data (such as "localhost" to send data internally on your PC/Mac).</P>

<P CLASS=DESC>The local port is the one which receives OSC datagrams from any IP. It's allowed to set the local port to the same number as the remote port if your application requires this.</P>

<P CLASS=DESC>E.g., by setting remote host to "localhost", and both ports (remote and local) to "10000", outgoing datagrams will be received like on a loopback.</P>

<P CLASS=DESC>The send window supports multiple OSC messages sent in a bundle. The syntax for entering datagrams is the same as displayed by the receive window.</P>

<P CLASS=DESC>Here some examples. To improve the readability, we always take /foo/bar as the free definable path, and we leave out the timestamp (which can optionally be specified by writing @&lt;seconds&gt;.&lt;fraction&gt; before the path.
  <LI><B>/foo/bar i1234</B> sends the integer value 1234 (int32)
  <LI><B>/foo/bar f0.42</B> sends the floating value 0.42 (float32)
  <LI><B>/foo/bar sHello!</B> sends the string "Hello!"
  <LI><B>/foo/bar SHello!</B> sends the alternate string "Hello!"
  <LI><B>/foo/bar b4:12345678</B> sends a "blob" with length of 4 bytes, values 0x12, 0x34, 0x56, 0x78
  <LI><B>/foo/bar h123456789012345678</B> sends an integer value with double resolution (int64)
  <LI><B>/foo/bar d3.1415927</B> sends the floaing value with double resolution (float64)
  <LI><B>/foo/bar t100.2</B> sends the timetag 100 (seconds) 2 (fraction)
  <LI><B>/foo/bar cX</B> sends the ASCII character X
  <LI><B>/foo/bar r8899AAFF</B> sends the RGB value (numbers in hexadecimal format)
  <LI><B>/foo/bar m903C7F00</B> sends a MIDI events (numbers in hexadecimal format, 8 digits required!)
  <LI><B>/foo/bar T</B> sends "TRUE"
  <LI><B>/foo/bar F</B> sends "FALSE"
  <LI><B>/foo/bar N</B> sends "NIL"
  <LI><B>/foo/bar I</B> sends "Infinitum"
  <LI><B>/foo/bar [</B> sends "Beginning of Array"
  <LI><B>/foo/bar ]</B> sends "End of Array"

<H2>MIDIO128 Tool</H2>

<P CLASS=DESC>Allows you to configure the (old, PIC based) <A HREF="midio128_v2.html">MIDIO128 V2</A> application:
<CENTER><IMG SRC="mios_studio/mios_studio_midio128.png" width=862 height=528></CENTER></P>

<H2>MIDIbox CV Tool</H2>

<P CLASS=DESC>Allows you to configure the <A HREF="midibox_cv_v1.html">MIDIbox CV V1</A> application:
<CENTER><IMG SRC="mios_studio/mios_studio_mbcv.png" width=862 height=293></CENTER></P>

<H2>MIOS Filebrowser</H2>

<P CLASS=DESC>The Filebrowser allows to access a SD Card, which is connected to a MIOS32 based core, via USB MIDI:
<CENTER><IMG SRC="mios_studio/mios_studio_filebrowser.png" width=952 height=550></CENTER></P>

<P CLASS=DESC>It's for example supported by <A HREF="midibox_seq.html">MIDIbox SEQ</A>, <A HREF="midio128.html">MIDIO128</A>, <A HREF="midibox_ng.html">MIDIbox NG</A>, and by all future applications which get use of a SD Card to store informations.</P>

<P CLASS=DESC>The "Update" button retrieves the directory structure. Once it has been read, files and directories can be selected in the directory tree.<BR>
Existing files can be downloaded to your computer at a speed of ca. 40..50 kb/s.<BR>
New files can be uploaded from your computer at a speed of ca. 10..20 kb/s.<BR>
The edit functions allow to modify files in text or binary (hex) format, which is really helpful for quick changes on application specific configuration files without disconnecting the SD Card from the core, or enabling the MSD driver (which would deactivate USB MIDI).</P>

<H2>Command Line Parameters and Batch Mode</H2>

<P CLASS=DESC>MIOS Studio supports following command line parameters:<BR>
<TT><PRE style="margin-left:10px; font-size:8pt">
--help                  this page
--version               shows version number
--batch                 don't open GUI
--in=<port>             optional search string for MIDI IN port
--out=<port>            optional search string for MIDI OUT port
--device_id=<id>        sets the device id, should be done before upload if necessary
--query                 queries the selected core
--upload_hex=<file>     upload specified .hex file to core. Multiple --upload_hex allowed!
--upload_file=<file>    upload specified file to SD Card. Multiple --upload_file allowed!
--send_syx=<file>       send specified .syx file to core. Multiple --send_syx allowed!
--terminal=<command>    send a MIOS terminal command. Multiple --terminal allowed!
--wait=<seconds>        Waits for the given seconds.
--gui_x=<x>             specifies the initial window X position
--gui_y=<y>             specifies the initial window Y position
--gui_width=<width>     specifies the initial window width
--gui_height=<height>   specifies the initial window height
--gui_title=<name>      changes the name of the application in the title bar
--gui_hide_monitors     disables the MIDI IN/OUT monitor when the GUI is started
--gui_hide_upload       disables the upload panel when the GUI is started
--gui_hide_terminal     disables the terminal panel when the GUI is started
--gui_hide_keyboard     disables the virtual keyboard panel when the GUI is started

<P CLASS=DESC>Usage examples:
  <LI><I>MIOS_Studio --in=MIOS32 --out=MIOS32</I><BR>
    starts MIOS Studio with MIDI IN/OUT port matching with 'MIOS32'

  <LI><I>MIOS_Studio --upload_hex=project.hex</I><BR>
    starts MIOS Studio and uploads the project.hex file immediately

  <LI><I>MIOS_Studio --batch --upload_hex=project.hex</I><BR>
    starts MIOS Studio without GUI and uploads the project.hex file

  <LI><I>MIOS_Studio --batch --upload_file=default.ngc --upload_file=default.ngl</I><BR>
    starts MIOS Studio without GUI and uploads two files to SD Card (MIOS32 only)

  <LI><I>MIOS_Studio --batch --terminal="help" --wait=1</I><BR>
    starts MIOS Studio, executes the "help" command in MIOS Terminal and waits 1 second for response

<P CLASS=DESC>Most parameters can be combined to a sequence of operations. E.g. upload a .hex file, upload files to SD Card, execute a terminal command and wait some seconds before exit.

<P CLASS=DESC>Use quotes if strings have to be specified which include spaces (e.g. terminal commands or MIDI IN/OUT ports).<BR>
Example: <I>--terminal="load default"</I>

<P CLASS=DESC>Special note to MacOS users: the binary, which has to be called to pass parameters, is located under<BR>
In order to simplify the access to the binary, just create following aliases (it's assumed, that MIOS Studio has been copied to the /Applications folder):
<TT><PRE style="margin-left:10px; font-size:8pt">
  alias ms='/Applications/'
  alias ms_batch='/Applications/ --batch'
By entering these aliases into your ~/.bash_profile, they will be available whenever a new terminal is opened.</P>


  <LI><A HREF="mios_studio/">MIOS_Studio_2_4_6 for WinXP/Vista/Win7/Win8</A>
  <LI><A HREF="mios_studio/">MIOS_Studio_2_4_6 for MacOS 10.6 (Snow Leopard), 10.7 (Lion) 10.8 (Mountain Lion) and 10.9 (Mavericks)</A>
  <LI><A HREF="mios_studio/MIOS_Studio_2_4_6.tar.gz">MIOS_Studio_2_4_6 for Linux (compiled under Ubuntu)</A>

<H2>Source Code</H2>

<P CLASS=DESC>The source code is available in the <A HREF="" TARGET="_blank">SVN Repository</A>. It requires the Juce v2 release to compile; just unpack the files under <A HREF="" TARGET="_blank">tools/juce/</A></P>

<H2>Known Issues</H2>

<P CLASS=DESC>Firstly it should be highlighted, that the Juce based MIOS Studio 2 solved all MIDI uploading issues of V1 which were mainly related to the MIDI API of Java implemented by Sun and Apple (or third party vendors)!</P>

<P CLASS=DESC>Currently there is only one known issue:
<LI><B>Windows7 64bit:</B> the SysEx communication gets stucked if a MIOS32 core opens more than one USB port (like MIDIbox SEQ V4).<BR>
<B>Workarounds</B> ensure that your are using MIOS32 Bootloader V1.010 or higher, and install the <A HREF="mios32_download.html">GM5 device driver</A>. Alternatively you could install the Korg USB driver as reported <A HREF="" TARGET="_blank">here</A>, but the GM5 driver seems to be better.