User Tools

Site Tools


faq

This is an old revision of the document!


<HTML> <td>

<ul class='faq'><li class='faq'>Installation</li></ul>

</td><td>

Use the installer to install <?php wren();?>, see above for details.
<ul>
  <li>
    On a first start of a new version the program will write out some help files.
    This may look a bit messy, it will only happen once when a new <?php wren();?>
    version is run for the first time (and it can be disabled if wanted).
  </li>
  <li>
    On the first <?php wren();?> run you should set up the audio devices. This can
    be done from the main menu: <b>setup/Audio devices</b>.
  </li>
  <li>
    For a quick test you could drag in an oscillator module (Osc) and an output
    module (AudioOut). You can use <?php dokey( 'Ctrl+F');?> to find these modules
    quickly (they are on the first (I/O, pick the speaker symbol there) and second
    (Osc1, pick the leftmost sine symbol there) selector tab respectively).
    <br><br>
    <em>Turn down your volume a bit, as this may be loud otherwise.</em>
    <br><br>
    Then connect the Osc's output at the bottom right corner to the AudioOut L 1 R
    inputs.
    <br><br>
    Next hit <?php dokey( 'F9');?>, you should have sound now and the output
    level meter in strip 1 on the right side of the screen should indicate this.
    Hitting <?php dokey( 'F9');?>, again will stop the sound.
  </li>
</ul>

</td>

<td>

<ul class='faq'><li class='faq'>It will not run &hellip;</li></ul>

</td><td>

<ul>
  <li>
    When an ASIO device is being used things may not work  when the ASIO sample
    rate differs from the <?php wren();?> sample rate. Check the
    <?php settings();?> for this.
  </li>
  <li>
    Had a user report that the program would not run in Windows 7. Turned out his
    antivirus was blocking it as an unsigned program that was downloaded from the
    web &hellip; with a message saying 'Windows cannot access the specified
    device, path or file you may not have the appropriate permission'.<br>
    Please fix such issues in your AV software.
  </li>
  <li>
    Had another user report repeatedly popped up access violations. It seems that
    this can be caused by the PortAudio DLL (or <?php wren();?>'s interaction with
    it most likely). You can read more about this on an electro-music.com <a
    href='http://electro-music.com/forum/viewtopic.php?p=409992' target='_blank'
    >forum thread</a>.
  </li>
  <li>
    When the startup screen appears and disappears again and  <?php wren();?> does
    not start try to temporarily rename the espeak_sapi.dll to _espeak_sapi.dll,
    when that helps I'd like to know about it, please send me the
    <?php wren();?>.log file then (it is in the  <?php wren();?> folder you did
    create in the Installation section above).
  </li>
  <li>
    On some computers it was reported that when an audio input was selected
    PortAudio refused to work (reporting an error on opening the input stream).
    For <?php wren();?> releases after 2020.6.24.0 it is possible to explicitely
    select &lt;nothing<&gt; for the device, this may help.
  </li>
  <li>
    From time to time I'm discovering exciting new bugs, so please let me know
    about any failures.
  </li>
</ul>

</td>

<td>

<ul class='faq'><li class='faq'>Stuttering audio</li></ul>

</td><td>

<ul>
  <li>
    When NOT using ASIO, in the device selector (main menu: <b>setup/Audio devices
    )</b> use a buffer size like 2048. You can set a buffer size of zero, in which
    case the PortAudio DLL will decide on a buffer size.
  </li>
  <li>
    When using ASIO the buffer size setting is ignored, and the size recommended
    by the ASIO driver is being used instead. So for ASIO you will need to set the
    buffer size from the ASIO control panel (and should set the buffer size in
    <?php wren();?> to 0).
  </li>
<!--
  <li>
    For the 32 bit version: there may also be a bug in one of the modules causing
    it to produce denormal values, which will considerably slow down the DSP
    calculations (as shown in the DSP usage indicator). There is a diagnostic tool
    to find out about this, in the <?php debug();?> you can turn  on automatic
    denormal searching. Any modules getting or producing denormals will then be
    highlighted in the editor. Please report any such issues along  along with the
    patch causing the problems.
    <br><br>
    Note: this can not be an issue for the 64 bit version.
  </li>
-->
  <li>
    Your patch may be too complex, have a look at the CPU percentage next to the
    module selector, at around 80% things can become critical, enlarging the
    buffer size may help, lowering the Sample rate and/or enlarging the Control
    decimation in the <?php settings();?> may help.
  </li>
<!--
  <li>
    The 64 bit version performs way better than the 32 bit version, so use that
    one if possible.
  </li>
-->
</ul>

</td>

<td>

<ul class='faq'>
  <li class='faq'>
    There is no sound
  </li>
</ul>

</td><td>

