cocoaModem

What’s New in cocoaModem 2.0 v0.50 thru v0.69

Kok Chen, W7AY [w7ay (at) arrl.net]
Last updated: July 18, 2009


Click here for the previous (v0.44-v0.49) What’s New.




What has changed in v0.69 ?
(May 9, 2009)

Fixed a bug in the AudioInterface framework that caused the Tascam US-122L not to be seen.



What has changed in v0.68 ?
(April 3, 2009)

NOTE: if you use µH Router, please download and install the latest version (v1.4) of µH Router before using cocoaModem 2.0 v0.68. PTT and FSK may not key properly with v1.3 or earlier versions of the Router.

  • When the 4 kHz waterfall is selected in PSK modes, you can now transmit tones with up to 4800 Hz offset. Before using this, please make sure that your transmitter actually supports a transmit passband of over 4 kHz (most transceivers limit the transmit passband) and that the transmit IMD above 3 kHz is low enough for PSK operation.

  • When RTTY tone pair is changed, it was not copied to tones used by the transmit tone pair. Thanks to Rich KE1B for validating the fix.

  • When the wideband RTTY tonepair is split, cocoaModem was returning the transmit tone pair when the received tone pair is requested through AppleScript.

  • The Aux Panel of the dual and wideband RTTY interfaces now has an option to print received control characters such as LTRS, FIGS, carriage return and linefeed characters

    printControl

    LTRS characters are printed as ltrs in between angle brackets, FIGS as figs in between angle brackets, carriage returns as cr in between angle brackets and linefeeds as lf in between angle brackets.


  • Two new macro characters \l (lower case L)and \f have been added. These allow you to insert "extraneous" LTRS and FIGS into the transmit stream.

    An example of its use is in the creation of exchanges that can be properly printed whether the recipient has set USOS or not.

    An exchange of the form "599 OR" that is sent using USOS is always printed incorrectly by a non-USOS recipient as "599 94". Likewise, an exchange "599 94" sent without using USOS would be received as "599 OR" by a USOS recipient.

    By adding an extra character to the exchange, you can send "599 \lOR"
  • (lower case L before "OR") and both USOS recipents and non-USOS recipients will print the exchange correctly as "599 OR"
  • The Connection Preferences for the µH Router has been changed to integrate better with v1.4 of µH Router.

    connection

    The router has been improved so that it is easy for a user to create the "Setup String" (keyer configuration). When the router is configured properly, cocoaModem no longer needs to send a Setup String,as it had been doing before.

    cocoaModem will always switch the microHAM keyer mode into digital mode when you use FSK. But it is no neccessary to do so if the PTT menus in the µH Router keyer configuration are configured so that PTT2 is always available for cocoaModem in the default keyer mode. If PTT2 is always available to cocoaModem, you can select the Use Digital Keyer Mode only for FSK checkbox in the above panel.



What has changed in v0.67 ?
(February 17, 2009)

NOTE: if you use µH Router, please download and install the latest version (v1.3) of µH Router before using cocoaModem 2.0 v0.67.

  • Fixed an FSK bug when using the microKeyer through µH Router (thanks to Rick K6LE and Mike K9JRI for confirming the fix) .

  • The AppleScript for setting RTTY tone pair for the transmit module was left out (thanks to Tom DL2RUM for spotting the omission). The script should work now.

  • Changing USB/LSB in the Wideband RTTY configuration now resets both the receive and transmit tone pair to the base tone pair.


