<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.ice-online.com/index.php?action=history&amp;feed=atom&amp;title=SINKPIC</id>
	<title>SINKPIC - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ice-online.com/index.php?action=history&amp;feed=atom&amp;title=SINKPIC"/>
	<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=SINKPIC&amp;action=history"/>
	<updated>2026-10-23T21:17:39Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=SINKPIC&amp;diff=640&amp;oldid=prev</id>
		<title>ConvertBot: Manage ICEPIC playback from a Midas file/pipe</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=SINKPIC&amp;diff=640&amp;oldid=prev"/>
		<updated>2020-04-27T19:19:33Z</updated>

		<summary type="html">&lt;p&gt;Manage ICEPIC playback from a Midas file/pipe&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 19:19, 27 April 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l136&quot; &gt;Line 136:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 136:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:ICE_Explain]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=SINKPIC&amp;diff=597&amp;oldid=prev</id>
		<title>ConvertBot: Manage ICEPIC playback from a Midas file/pipe</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=SINKPIC&amp;diff=597&amp;oldid=prev"/>
		<updated>2020-04-27T18:59:46Z</updated>

		<summary type="html">&lt;p&gt;Manage ICEPIC playback from a Midas file/pipe&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Manage ICEPIC playback from a Midas file/pipe&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;input file&amp;gt;    Name of the input file/pipe&lt;br /&gt;
&amp;lt;output file&amp;gt;   Name of the RAMDISK or RAM template file&lt;br /&gt;
&amp;lt;device&amp;gt;        Name of PIC device port alias in the HWCONFIG file&lt;br /&gt;
&amp;lt;decimation&amp;gt;    Amount of upsampling applied to the output &lt;br /&gt;
&amp;lt;frequency&amp;gt;     Frequency parameter for certain output ports&lt;br /&gt;
&amp;lt;gain&amp;gt;          Gain parameter for certain output ports&lt;br /&gt;
&lt;br /&gt;
This routine writes data to a RAMDISK file or an in-memory buffer that is&lt;br /&gt;
playing out data through an ICE-PIC card.  The &amp;lt;device&amp;gt; is required to&lt;br /&gt;
specify the card and which port on the card to perform the playback.&lt;br /&gt;
See explain PICDRIVER for more details on HW alias specifications.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;output file&amp;gt; is assumed to already exist. The size of file is used as the &lt;br /&gt;
circular buffer length and the format must be either SP, SB,SI,SL,CB, or CI. &lt;br /&gt;
&lt;br /&gt;
The sync flag is used to mark the host system time at the top of each &lt;br /&gt;
cycle through the file (for continuous/circular playback only). &lt;br /&gt;
The /SYNC=label switch can be used to specify a results label to be set at&lt;br /&gt;
the top of each RAM buffer.  The result receives the number of seconds since&lt;br /&gt;
midnight at which sync occurred. &lt;br /&gt;
&lt;br /&gt;
The /LOST=label switch can be used keep track of the number of buffers that &lt;br /&gt;
SINKPIC has gone ahead and duplicated if data was not available in the input &lt;br /&gt;
file/pipe when needed.  If the input pointer is overtaken by the output &lt;br /&gt;
pointer, SINKPIC will repeat the last buffer and increment the /LOST=label.&lt;br /&gt;
&lt;br /&gt;
The /REPLAY controls the startup mode of the routine as follows:&lt;br /&gt;
&lt;br /&gt;
 /REPLAY=-N  File	- plays buffer N times and quits (default file2file)&lt;br /&gt;
 /REPLAY=0   Stopped	- waits at top of buffer&lt;br /&gt;
 /REPLAY=1   Oneshot	- plays buffer once and waits at the top again&lt;br /&gt;
 /REPLAY=2   Continuous - plays buffer continuously (default piped)&lt;br /&gt;
 /REPLAY=3   StopTop	- stop PIC at next top of buffer&lt;br /&gt;
 /REPLAY=4   StopNow	- stop PIC now (does not restart where it left off !!)&lt;br /&gt;
 /REPLAY=5   Spin       - play buffer but do NOT read new data from input file&lt;br /&gt;
 /REPLAY=6   Reload 	- reload RAM buffer from input file (used with Spin)&lt;br /&gt;
 /REPLAY=7   ReStart    - restart continuous playback (resync timecode)&lt;br /&gt;
 /REPLAY=8   Abort	- abort processing and close output pipe/file&lt;br /&gt;