<ul>
  <li>
    you will need to select a sound output device from the <b>setup/Audio
    devices</b> main menu.
  </li>
  <li>
    You will need an output module in the patch to route the patch signals to.
  </li>
  <li>
    Mute may be on, in which case there will be a flashing yellow sign in the top
    pane indicating this. Use the Action menu to toggle this. The Action menu will
    also show the current keyboard shortcut for this.
  </li>
</ul>

</td>

<td>

<ul class='faq'>
  <li class='faq'>
    When modules are added or wires are changed, nothing happens.
  </li>
</ul>

</td><td>

Manual compilation mode may be on, in which case there will be a a flashing white
or yellow indicator in the top pane. Use the Action menu to turn manual
compilation off. The Action menu will also show the keyboard shortcuts for this.

</td>

<td>

<ul class='faq'><li class='faq'>The sound quality is not very good</li></ul>

</td><td>

Try setting the sample rate higher. Out of the box <?php wren();?> used to run at
a sample rate of 44.1 kHz, setting it to 88.2 kHz or 96 kHz makes it sound a lot
better.
<br><br>
As of version 2015.9.10.0 I've made the default sample rate to be 88.2 kHz, but
when you have an earlier install the existing INI file may still set the sample
rate to a lower value. So, please check the <?php settings();?>.
<br><br>
In versions prior to 2019.11.12.0 there was a bug where some audio rate (red)
wires might turn blue (control rate). When this is the case redrawing these wires
will help. This <em>should</em> not happen anymore in any later versions.
<br><br>
When this does not help please let me know about the issue. along with the badly
performing patch.

</td>

<td>

<ul class='faq'><li class='faq'>What is the display mess (when I first start a new
release)</li></ul>

</td><td>

At startup <?php wren();?> checks to see if the help information is up to date.
When not it will generate new help info, and for some reason in order to generate
the images right the images have to be made actually visible on the screen
&hellip; which looks a bit odd &hellip; but it will be only once for each new
release.
<br><br>
When you see this on every startup it may be the case that there is no write
access allowed to the folder where <?php wren();?> resides. It's best to not have
<?php wren();?> in a windows owned folder (like 'Program Files', for instance) as
such may cause disallowed write access.
<br><br>
I've made an option to disable automatic doc file generation. This option is off
by default (so docs will be generated out of the box), and this feature will only
work when you use the old wren.ini file, e.g. when you copy the new executable
over the old one (or copy the old ini file to the new location). You can always
manually generate documentation from the <?php settings();?> by using the
'generate documentation ...' button there. Note however that when no docs were
generated the popups from the module selector will not show a module image, or an
old version of the image.

</td>

<td>

<ul class='faq'><li class='faq'>General troubleshooting</li></ul>

</td><td>

Try to see the <?php debug();?>, <?php wren();?> logs some information there. When
you <?php dokey( 'right click');?> on it you can highlight the text, and then with
another <?php dokey( 'right click');?> copy it. At times I will ask for the
information present there to help troubleshoot issues. By default this information
is written to a log file in the <?php wren();?> application directory as well,
look for wren.log.

</td>

<td>

<ul class='faq'><li class='faq'>Module help</li></ul>

</td><td>

All modules have some built in documentation, you can use F1 on a selected module
to see it. When doing for this the first time (or after a program upgrade) the
program may have to regenerate the help files, causing some display clutter. The
information will be shown in your default web browser.
<br><br>
<?php dokey( 'Right click');?> on a module and select Help from the popup menu,
this will show the same description as the generated help file without opening a
browser.
<br><br>
Also when you hover over the module selector with the mouse, popups will be shown
with some even more compact information along with an image of the module.
<br><br>
The generated help information is also used as a cache for module images to make
them look a bit nicer when you hover the mouse over the buttons in the module
selector.

</td>

<td>

<ul class='faq'><li class='faq'>Can I hear it?</li></ul>

</td><td>

I'll often have a <a href='	http://electro-music.com/radio/play.php/port_8508.m3u'
>live stream</a> going with at least a large part of the sounds being made by
<?php wren();?>. This usually will be some self playing patch(es), but you may
catch me in live bug finding too, YMMV &hellip;
<br><br>
The live stream can also be heard as radio 6 (noodle radio) on the electro-music
<a href='https://electro-music.com/radio/' target='_blank'>radio page</a>.

</td>

<td>

<ul class='faq'><li class='faq'>Can I see it?</li></ul>

</td><td>

There are some third party made basic instruction videos availble on <a
href='https://www.youtube.com/watch?v=oG9CgJk1j-c' target='_blank'>youtube</a> and
some more can be seen on the <a
href='https://www.youtube.com/channel/UCJrBMChdehViXMGHBPCtjQw' target='_blank'
>isolator channel</a>

</td>

<td>

<ul class='faq'><li class='faq'>Are there any patches available?</li></ul>

</td><td>

I've put up a lot of my <?php wren();?> patches <a
href='patches/index.php' target='_blank'
>on my website</a>. Some will need additional (mostly wave) files though to play
properly.

</td>

<td>