What has changed in v0.66 ?
(February 7, 2009)

  • The script that is sent to the µH Router when cocoaModem exits has been changed from an unconditional quit to a µH Router quitIfNotInUse. This allows applications such as MacLoggerDX for Cocoa to remain connected to a microHAM keyer through the µH Router after cocoaModem exits. In addition, this script can be overridden by a user supplied Quit script in the connections tab of the cocoaModem Preferences:

    mhpref

    If the Quit script field is not empty (you can use the browse button to find the script file), the AppleScript file is run instead of the default cocoaModem quit script. This allows the user to reconfigure the keyer from digital back to voice mode, for example.

  • Added a hard limit at a transmit-to-receive boundary of the PSK transmit view to prevent backspacing past that point. You can still erase the entire transmit view by doing a select all (command A) and hitting the delete key or selecting the Delete item in the Edit menu).

  • The PSK demodulator is now throttled to allow slower machines to respond more gracefully to instantaneous surges of processor usage.


What has changed in v0.65 ?
(January 24, 2009)

The spectrum averaging function was inadvertently left out in the config panel of every interface (the bug was introduced when the spectrum window was created for the Lite RTTY interface). Spectrum averaging should be working again now. Thanks to John KM7O for spotting and reporting the problem.

Under certain conditions, a backspace or text replacement in the RTTY transmit text view will cause the next transmission to fall back into receive state immediately. It should now work properly. Thanks to Dino KL0S for working with me to find and fix the problem.


What has changed in v0.64 ?
(January 20, 2009)

neta
The Preference panel for NetAudio now has a checkbox to indicate whether NetAudio is enabled in cocoaModem. Unless you are using NetAudio (for sending and receiving audio over a network rather than using a sound card), keeping it off will reduce launch duration. Keeping NetAudio off could also be useful for avoiding conflicts with network bridging from software such as Fusion (thanks to Dave N7DRK for reporting the conflict).

hide
There is also a new checkbox in the General Preferences for launching cocoaModem with the main Lite window hidden. Although a new AppleScript allows the main window to be hidden or displayed, this checkbox allows the window to be hidden even before an AppleScript client has the chance to hide the window.

psk125
PSK125 has been added to the PSK interface.

spec
The Lite RTTY window now includes a button to displaying a spectrum of the input sound card. The spectrum display can also be enabled from an AppleScript. The control window of the RTTY Lite Interface, together with the new spectrum window, have been made into floating windows, and they can be repositioned through AppleScripts. This allows them to be placed inside and on top of a window that belongs to an AppleScript client.

Fonts for the second transceivers' views were lost when cocoaModem is switched back from the Lite interface to the regular interface. This should now be fixed.

ascpt
New AppleScripts have been created. The major addition allows spectrum data to be read by an AppleScript client (in the manner that the input text streams were read). This allows the client to draw its own waterfall or panadaptor display, thus allowing the client to adapt the size/resolution/panning to suit its intended usage. Moving the waterfall to the client's own window will sidestep the problem of needing to activate the windows of different applications when performing different functions (i.e., the "window focus" problem).

A new script (replay) allows an AppleScript client to pick a time in the click buffer to replay a signal from.

Another new AppleScript allows the client to periodically reset the transmit watchdog timer in cocoaModem. The Config panel of a modem can now be opened from an AppleScript.

Other new AppleScripts allow the client to hide and reposition the main cocoaModem window (including the window for the Lite interface), and hide and reposition the RTTY Lite's controls and spectrum windows.

The scriptVersion AppleScript for the suite that supports the new scripts should now return 2.

Many thanks to David W4SMT for help with the new AppleScripts.


What has changed in v0.63 ?
(December 17, 2008)

The output sound cards with the Burr-Brown PCM2902 codec is defaulted now to 32000 samples/sec (16000 is only available as input sampling rate). Be sure to read the v0.62 changes below if you are using a sound card that has the Burr-Brown chip set in it.


What has changed in v0.62 ?

cocoaModem now sets the default sampling rate for sound cards with the Burr-Brown PCM2902 codec to 16000 samples/sec.

The Burr-Brown PCM2902 codecs are used in sound cards such as the microHAM digiKeyer, the Edirol UA-1X and the SignaLink USB. It uses phase locked loops to generate sampling rate clocks for the input and output codecs and they appear to have problems with certain sampling rates, specifically 11025 and 44100 s/s.