&lt;br /&gt;
In NeXtMidas the /REPLAY= switch can be specified by the item number or name.&lt;br /&gt;
&lt;br /&gt;
File mode is the default in file-2-file mode.  In a piped macro, Continuous &lt;br /&gt;
is the default. Oneshot mode is used if REPLAY appears as a state switch &lt;br /&gt;
(no &amp;quot;=&amp;quot; after the switch). All modes can be interrupted by sending controls &lt;br /&gt;
while they are in progress (i.e. through the XPIPE window). The options are &lt;br /&gt;
accessed through the REPLAY MODE control item under SINKPIC primitive menu.&lt;br /&gt;
&lt;br /&gt;
The /REPLAY=0 switch will start the routine stopped at the top of the buffer &lt;br /&gt;
waiting for a control to replay the buffer.  This will be a menu item in XPIPE.&lt;br /&gt;
&lt;br /&gt;
Master/slave relationships between multiple invocations of SINKPIC in the&lt;br /&gt;
same macro are handled with the /MASTER=wid and /SLAVE switches.  The /MASTER&lt;br /&gt;
switch points to the SYNC MODE widget of another SINKPIC.  Whenever the&lt;br /&gt;
master SINKPIC starts or stops its acquisition, it will signal the slave&lt;br /&gt;
to start or stop accordingly. The REPLAY widget of the slave should NOT be&lt;br /&gt;
set by the user.   It is synchronized and changed by the SINKPIC master.&lt;br /&gt;
 &lt;br /&gt;
The master/slave relationships may be cascaded to allow multiple slaves.&lt;br /&gt;
For example, the following shows one master and 2 slaves.&lt;br /&gt;
 &lt;br /&gt;
  SINKPIC/WB=1/MASTER=2002        _CB1 RAMFILE1 MOD1A&lt;br /&gt;
  SINKPIC/WB=2/MASTER=3002/SLAVE  _CB2 RAMFILE2 MOD1B&lt;br /&gt;
  SINKPIC/WB=3/SLAVE              _CB3 RAMFILE3 MOD2A&lt;br /&gt;
&lt;br /&gt;
In NeXtMidas, the /MASTER=value must be the slaved Command ID, not&lt;br /&gt;
the slaved WidgetID as in XMidas.  For example:&lt;br /&gt;
&lt;br /&gt;
  SINKPIC/ID=SPM/MASTER=SPS    _cb1 ramfile1 MOD1A&lt;br /&gt;
  SINKPIC/ID=SPS/SLAVE         _cb2 ramfile2 MOD1B&lt;br /&gt;
 &lt;br /&gt;