<ul class='faq'><li class='faq'>Where is my patch</li></ul>

</td><td>

Hit F2 to return to the patch editor.

</td>

<td>

<ul class='faq'><li class='faq'>Where does that wire go</li></ul>

</td><td>

<?php dokey( 'Click and hold');?> on a connector, the whole connected wire net
will be highlighted. In the top tool bar the 'wires' indication will turn yellow
when the wires were turned off, you can click on it to get the wires back (or use
<?php dokey( 'Ctrl+W');?>) for that. It is also possible that the wire size was
set to zero, just up it then to get the wires back.

</td>

<td>

<ul class='faq'>
  <li class='faq'>
    I can not read the display values, it's all covered by wires
  </li>
</ul>

</td><td>

Use <?php dokey( 'Ctrl+space bar');?> to wiggle the wires, the value might become
readable then. Otherwise hover the mouse over the knob controlling the display.
Not all controls have a value showing popup yet, but working on that.
<br><br>
Alternatively, set the wire size to zero to hide all wires (this is the up/down
control in the top pane, labeled with 'wires'). It is also possible to temporarily
hide the wires using <?php dokey( 'Ctrl+W');?>, press
<?php dokey( 'Ctrl+W');?> again to make them visible again.
<br><br>
In the top tool bar the 'wires' indication will turn yellow
when the wires were turned off, you can click on it to get the wires back (or use
<?php dokey( 'Ctrl+W');?>). Also changing the wire sise will always make the wires
visible (unless when set to zero).

</td>

<td>

<ul class='faq'>
  <li class='faq'>The, or some,  wires are not visible in the editor</li>
 </ul>

</td><td>

The wire thickness may have been set to zero, in the editor top pane under 'wires'
you can change this with the up/down control. It may also be that the wires were
set to be invisible (in that case the 'wires' indicator will be yellow), use
<?php dokey( 'Ctrl+W');?> to toggle wire visibility - or click on the 'wires' word
in the top tool bar.
<br><br>
It is possible to set selected wire trees to be invisible, thay can be made
visible from the action menu in this case (or just use <?php dokey( 'i');?>, or
<?php dokey( 'I');?>) .
<br><br>
For me running <?php wren();?> under Wine on OSX 10.10.3 (Yosemite) showed some
issues with wire painting, I have no cure for that.

</td>

<td>

<ul class='faq'>
  <li class='faq'>There is a reverb in my patch, but where is it?</li>
</ul>

</td><td>

Use <?php dokey( 'Ctrl+F');?> to find modules in the patch by name, partial
matches will be highlighted as well. For instance, search for 'verb' to find all
modules having that bit of text in their title. Found modules will light up their
title bar. This feature can be enabled from the <?php settings();?>. Clear the
search box by pressing the <?php dokey( 'Esc');?> key. Also see the next section
for more on this.

</td>

<td>

<ul class='faq'>
  <li class='faq'>
    There should be a module with a name like verb, but on what selector page is
    it?
  </li>
</ul>

</td><td>

Use <?php dokey( 'Ctrl+F');?> to find modules in the module selector by name. All
modules not found will be hidden, and all pages that become empty this way will be
hidden as well. To show all modules again clear the search box.  This feature can
be enabled from the <?php settings();?>. Clear the search box by pressing the
<?php dokey( 'Esc');?> key.
<br><br>
The search function can look into the patch as well. When this is enable the found
modules will get  selected in the patch. This option is on by default is can be
turned off in the <?php settings();?>.
<br><br>
The search function can look into the module docs as well. This feature is off by
default but you can turn it on in the <?php settings();?> or in the right mouse
context menu of the search field.
<br><br>
When searching the docs a button will appear on the right side of the search field
showing how many hits there are for the search phrase. This is called description
search. Description search will match whole words only to reduce the number of
hits a bit.
<br><br>
When clicking on the results button (or when pressing <?php dokey( 'Enter');?>
while still in the search box) a window will popup showing a bit of context for
the matches.
<br><br>
From that window you can go to the module help for the item you select in it or
you can make it show that module in the module selector. The search filed will be
refocussd in that case, so you can use <?php dokey( 'Enter');?> to go back into
the popup window or use <?php dokey( 'Esc');?> to clear the search.

<td>

<ul class='faq'><li class='faq'>Polyphony</li></ul>

</td><td>

As of version 2020.8.6.0 <?php wren();?> is <em>polyphonic</em> and <em>multi
timbral</em>.
<br><br>
<?php wren();?> used to be a <em>monophonic</em> synth before.
<br><br>
Almost all modules are fully polyphonic, some are monophonic and some are mixed
mono/poly. Modules that are polyphonic or mixed mode can be set into mono mode
from the module right click context menu. The module documentation will show the
poly mode for each module.
<br><br>
Mixed mode modules, like the delay lines will do a voice summation on the inputs,
but the modulation inputs will then still act in poly mode. So for instance you
can have different delay times for each voice from the delay modules (but only
trough modulations, the knob values will always be shared over all voices).
<br><br>
A good way to get voice diversification is to use some random module (all random
modules have independent randomness for their voices). Or you could use the
PolyStatus module which has an output that holds the (polyphony relative, the
output value will always be in the range [0 .. 1]) number of the voice.