This apparently exposes a bug in Mac OS X Core Audio on the Intel Macs (at least up to Leopard 10.5.5). Sporadically, the frequency of occurrence could be minutes or days, Core Audio will get into a state where it starts sending bad audio streams to cocoaModem. The following figure shows the waveform of what should be a constant 800 Hz sine wave at 11025 s/s that cocoaModem receives from Core Audio after an error event. Successive frames contain different but periodic errors, and the errors continue until Core Audio is asked to stop and restart sampling.

coreaudiobug

The result is that PSK31 signals are mostly garbled (notice the phase glitch at the right of the above plot) after an error event until Core Audio is reset. The error also shows up as a widened signal on the waterfall (the spectrum of a CW carrier develops 21.7 Hz sidebands -- which makes a PSK31 signal appear smeared in the waterfall). The noise is less pronounced when copying RTTY signals, but RTTY signals, especially ones with lower signal to noise ratio, can still produce errors.

Although I have only locally seen this Core Audio problem with a digiKeyer on a MacBook Pro, but not on a G4 (Tiger) or G5 (Leopard) computer, it is probably wise to use 16000 (or 32000 or 48000) samples per second if you have a sound card that uses the Burr-Brown PCM2902 codec even if you are running a PowerPC Mac, and avoid using 11025 and 44100 s/s.

There is no need to apply this precaution if you are using other sound cards. None of the Mac built-in sound input appears to have this problem. Nor has the problem been seen on my microKeyer II, M-Audio Transit, various generations of iMics, nor on a FireWire Edirol FA-66.

Although cocoaModem now defaults to using 16000 when it identifies a Burr-Brown codec (so new users who are unaware of this problem will not be caught by it), you can still set the sampling rate manually to other rates. If you are upgrading to v0.62 from an existing version of cocoaModem, you may have to manually change the sampling rate to 16000 s/s once, and your plist will remember it when you quit cocoaModem.

(Edit: set the output sound cards to 32000 s/s, since 16000 s/s is not available as an output sample rate with the PCM2902.)



What has changed in v0.61 ?

With v0.57, cocoaModem had started using a new version of Sdef Editor (one of the best sdef creators around) to create AppleScript definitions. The default of the new version was to create Leopard sdef files which Tiger would not read. As a result, apps on Tiger could not send AppleScripts to cocoaModem.

For v0.61, I have defaulted the sdef to using the Tiger format, which still works for now on Leopard.

If the old format ever stops working on Leopard, I will make a last checkpoint for Tiger and any new development from then on will only run on Mac OS X 10.5.x Leopard.


What has changed in v0.60 ?

Fixed bug where User Defined PTT requires re-initialization each time cocoaModem is launched.



What has changed in v0.59 ?

When the PSK configuration is configured for LSB VFO offsets, the PSK Table View slots are off by one row (and nothing shows up if an adjacent row is not also active).

(November 15 2008: Hid a test button that was inadvertently left in the PSK Table View window.)


What has changed in v0.58 ?

When signals are too close together, the PSK Table View would mark one signal for removal, as it does to a signal that has stopped transmitting. This can cause a signal to be marked for removal twice. There is an assert() statement in v0.57 which raised a SIGABRT signal to the OS when it is asked to remove a signal that is not there anymore (as with the case of a double removal). v0.58 first checks the removal list before marking a signal for removal, in case it is already there. This should prevent the SIGABRT induced crashes that are caused by double removals.


What has changed in v0.57 ?

1) BPSK and QPSK demodulators in the PSK Interface have been improved slightly.

2) PSK AFC control is now defaulted to on.

3) Ignore carriage return/linefeed pairs in the PSK interface. I have recently observed that some PSK programs, when sending from a brag tape, are sending a carriage return/linefeed pair, instead of a single newline character, causing extra blank lines in cocoaModem. cocoaModem's PSK interface now looks for carriage return/linefeed pairs and ignore the redundant newline character from the pair.