A &amp;quot;flags&amp;quot; switch along with a string in the hwconfig file are used to modify&lt;br /&gt;
the default behavior of the device for special purposes.  See the PICDRIVER&lt;br /&gt;
explain file for details.&lt;br /&gt;
&lt;br /&gt;
The Reload and Spin REPLAY options are useful for generating test output data&lt;br /&gt;
that is too fast to read off disk but OK to repeat at the end of the RAM&lt;br /&gt;
buffer.  This routine may be fed by a SOURCEFILE primitive to process &lt;br /&gt;
different files or sections of files with one instance of SINKPIC.&lt;br /&gt;
&lt;br /&gt;
NOTE: If an initial Reload command is not given, Spin will output whatever &lt;br /&gt;
is currently in the RAM buffer, or garbage if not using a true RAM disk.&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /FLAGS=flgs  Add specific flags to config string (see PIC HELP FLAGS)&lt;br /&gt;
  /SYNC=label  Result label to be set at top of each buffer (X-Midas)&lt;br /&gt;
  /LOST=label  Result label to be set with number of buffers lost/duplicated (X-Midas)&lt;br /&gt;
  /PFULL=label Result label to be set with percentage full of buffer (X-Midas)&lt;br /&gt;
  /REPLAY=n    Controls the startup mode of the routine&lt;br /&gt;
  /MASTER=wid   Widget id of synch mode of slave sink/sourcepic to control (X-Midas)&lt;br /&gt;
  /MASTER=rid   Registry ID of slave sink/sourcepic to control (NeXtMidas)&lt;br /&gt;
  /SLAVE       Run port in slave mode and use cue from master (uses SGO)&lt;br /&gt;
  /SLAVE=SS    Run port in slave mode from master on same side (uses RGO)&lt;br /&gt;
  /SLAVE=XT    Run port in slave mode from external trigger (uses XGO|TGO)&lt;br /&gt;
  /WAIT=sec    Seconds to wait after M$SYNC before starting&lt;br /&gt;
  /POLL=sec    Seconds to pause polling the card for new data&lt;br /&gt;
  /DELAY=sec   Seconds of data to read in before starting output (def=0.2)&lt;br /&gt;
  /THROTTLE=1  Throttle the output if input is not available by triggering &lt;br /&gt;
		oneshots as each new host buffer becomes available. (ONESHOTS)&lt;br /&gt;
  /THROTTLE=2  Throttle the output if input is not available by switching &lt;br /&gt;
		to a slower clock when data is not available. (CONTINUOUS)&lt;br /&gt;
                This is only supported with MUXCLK=I.&lt;br /&gt;
  /THROTTLE=4  Throttle the output if input is not available by outputting  &lt;br /&gt;
		N*CSIZE chunks of the buffer as they become available. (ONDEMAND)&lt;br /&gt;
  /SKIP=n      Write only every Nth frame of data to the monitor pipe.&lt;br /&gt;
  /WRAP	       Automatically repeat input at end of input file&lt;br /&gt;
  /SRATE=freq  Override samplerate in file for actual playback&lt;br /&gt;
  /TRATE=freq  Override throttled rate (def = max(10kHz,rate/8)) for /THROTTLE=2&lt;br /&gt;
  /STATS=N     Show buffer status at top of every Nth buffer (if X-Midas N=1 only)&lt;br /&gt;
  /ARCHSF=N    DeArchive each from N Separate Files (archname_XXXXX count)&lt;br /&gt;
  /ARCHSFN=fmt Format for Seperate File Name (ex fmt=filename_%04d) or (_%x to specify just after last _)&lt;br /&gt;
  /ASYNC       Use asynchronous read thread (needed for throttling of high-latency input devices)&lt;br /&gt;
&lt;br /&gt;
NeXtMidas Only Switches:&lt;br /&gt;
  /MON=pipe	Name of the monitor output file or pipe (used to be a parameter)&lt;br /&gt;
  /MONITOR=mode Output pipe monitor mode = OFF,ASYNC,INFO,FULL&lt;br /&gt;
  /PICKEYS=table Table of extra keys to set or get after initialization, example syntax:&lt;br /&gt;
                 {key1=val,key2=QUERY,key3} where key2 and key3 are only added to query list&lt;br /&gt;
&lt;br /&gt;
Control Widgets: (X-Midas)&lt;br /&gt;
	1. M:REPLAY MODE&lt;br /&gt;
	2. M:SYNCH MODE&lt;br /&gt;
	3. D:SAMPLE RATE&lt;br /&gt;
	4. L:REDUCTION&lt;br /&gt;
	5. L:NCYCLE&lt;br /&gt;
	6. L:LOST (Host buffer fall behind count)&lt;br /&gt;
	7. L:MISS (Card buffer fall behind count)&lt;br /&gt;
&lt;br /&gt;
Messages: (X-Midas)&lt;br /&gt;
        MGO     INFO=replaymode D:time to take action&lt;br /&gt;
                returns =MGO with actual time of event&lt;br /&gt;
        RATE    D:samplerate&lt;br /&gt;
        DEC     D:decimation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
</feed>