</td>

<td>

<ul class='faq'><li class='faq'>Inputs and outputs</li></ul>

</td><td>

Inputs are round, outputs are square. The color indicates the signal type where
red is an audio rate signal and blue is a control rate signal. Yellow indicates a
logic level signal, usually -1 or +1 but there are exceptions where the values are
0 or 1. Lime (bright green) indicates a control rate logic signal and darker
green (control rate) or orange (audio rate) indicate logic levels that are in the
0 .. 1 range.
<br><br>
You can freely mix all signal types, the color is just a hint, although a Blue,
Lime or Green inputs will not see all samples of a Red, Yellow or ORange type
signal (often this will not matter).
<br><br>
A lot of modules are rate smart, they will adjust their calculation rate from
control rate to audio rate when an audio rate signal gets connected to one of it's
inputs (and the connectors on it will change color too then).

</td>

<td>

<ul class='faq'><li class='faq'>How to add wires</li></ul>

</td><td>

<?php dokey( 'Click and hold');?> on a connector and then drag to another
connector, then release the mouse button. You can connect inputs to inputs and
inputs to an output.
<br><br>
It is not possible to connect an input to multiple outputs, and it is not possible
to connect an output to an output.
<br><br>
It is not necessary to connect each input to an output separately, you can make a
chain connection from input to input &hellip; to output.
<br><br>
When a connection chain is not connected to an output it will have a highlight
color to indicate this, otherwise it will have the color of the output it is
connected to (the color can be changed from the connector context popup menu).

</td>

<td>

<ul class='faq'><li class='faq'>How to (re)move wires</li></ul>

</td><td>

By using <?php dokey( 'Ctrl+normal mouse click');?>, drag the wire to another
connector to reconnect it, or into the void (anywhere but on another connector) to
make it go away. There also is a connector context menu (accessible with a
<?php dokey( 'right moue click');?>) with some options for wire removal.

</td>

<td>

<ul class='faq'><li class='faq'>How to change parameters</li></ul>

</td><td>

<ul>
  <li>
    Knobs &ndash; it depends on the mode you have set in the <?php settings();?>
    <ul>
      <li>circular &ndash; a mouse drag around he knob changes it.</li>
      <li>horizontal &ndash; a horizontal mouse drag changes it.</li>
      <li>vertical &ndash; a vertical mouse drag changes it.</li>
    </ul>
    Additionally when a knob is active, that is when it's up/down clickers are
    visible (and it has a red (or fuchsia) border as well then), you can click on
    the up or  down clicker, or use the <?php dokey( 'cursor up / down');?> keys.
    A knob can be made active by positioning the mouse cursor over it or by
    tabbing to it.
    <br>
    You can also enable the mouse wheel on knobs in the <?php settings();?>.
    <br>
    There is another knob variant that has no knob but only the up / down
    clickers, this type will listen to the <?php dokey( 'arrow');?> keys when
    selected (and to the mouse wheel as well, when that was enabled).
  </li>
  <li>
    Sliders &ndash; these can be either horizontal or vertical and will behave as
    if they were knobs, but the mouse drag mode is restricted to horizontal or
    vertical only. They will respond to the mouse wheel too, when the mouse wheel
    option was enabled.
  </li>
  <li>
    Selectors &ndash; these look like displays, but have a yellow border. You can
    <?php dokey( 'click');?> on a selector to get to the next value, or
    <?php dokey( 'right click');?> on them to get a popup menu to select a value
    from. Selectors also can get focus by positioning the mouse over them, when
    they have focus to the <?php dokey( 'up/down arrow');?> keys can be used as
    well to change the values.
    <br><br>
    Some selectors act as momentary switches, or buttons, these will have a white
    border.
    <br><br>
    Displays do not have a colored border.
  </li>
</ul>
When wheel mode is used just hover over the knob and wheel the wheel. Moving the
mouse over a knob will set it to be focused, and once a knob is focused the
keyboard <?php dokey( 'up/down arrows');?> can be used to change it's values too.
A knob can also be selected by tabbing to it. There are also vertical (and
horizontal) sliders those will only support the vertical (horizontal) move mode
(along with the mouse wheel mode, when enabled). Selectors will also receive focus
when the mouse is moved over them.

</td>

<td>

<ul class='faq'><li class='faq'>right mouse clicks</li></ul>

</td><td>