4) Audio buffering in all interfaces (especially HF-FAX) is now more robust. See here for details.

5) The pdf save files from HF-FAX now generates a smaller image.

6) Added a Table View interface to the PSK Interface.

twin

The table view displays up to 21 simultaneously decoded BPSK31 signals. See Table View of the PSK section of the cocoaModem User's Manual for more details.



What has changed in v0.56 ?

1) Added "selectedTransceiver" property to AppleScripts.

2) Disabled deprecated contest templates from the contest menu.

3) Allow editing of RTTY transmit textview when cocoaModem is not in transmit mode.

4) Fixed a bug with RTTY transmit-receive switching in the cocoaModem "Lite" window.



What has changed in v0.55 ?

Rewritten the sampling rate conversion code to make calls to the Core Audio AudioConverter thread safe. This could have previously caused a rare and sporadic crash or freeze if the rate converter is actively running just at the time you change sampling rates, or switch between modem interfaces, or switch between transmit and receive states.

Thanks to Rob, G3RCE for alerting me and describing the freeze which he saw.


What has changed in v0.54 ?

Fixed a deferred RTTY plist updating bug that caused a crash during launch with old plists, or when there is no prior plist file.

Thanks to Adam, KJ4DEO for sending in a Crash Reporter output that identified the problem.


What has changed in v0.53 ?

- Selectable Sampling Rates

You can now choose the sampling rate of a sound card from among rates of 11025, 16000, 32000, 44100, 48000 or 96000 samples per second.

inrate

outrate

This will allow you to use cocoaModem with sound cards that do not support the original two rates (11025 and 44100 samples/second). Please note that not all sound cards will support all six of the new rates, but pretty much all sound cards will support one or more of the new rates. cocoaModem will display only the rates which the selected sound card supports. You will quite often not see the 11025 and 96000 samples/sec rates.

Moreover, not all sound cards will allow independent input and output sampling rates. When the input and output rates are locked, cocoaModem will automatically change the sampling rate menu of the input when the user changes the sampling rate menu of the output, and vice versa.

Although it is rare that you will ever need to, you can set the sampling rate of the identical sound card to different sampling rates for each modem interface.

For minimum processor usages, select the 11025 samples/second rate if your sound card supports it.


- Deferred Plist updates

In the past, all of the modem interfaces are updated from the plist (preferences) file when cocoaModem was launched. These updates are now postponed until the time you actually select a modem to use. The first time you select a particular interface after launching cocoaModem, you will notice a short pause (together with a small alert window) while that interface is updated from the plist. There is no delay when you switch to a modem interface that has previously been selected after cocoaModem was launched.

Launching should now be significantly faster, especially if you are running a slow computer.

The side effect is that cocoaModem also terminates faster if you had not used some of the interfaces. When it exits, cocoaModem no longer updates the plist items that have not been touched.


- CW Interface bug fixed

There was no sound on the right channel when it was selected for CW aural sidetone. That should now be fixed.


- Custom Morse character now prints to the screen

As documented in the User's Manual, user-defined Morse characters are customized by declaring mappings between ASCII character representations and Morse sequences in the Morse.txt file that you store in the user's Applications Support folder -- for example, cocoaModem can send didahdidah when the ä (ASCII 228) character is typed on the keyboard.

The same table (for character codes that are between ASCII 1 and 255) is now also used in the receive direction. When cocoaModem receives a Morse sequence that is defined in Morse.txt, the corresponding ASCII character will be sent to the screen.

Many thanks to Are, LB3SA, for testing the implementation with Norwegian Morse characters.


What has changed in v0.52 ?

- AppleScript

AppleScript query of window position not working in Leopard. It should now work.
Created AppleScript to set window background color of the Lite window.

- Color

Color Picker (e.g., gray) values are now converted to RGB colors.


What has changed in v0.51 ?