<ul>
  <li>
    On a knob &ndash; set default value or lock / unlock the knob (a locked knob
    will not listen to mouse control changes).
  </li>
  <li>
    On a connector &ndash; break a connection &dash; there are some options to
    select from.
  </li>
  <li>
    On a module &ndash; Cut copy or delete it, or change its border color etc.
  </li>
  <li>
    On a selector &ndash; selectors have a yellow or a white border, you can <?php
    dokey( 'right click');?> to get a popup menu for selecting a value.
  </li>
  <li>
    On a graph &ndash; some preset curves can be selected, a couple of symmetry
    options are available and the graph can be saved to or loaded from a file.
  </li>
  <li>
    On the editor background &ndash; module options, like copy paste, module
    insertion.
  </li>
</ul>

</td>

<td>

<ul class='faq'><li class='faq'>Change module caption</li></ul>

</td><td>

<?php dokey( 'Double click');?> on the module caption, an editor pops up then.
When done hit <?php dokey( 'Enter');?> to commit the changes or
<?php dokey( 'Esc');?> to discard them. A changed module caption when moved over
by the mouse will still show the module's type. When the first character of the
module title is '@' the module is enabled for receiving OSC messages.

</td>

<td>

<ul class='faq'>
  <li class='faq'>How to edit text based controls</li>
</ul>

</td><td>

<?php dokey( 'Ctrl+left click');?> on it, or tab to it (or click on it) and use
the <?php dokey( 'Enter');?> key. This can also be done by right clicking on it
and then select Edit from the popu menu. To close the editor use <?php
dokey( 'Ctrl+Enter');?>. Module titles and single line editors just use <?php
dokey( 'Enter');?>.

</td>

<td>

<ul class='faq'><li class='faq'>How to close a text editor</li></ul>

</td><td>

Use <?php dokey( 'Ctrl+Enter');?> to save the changes, or <?php dokey( 'Esc');?>
to discard  them. You can also <?php dokey( 'click');?> outside the editor to make
it go away (and discard  changes). Single line editors can be closed with just
<?php dokey( 'Enter');?> as well.

</td>

<td>

<ul class='faq'><li class='faq'>How to use presets for modules</li></ul>

</td><td>

When you right click on a single module, or on a collection of selected modules
you will see an option to save or load the selection as a preset. The control
values will be saved to or read from a file then.

</td>

<td>

<ul class='faq'><li class='faq'>MIDI setup</li></ul>

</td><td>

<ul>
  <li>
    Trough the main menu item <b>settings/MIDI devices</b> select the MIDI devices
    to be used for input and output.
  </li>
  <li>
    In the <?php settings();?> select the MIDI Channel to use and select the
    (N)RPN preferred seting.
  </li>
</ul>

</td>

<td>

<a id='faqosc' class='anchorspace'></a>
<ul class='faq'><li class='faq'>OSC setup</li></ul>

</td><td>

Each <? wren(); ?> instance can either be an OSC transmitter (client) or an OSC
receiver (server), but not both at the same time. The client / server indications
are <a href='http://opensoundcontrol.org/' target='_blank'>official OSC terms</a>
(and also see the <a href='http://cnmat.org/OpenSoundControl/' target='_blank'>
CNMAT pages</a>).
<br><br>
There can be multiple listeners (servers) on one computer, but you can have one
transmitter (client) only on any single computer (but you could have more
transmitters (clients) spread over multiple computers).
<br><br>
When everything is set up correctly the <? wren(); ?> instance should be able to
talk to or listen to any OSC enabled device (or software) present on your network
(or computer). It is not possible to broadcast OSC messages out of your local
network. With the proper holes set in routers etc. it should still be possible to
set up a single transmitter (client) to receiver (server) link though.
<br><br>
<b>Note:</b> in the OscMessage module you do not specify the the leading slash (/)
character, <? wren(); ?> will add it it by itself.
<br><br>
<b>Note:</b> OSC address patterns are case sensitive, as in <b>Module</b> will
<em>not</em> match <b>module</b>.
<br><br>
<b>To set up <?php wren();?> as an OSC <em>transmitter (client)</em> do the
following:</b>
<ul>
  <li>
    In the <?php settings(); ?> make sure you give your synth a name, this name
    will be used as part of the OSC addresses sent around.
  </li>
  <li>
    Then go trough the main menu to the Setup / OSC setup screen for the following
    settings:
  </li>
  <li>
    The IP address must be set to a broadcasting address to allow for multiple
    receivers, otherwise the IP address of the single receiver can be used. The
    address to use depends on your network configuration but selecting
    255.255.255.255 should always work. Locally I use 192.168.1.255 as the address
    which will reach all computers in the address range 192.168.1.x. When
    everything is on one computer using 127.0.0.1 or localhost works too.
  </li>
  <li>
    The port must be set to a number not in use for any of the participating
    computers. When you select a port that is in use you will not be able to
    transmit a test message later on, and OSC errors will be reported in the log
    (OSC error logging is on by default, OSC message logging is off by default).
  </li>
  <li>
    Check the Use OSC checkbox, then hit OK.
  </li>
  <li>
    Reopen the OSC settings screen and then send test messages using the button,
    the 't' light should light up on each transmission. When it does not light up
    you probably selected a port that was already in use, so try another one.
  </li>
</ul>
<b>To set up <?php wren();?> as an OSC <em>receiver (server)</em> do the
following:</b>
<ul>
  <li>
    In the <?php settings(); ?> make sure you give your synth a name, this name
    will be used as part of the OSC addresses sent around.
  </li>
  <li>
    Then go trough the main menu to the Setup / OSC setup screen for the following
    settings:
  </li>
  <li>
    The IP address must be set empty (internally 0.0.0.0 will be used in this
    case, but the field being empty will open the UDP socket as a listening
    (server) socket, filling in anything at all will try to open it as a client
    socket, so make sure that the field is completely empty).
    When OSC is set up to be a receiver no test messages can be sent from it, and
    the button do do so will be disabled when the IP addr field is (completely)
    empty.
  </li>
  <li>
    The port must be set to the same value that was used to set up the
    transmitter.
  </li>
  <li>
    Check the Use OSC checkbox, then hit OK.
  </li>
  <li>
    Send test messages from the transmitter, the 't' light on the transmitter and
    the 'r' light on the receiver should both light up on each button click. When
    they do not light up you probably selected a port that was already in use, so
    try another one. The test button is only available on the transmitting side.
  </li>
</ul>
The test button sends a single OSC message to the address <b>/*/testmessage</b>
with a float value of 1.000 an integer value of 1001, and a string value of
'1002'.
<br><br>
There is no OSC connect light as OSC is used over UDP, a connectionless protocol,
so there is no concept of connection but only of transmitted and received packages
of data. There is a light indicating OSC to be active though, the 'a' light (in
the I/O control section on the right side of the screen).
<br><br>
The OSC listener (server) implementation used does not send replies to to the
transmitter (client).
<br><br>
The lower level protocol used to transmit the OSC messages is UDP. UDP messages
are not guaranteed to be received in the same order as they were sent, or in fact
not guaranteed to be received or sent at all. Usually it will work, but on a busy
network packets may get lost. Also it is possible to send OSC messages faster
than the network can get them out, in that case not all messages will be sent.

</td>

<td>

<ul class='faq'><li class='faq'>What OSC functionality was implemented</li></ul>

</td><td>

OSC time stamps are not supported, bundled messages can be received but are not
processed currently. Bundles are not transmitted currently. All message handling
is immediate.
<br><br>
Note that each address can be used only once in a patch, when it occurs multiple
times an arbitrary OSC handler will handle it and the other handlers will think it
to be handled after that. You can have multiple transmitters using the same
address though.
<br><br>
The following addresses are currently being used:
<ul>
  <li>
    <b>/*/testmessage</b> can be sent (from an OSC transmitter only), this is a
    single OSC message with a float value of 1.000 an integer value of 1001, and a
    string value of '1002'.
  </li>
  <li>
    <b>/&lt;synthname&gt;/sync</b> can be sent and received by the Sync module.
    This message has no parameters. The message is received when the current
    <?php wren(); ?> instance is set to be an OSC receiver. the message is
    transmitted when the current <?php wren(); ?> instance is set to be an OSC
    transmitter. Sync messages are naive, they assume zero time delay between
    transmitter and receiver.
  </li>
  <li>
    <b>/&lt;synthname&gt;/&lt;user_defined&gt;</b> for the OscMessage module, this
    will send or receive a single float message. Messages with a matching address
    with more than one parameter can still be processed as long as the first one
    is of type 'f' (float). To force a value to be sent out the trigger input
    needs a low to high transition &dash; you could put an LFO on that, or make
    a change detector based upon a sample and hold, or use the differentiator
    module.
  </li>
  <li>
    All modules can receive OSC messages when the module title is set to start
    with an '@' character. They then can be addressed with a
    <b>/&lt;synthname&gt;/&lt;modulename_without_@&gt;/&lt;control_name&gt;</b>
    pattern. The first value in the message must be of type 'f' (float) with a
    value from zero to one, with zero mapping to the lowest possible knob value
    and one mapping to it's highest possible value. Please note that OSC messages
    are case sensitive.
  </li>
</ul>

</td>

<td>

<a id='faqjack' class='anchorspace'></a>
<ul class='faq'>
  <li class='faq'>
    How to get <?php wren();?> to play with <a href=
    'http://jackaudio.org/' target='_blank'>JACK</a>
  </li>
</ul>

</td><td>