The microHAM keyer setup string in the Connections preference is now preset to work with the newer firmware releases from microHAM. The latest firmware has moved the PTT enable bits around and no longer works with the old setup string. The new setup string should remain compatible with the older firmware.


What has changed in v0.50 ?

- Audio Devices

You can now select which channel of the output device to use.

Multi-channel (greater than 2) devices are now supported. As before, the channels of two channel devices are indicated by "L" (left) and "R" (right). Multi-channel devices are labeled as "1," "2," "3," etc.

As before, multi-stream devices appear as separate "devices" in the device menu. There is no longer a limit of 4 for multi-stream sound cards.

The AudioInterface Framework has been updated to handle multiple streams and channels. Please note that older versions of cocoaModem are no longer compatible with the new AudioInterface framework and you will have to re-install the old frameworks to use the pre-v0.50 version of cocoaModem.


- FSK interface

FSK Menu

FSK is now supported by the basic RTTY, dual RTTY and wideband RTTY interfaces when you are connected to a microKeyer, digiKeyer or microKeyer II.

As shown in the above figure, the menu to choose between AFSK and FSK is right under the "Dial Readout" configuration in the receiver sections of the Config panel for the Wideband RTTY interface and it is under the "LSB/USB" popup menu in the config panels of the basic RTTY and dual RTTY interfaces.

In the case of the Wideband RTTY interface, each receiver can independently use either FSK or AFSK; you can if you like, use FSK when transmitting through one "receiver" and use AFSK when transmitting through the second "receiver." Unavailable devices are grayed out (as shown in the above figure for the digiKeyer). A microKeyer II will show up in the menu as a plain microKeyer. Remember to also select the appropriate PTT.

Be sure to set the cocoaModem tone pair to the same tone pair that your transceiver uses and to set up the correct VFO offset and sideband (LSB or USB -- most transceivers uses LSB for RTTY)-- this way you know that you are zero beat to an RTTY signal if his Mark frequency appears at zero in the wideband RTTY's waterfall. Transceivers usually offer you more than one tone pair you can choose. Be sure to tell cocoaModem what mark and space frequencies are selected by the transceiver. Failure to do this will cause you to transmit away from where you think you might be transmitting.

cocoaModem's AFSK interfaces have been set up so that receive and transmit tone pair settings match. If you prefer to use FSK, you will need to make sure tone pairs and VFO offsets that cocoaModem uses match their counterparts in your transceiver.

Please note that you lose the frequency agility function of the Wideband RTTY interface when you use FSK, and the interface will behave as if the transmit tones are locked -- in fact, the Tx Lock button is grayed out if you choose to use FSK instead of AFSK. You also lose the keyclick filter that is present when using cocoaModem's AFSK setting. You can still use the waterfall of the Wideband RTTY to quickly move to a different receive offset, but your transmit frequency will not move and the transmit frequency will be determined solely by the transceiver's VFO and the tone pair frequencies.

Important note: some transceivers require that you invert the FSK polarity. This is true with most Yaesu transceivers -- for example, the RTTY Tone switch in the top access panel of the FT-990 needs to be switched to the Reverse position; the RTTY Polarity menu (Menu 6-1) of the FT-1000MP needs to be changed to the Reversed setting, etc. Failure to set this up correctly will cause you to put out an "inverted" or "reversed" RTTY signals that others will copy as gibberish.

You can also change the polarity by setting the Transmit Polarity in cocoaModem to Reverse. The transmit polarity button of the Wideband and Dual RTTY interfaces are in the Aux panels, while the transmit polarity button of the basic RTTY interface is in the main interface. However, it is always better to reverse the RTTY transmit polarity at the transceivers, since it will not depend on plist changes, etc. Leave the transmit polarity buttons in cocoaModem for use in the rare and temporary occasions when the other station is receiving in reversed.


- PTT interface

PTT is forced to the unkeyed state when you quit cocoaModem.


Click here for the previous (v0.44-v0.49) What’s New.