What I did:
<ul>
  <li>
    Installed JACK, I've used the mixed 64/32 bit version.
  </li>
  <li>
    Followed the 'Installation and Configuration' section from <a href=
    'http://jackaudio.org/faq/jack_on_windows.html' target='_blank'
    >http://jackaudio.org/faq/jack_on_windows.html</a></li> <li>Set JACK to run at
    the same sample rate as that I run <?php wren();?> on, this seems to be needed
    or <?php wren();?> will not open the JackRouter connections (so sample rate
    conversions seem not to be possible).
  </li>
  <li>
    Started <?php wren();?>, and then from <b>Setup/Audio Devices</b> (in
    <?php wren();?>) selected the ASIO API, and then for both the Input and Output
    devices I selected JackRouter.
  </li>
  <li>
    Then for the 'In channels' I selected all four that were present and for the
    'Out channels' likewise. The number of channels is configurable for JACK, four
    being the default. <?php wren();?> only supports 8 channels, but these should
    be selectable arbitrarily from the JACK set.
  </li>
</ul>
With this I was able to get audio out of <?php wren();?> into JACK and out of JACK
into <?php wren();?> .. and it looks like I get an exact copy of what I send in
channels 1 and 2 back in the inputs 1 and 2.
<br><br>
NOTE: <?php wren();?> has no native JACK support &hellip; of course &hellip; I'll
look into that, but it will be a long term project &dash; the C header files will
need to be ported to Delphi.
<br><br>
NOTE: To see some error reporting in <?php wren();?> you can try the
<?php debug();?>, it may show a reason for not being able to connect to JACK.
<br><br>
NOTE: This will allow for audio integration with your DAW, assuming that the DAW
uses ASIO.

</td>

<td>

<ul class='faq'><li class='faq'>Using module colors</li></ul>

</td><td>

In the <?php settings();?> you can set a default color and an opacity value. The
opacity value determines the saturation of the module colors. In the patch editor
you can select the modules to be colored, then <?php dokey( 'right click');?> on
any of the selected modules and select the color option from the popup menu.
<br>
It is also possible to use the module standard colors, both for new modules added
and from the module popup menu.
<br>
Module colors will be saved with the patch.

</td>

<td>

<ul class='faq'><li class='faq'>Using wire colors / invisible wires</li></ul>

</td><td>

Wire colors can be changed by <?php dokey( 'right click');?>ing on a connector and
then selecting one of the color options from the popup menu.
<br>
Wire colors will be saved with the patch.
<br><br>
There is a special color being used to make wires invisible, select 'invisible
wire' for that from the connector popup menu. Invisible wires that are not
connected to an output connector will still show and double clicking on a
connector with invisble wires will show the wire as well. Also there is an option
in the action menu to make invisible wires visible.

</td>

<td>

<ul class='faq'>
  <li class='faq'>What are the modifiers which can be used on values.</li>
</ul>

</td><td>

<b>NOTE:</b> this does not work properly.
<br><br>
<table><tbody>
  <tr><td>
    (blank)
  </td><td>
    nothing
  </td></tr>
  <tr><td>
    <b>mHz</b> (<em>milli</em> Hertz)
  </td><td>
    aValue = FrequencyToUnits( aValue / 1000)
  </td></tr>
  <tr><td>
    <b>Hz</b>
  </td><td>
    aValue = FrequencyToUnits( aValue)
  </td></tr>
  <tr><td>
    <b>kHz</b>
  </td><td>
    aValue = FrequencyToUnits( 1000 * aValue)
  </td></tr>
  <tr><td>
    <b>bpm</b>
  </td><td>
    aValue = FrequencyToUnits( aValue / 60.0)
  </td></tr>
  <tr><td>
    <b>degrees</b> or <b>deg</b>
  </td><td>
    aValue = aValue / 360
  </td></tr>
  <tr><td>
    <b>radians</b> or <b>rad</b>
  </td><td>
    aValue = aValue / ( PI * 2)
  </td></tr>
  <tr><td>
    <b>percent</b> or <b>%</b>
  </td><td>
    aValue = aValue / 100
  </td></tr>
  <tr><td>
    <b>ms</b>
  </td><td>
    aValue = aValue / 1000
  </td></tr>
  <tr><td>
    <b>s</b>
  </td><td>
    nothing
  </td></tr>
  <tr><td>
    <b>nn</b>
  </td><td>
    aValue = NoteNumberToUnits( aValue)
  </td></tr>
  <tr><td>
    <b>qsteps</b> or <b>q</b>
  </td><td>
    aValue = aValue / 1000
  </td></tr>
  <tr><td>
    <b>ct</b> (cents)
  </td><td>
    aValue = aValue / 256
  </td></tr>
  <tr><td>
    other modifiers
  </td><td>
    will fail
  </td></tr>
</tbody></table>
<br>
Also in a context where unit modifiers can be used <b>note names</b> may be used,
e.g. <b>A0</b>, <b>A0#</b> etc. but note that only sharps can be used, there is no
notation for flats. The general notation is <b>N[#][-]n</b> where the bracketed
items indicate options, <b>N</b> is a base name and can be <b>A</b> &hellip;
<b>G</b>, <b>#</b> indicates a sharp and <b>[-]n</b> is a numerical octave shift.
Note name A4 maps to note number 69 which in turn maps to 440 Hz. The mapping to
440 Hz can be changed in the program options. [Note: Note names do not work yet
(except in sequencers &ndash; where the feature can not be turned off yet), a
couple of headache things there still.]

</td>

<td>

<ul class='faq'><li class='faq'>What internal scaling is being used</li></ul>

</td><td>

The <b>mHz</b>, <b>Hz</b> and <b>kHz</b> modifiers use a scaling of 1/128 units
per semitone (unless the default scaling was changed), units can be negative
values for low frequencies. The <b>nn</b> modifier uses a scaling of 1 per
semitone, note numbers can be negative or fractional just like frequencies can be.
By default note number 69 (A4) maps to 0 units and there are 12 notes in an octave
but this can all be changed by the user. A cent is a fixed interval of
2<sup>1/1200</sup>, it does not scale with the note number mapping (or actually it
may, but that needs to be fixed then, please let me know where it hurts).

</td>

<td>

<ul class='faq'><li class='faq'>Graphs mode</li></ul>

</td><td>

As of 2021-04-29 the graphs mode no longer exists, there is a Scope module now
which can be eused instead.

</td>

<td>

<a id='faqmorpher' class='anchorspace'></a>
<ul class='faq'>
  <li class='faq'>
    The patch randomizer / mutator, what does it do?
  </li>
</ul>

</td><td>

The <strong>randomizer</strong> is just that, it randomizes controls. This can be
done for a single conrol (from it's context popup menu), for a single module (from
it's context popup menu) or for a group of modules (from the module context popup
menu, or from the action menu). The amount of random can be set from the
randomizer / mutator window. Low values will leave the patch more as-is than high
values.
<br><br>
The <strong>mutator</strong> implements a primitive genetics tool. The idea is
that the parameters of the patch form a genome. This genome can be altered by the
mutator in a sexual and in some asexual ways.
<br><br>
The graphic images are a visual interpretation of the parameters present in the
patch. Every parameter is represented by an angle, and then a line is drawn under
that angle to the next parameter &dash; which forms the worms. Worms are then
scaled to fit the cage they are in.
<br><br>
Asexual reproduction can be plain random &hellip; which does not really reproduce
anything (as all information is lost), or a mutation (which does keep some
information and looses some as well). Mutations can be controlled with a
probability and a range. The probability sets the chance that a a change occurs,
and the range determines how much of a change can occur.
<br><br>
Sexual reproduction picks parts of one genome and parts of another and makes a mix
of that. The crossover probability determines how often a parameter pick switch is
made from the first to the second 'parent'. Also in sexual reproduction there is
some mutation involved.
<br><br>
In the randomizer window the parents are in the breeder bit, the leftmost one
being one parent and the rightmost one the other.
<br><br>
The mutate button just mutates the existing worms between the left and the right
parent. The randomize button sets random genomes for the same six and the mate
button performs the sexual thing with both parents leading to a a sixling &hellip;
erm  &hellip; if that is a word.
<br><br>
And then you can drag around stuff, like drag a worm onto the patch worm to make
the patch have the dropped params. Or drop something on the left morph and
something else on the right one, and then you can do a live morph between those.
<br><br>
The scratch area is just that &dash; drag stuff there for later use in one of the
active squares.
<br><br>
Clicking on a worm will copy it to the patch, this happens for the morph and
scratch things in the same way &hellip; but you can also drag worms to the patch
square.
<br><br>
Then when you have a left and a right morph the live morph control can fade
between the two. This can also be automated by using a LiveMorph module in the
patch, with a checkbox to enable or disable the function, this function is
disabled at program startup &dash; to avoid possibly confusing things to happen
in a patch.
<br><br>
&hellip; when done recursively &hellip; that is, pick a nice genome for one parent
and  another nice one for the other &hellip; and breed and repeat &hellip; you can
do  some manual  eugenics on patches. And the scratch area can hold a smallish
population. Oh and you can kill too of course &dash; that's what the eraser is
for &dash; drag drop the eraser on a worm and it ceases to exist (which can be
done on the scratch area only). Nice in this case meaning that you like the sound.
<br><br>
For both the <strong>randomizer</strong> and the <strong>mutator</strong>
exclusions can be set. Some exclusions are set by the system for parameters that
would make no sense to be randomized, or which would need patch recompilation when
changed. Others can be user enabled or disabled, all from the context menu popup.
<br><br>
Excluded controls and modules will get a red border in the exclusion visibility
mode (this can be turned on or off from the action menu). When the randomizer /
mutator window is visible (view menu) this mode will be on as well.
<br><br>
There are a couple of keyboard commands too &dash; those are listed in the Action
and View menus.
<br><br>
The <a href='http://electro-music.com/forum/topic-67283-0.html'
target='_blank'><?php wren();?> forum thread</a> may have some info not listed
here.

</td> <?HTML>

faq.1648575996.txt · Last modified: 2022/03/29 17:46 by jan