Copyright © 1996-2013 William B. Ackerman

Table of Contents

The program offered something that I've never heard of, or don't understand, or doesn't seem right. What should I do?

Don't call it.

The options for sessions and abridgement files are confusing!

You may find that Sd is more user-friendly than Sdtty, particularly if you are having trouble with sessions or abridgement files. It will show you the startup options more clearly. You can type commands at Sd the same way you type at Sdtty. It just looks different. During the Sd startup screen, you may want to look at the help text for each item before using it. Click on the question mark in the upper right corner, and then click on the item of interest. This may help explain what is going on.

Anything that you set up with Sd can be used with Sdtty.

How can I set up and use the “sessions” feature?

First, it is better to do this in Sd, not Sdtty, even if you use Sdtty for normal writing. See the previous question.

Sessions are used to keep track of the levels, sequence numbers, and similar things for the various workshops, dances, and conventions you might be writing material for. You can create a session for each workshop, and then select the session each time you start the program.

You must have an “initialization file” to use sessions. It is easy to create one. If you don't have one, Sd or Sdtty will print this whenever it starts up:

        You do not have a session control file.  If you want to
        create one, give the command "initialize session file".

Do that. This is a command to Sd/Sdtty itself – do not give this command at a command (DOS) window. Then exit from Sd/Sdtty and start it again. Some sample sessions will now be active.

Once sessions are active and are presented during startup, you can use them by clicking on the desired session in Sd, or typing its number in Sdtty. The level, output file name, starting sequence number, and header title will be set for you.

If you want to create a new session, click or type the item labeled "(create a new session)". You will be asked for the level. Enter that. You will then be asked for the file name. We recommend giving a "+" sign. This will cause all sequences to be written to a file with a name based on the current date. You will then be asked for the header title. This will be printed at the top of every sequence written for that session.

How can I set up an “abridge” list for a session?

First, it is better to do this in Sd, not Sdtty, even if you use Sdtty for normal writing. See the previous two questions.

Abridge lists are used for writing material for a class or workshop, using only the calls that the class knows at any given time.

To set up a session with abridgement, start Sd. In the startup screen, click "write list". The "abridgement file name" will light up. Fill it in with the name of the file you want to use with that session. ("abridge.txt" is not a very creative name.) Remember that file name. Then double-click "no session" and double-click the level that you want.

Start Sd again. Click "use abridged list", and fill in the same file name (again! sorry!) Then double-click "create new session" and double-click the level. A popup will appear, for the output file name. Change it to a single "+" sign, unless you are a masochist. (Or a "*" sign if you prefer, and if you know the difference.) Click "accept". A new popup asks for the session title. Enter it (e.g. "my C2 group") and click "accept". You are now in business.

Edit the file (it's in the "C:\Sd" directory) to delete calls, as you teach the group. Whenever you start Sd or Sdtty, it should offer the new session. It will read the abridgement file and act accordingly.

See the manual, under “abridgement”, for detailed instructions on how to maintain an abridge list.

If you really want to do the initial setup in Sdtty, it could be accomplished with:

     sdtty -write_list my_group_list.txt c2
     sdtty -abridge my_group_list.txt c2
     Type the number associated with "create a new session".
     Type a "+" sign, or whatever file name you want.
     Type the session title.

How can I tell how many sequences I have written in the current session?

First, you must be using the “sessions” feature. When running either Sd or Sdtty, the title bar of the window will show the sequence number at the start of the current run of the program, and the sequence number right now. The title might look like "Sdtty C3 AACE (12:22)" The first number in parentheses gives the number with which the current run started, and the second number shows the current sequence number. In this example, 10 sequences have been written during the current run.

How do I use the “reconcile” command?

The reconcile operation is like resolving, but it puts the generated calls someplace other than at the end of the sequence. This is useful if you have a clever getout at the end of the sequence, and you want it to be the resolve, but people don't have their partners and corners. This lets you retroactively modify the sequence so that the clever getout will work.

Note first that this operation may only be invoked when the setup is suitable waves, two-faced lines, or a circle, so that it can figure out whether you want a, right and left grand, left allemande, promenade, or at-home getout. If the setup is an 8-chain, it can't tell. In that case, either do a touch or a left touch, to tell the program that you really want a right and left grand or allemande left, respectively. Then, after the reconcile operation is complete, you can erase that extra call.

The reconcile operation is very similar in behavior to resolve, except that the program needs to know the insertion point. Rather than searching for the first resolve as soon as you give the command, the reconcile operation lets you set the insertion point before searching. Select raise reconcile point or lower reconcile point to set it. A dotted line will be displayed showing where in the sequence the generated calls will be placed. When this is in the right place, select find another to find the first reconcile. You can change the insertion point at any time.

Reconciles are extremely difficult to find—much harder than resolves. To avoid frustration, make the insertion point be at a place where the setup is very simple and a large number of calls are legal. We recommend making the insertion point be at a place where the setup is in waves. Remember that, if the insertion point is at an hourglass, the program has to find a random sequence of up to three calls that goes from an hourglass to another hourglass while miraculously performing the required permutation.

I wish the pictures didn't go away when the transcript is printed.

At any point in a sequence you can give the keep picture command. The picture at that point will be preserved, both in the working display, and in the final file. The glyphs in the file might not look very nice, especially if a variable-width font is used, but it should be enough to tell whether the dancers are in the right formation.

Entering complex calls is confusing!

If in doubt about how to enter some complex call, type part of the call and a question mark. For example, if you want to know how to modify the star turn on a chain reaction, type chain reac?. Then, following its hint, type tion, turn the star 1/2.

I've heard that Sd lets me type subcalls directly, but it's confusing!

You may have heard that Sd lets you type complex calls directly, using brackets, as in catch [motivate] 3. This is true, but you may find it unwieldy, especially if you have been using SRC Sd and are accustomed to entering things piecemeal. You can still do it that way. Remember to type <anything>, not just <any>. For example, type catch <anything> 3. (Not sure about that? Type catch?) Then type the motivate.

I can't seem to enter simple things like right and left thru.

If you are having really serious problems like this, use Sd instead of Sdtty. Look at the menu and see how it wants things to be spelled.

I want some special option, such as -normal_video. How can put it in an icon or initialization file?

You have (or can create) an initialization file, which is “C:\sd\sd.ini”. If you put options in it, you will get those options every time you run Sd or Sdtty. If you don't have such a file, give the command initialize session file to Sd or Sdtty to create it. Then edit it. Use a plain text editor such as Emacs or Notepad—do not use a word processor. You will see a section called “[Options]”. Add whatever options you like. Do not put hyphens in front of options in this file. For example:

     [Options]            <-- you will probably find that these
     new_style_filename   <-- two lines are already present

All of this works the same under Windows or Linux, except that, under Linux, the location of the “sd.ini” file will be wherever you installed the program.

You can also create Windows icons that run the program with specific options, such that the options will depend on which icon you operate. To do this, make a copy of whichever icon from the Sd group in the Start Menu is closest to what you want. How this works depends on exactly what version of Windows you have, but it generally involves right-clicking the icon, or going to Start->Settings->Taskbar->Start Menu Programs->Advanced. Either way, you should be able to copy and paste it, and right-click it to rename it or edit its properties. Put the copied icon wherever you want—desktop, Start Menu, or wherever. Rename it to whatever you want. Then edit its properties. When editing its properties, you can change the icon that is displayed, and you can add options by selecting the “shortcut” tab. On the “target” line, you will see something like “C:\sd\sdtty.exe” perhaps followed by some options. Change those to whatever you want. Put hyphens in front of all options when editing an icon. For example, “C:\sd\sdtty.exe -single_click c1” or “C:\sd\sdtty.exe -color_by_couple -session 2”. The latter would always select whatever session 2 means in your initialization file, complete with its title, level, and file name.

How can I change the Sd window size?

Users have different preferences about how big they want the Sd window size to be. Furthermore, graphics resolution settings can vary significantly. By default, Sd makes an arbitrary decision about this, which is generally 780 x 560 pixels. If this doesn't suit you or your graphics hardware, you can change it with the “window_size” option. Follow the option with 2 numbers separated by a lower case “x” but no whitespace, as in

        window_size 1000x720

You can put that line into the “[Options]” section of your initialization file, which is C:\sd\sd.ini, so that section might look like

     window_size 1000x720

Doing so will affect every copy of Sd on your computer. If you want to have different icons to start Sd, and you want to control the window size separately for each icon, follow the instructions in the “command-line options” section of the manual.

What are “new style file names”, and how can I switch over to using them?

New style file names are names like “13aug05_c1.txt” if you use sessions with the "+" file name generation mechanism, or “sequence_c1.txt” if you don't. The old style names are like “13aug05.c1” or “sequence.c1”. The part after the period is called the "extension". When using Windows or some other operating systems, it is very helpful for files to have a correct extension, and ".txt" is the right extension for these files. For example, attaching files in email messages is sometimes facilitated by having the ".txt" extension.

Newly created session files use new style names. Older session files may use old style names. If you don't use a session file, you get old style names, though this may change in the future.

If you already have a session file, and you want to change it over to new style names, give the command change to new style filename right after starting the program.

When you change to new style file names, no previously written files will be renamed. Only newly created files will have the new names.

How can I uninstall Sd?

Sd has no complex interactions with other software, and does not need to “register itself” as an installed program. As such, it will not appear on the menu for uninstalling software. If you want to uninstall it, all you need to do is delete the C:\sd folder, and delete whatever startup icons you may have placed.

How can I define “hot keys”?

Edit (with a plain text editor such as Emacs or Notepad—do not use a word processor) the initialization file C:\sd\sd.ini. If you don't have such a file, give the command initialize session file to Sd to create it. Then edit it. You will see a section called “[Accelerators]” with things like

     f3     pick random call

In that line, “f3” means function key 3. (That is the line that makes function key 3 perform the “pick random call” operation. You can change it if you want.)

You can add lines to this section to define “hot keys” that specify calls, concepts, or commands. Since I don't like to type “concentric”, my file contains

     az     concentric
     cz     cross concentric
     caz    single concentric

These define alt-Z as “concentric”, control-Z as “cross concentric”, and control-alt-Z as “single concentric”. Prefix letters of a, s, c, and ca denote alt, shift, control, and control-alt, respectively. After that, a plain letter or digit denotes that key. A combination like f6 denotes that function key. When defining function keys, you may use the s prefix, or no prefix at all, to get shift-function-key or plain-function key. With letters or digits, you must use some combination of alt or control. (You can't define just c as a hot key for concentric—it would make it impossible to type circulate.)

How can I define abreviations for calls?

First, read the previous section. Abbreviations are defined somewhat like hot keys, but they don't take effect the instant you press the key. You have to press <ENTER>, just as for any call or concept. Also, they don't involve meta or control modifiers. They can be multiple letters long, just like call names, but they must be one word.

Now find the “[Abbreviations]” section of sd.ini, with things like

     u       U-turn back
     rlt     right and left thru

This means that you can type rlt as if it were a call. It will be expanded to the full call in the transcript file. (Yes, those abbreviations are actually there.) You can add things like

     p       pass thru

Why can't I put blanks in the output file name?

Sorry, but doing so would make it impossible to process session descriptors in the initialization file.

I use “color_by_couple”, but the blue people are too dark. Can I do anything about that?

As of version 36.63, there are two new startup options, that can be put in your initialization file (sd.ini), startup icons, startup scripts, or on the command line. They are “use_magenta” and “use_cyan”. These lighten the red and blue checker colors, respectively. Remember to put a hypen in front of an option in an icon or on the command line, but not in the initialization file.

How can I abort a sequence in progress?

If you select the abort command, the program will abort the sequence (but not exit). It will go back to the startup menu to allow you to start another sequence. It will ask for confirmation first.

Why can't it do things like men run or ladies trade?

The program only recognizes the designators boys and girls. The only exception is the call ladies chain. Of course, you can use whatever designation you want when calling.

Why does an opening like heads single rotate 1/4 do the "correct" thing (having the heads do their single rotate on the outside while the sides move in) at C1, but not at C2 and above?

The call that you want is heads single rotate 1/4 while the others <anything>, as in heads single rotate 1/4 while the others [swing thru]. At C1 there is no other rotate call available, so it does the right thing automatically. But at C2 and above, the call rotate is legal in its own right as a plain 4-person call. If you start a sequence by telling the heads to do some legal 4-person call, they will go into the middle and do it. You have to alert Sd that you want the special action by saying ... while the others ....

Why, from a setup in which each gender has a straightforward cross over circulate path (heads pass the ocean, extend, split circulate, switch the wave), can't it do boys cross over circulate?

What "boys" (or girls, heads, sides, etc.) means is more complicated than most people realize. The designators take on different meanings in different contexts—boys run, boys trade, boys kickoff, boys hinge, boys u-turn-back, boys press ahead, have to be handled differently. The general rule for a plain boys <some call that doesn't have special properties> is to find the largest setups that are compact and free of holes or distortions, and do the call in each of those setups. From parallel BBGG waves, there are two such setups—two miniwaves of two people each. Sd can do a boys hinge from there, because it can do a hinge in each of those two-person setups. But it can't do boys circulate or boys swing thru.

In the setup of this example, the only compact setups that are free of holes or distortions are the four individual people, so the only calls that can be done that way are one-person calls like 1/4 right or U-turn back.

There is another concept, boys do your part cross over circulate that handles things like this. It has each boy do the call in the entire 8-person setup. If they can each do it without running into each other or the girls, it's legal.

Of course you probably don't need to use such picky language in calling. The dancers will understand what you mean by boys cross over circulate.

The Callerlab definitions allow veer left and veer right with single people. Why doesn't Sd allow this?

This situation is often ambiguous, so you need to say single veer left or single veer right. Whether you need to say this when calling is up to you.

Are you aware that allowing follow your neighbor from a 1/4 tag, and the roll behavior after circle to a line, are at odds with Callerlab Applications Review Committee decisions?


Isn't remake the column a “grand” call even without saying so?

No. The Callerlab definitions say that, unless in a thar or alamo, this is a 4-person call. It is not grand unless you say so. If you believe that just saying remake the column might confuse the dancers, don't do it.

How does stepping to a wave work? Can people actually step to right hands and then do a left spin the top?

Yes they can, if only the centers stepped. What happens when some, but not all, people step to right (or left) hands can be confusing. Here is how it works: Whenever anyone steps to a (mini) wave, they always take right hands unless the caller said “left”, in which case they take left hands. This is true even if the result (because of other people who didn't need to step) is a wave of the other handedness. The call then proceeds in whatever handedness the resultant wave has, except that, if the caller said left, the resultant setup must be a left-handed wave.

Now that the right-hand rule is enforced for remake, how can I do a crazy remake?

You can say crazy any hand remake, or evenly mirror crazy remake, or evenly left crazy remake.

From the setup obtained after 1/2 acey deucey, how can I identify the centermost, middle, and outermost diamonds?

They are center diamond, middle (intermediate) diamond, and outside diamond. The word "intermediate" in parentheses is there to prevent any possible ambiguity on the written sequence. The words you use are up to you. You are responsible for making clear to the dancers which diamond you mean.

Below about C3A, you don't need to type the "(intermediate)". Just type "middle" followed by <enter> or <tab>, and command completion will finish it for you.

Why can't Sd do all 8 calls involving diamonds, from a thar?

For example, diamond circulate or flip the diamond?

Because your dancers are smarter than Sd. You need to give the all 8 (diamonds) concept, to tell the program what you want. You probably don't need to say that to the dancers.

How can I identify the center wave of 6 in a 3x1 diamond?

This is the setup that you would get after, for example, 1/2 acey deucey from waves. There will be a center wave of 6. To designate those people, say center 1x6, or the more specific designators center wave of 6, center line of 6, or center column of 6. The designator center 6 designates different people—all but the two people at the very ends of that wave. So you can say things like center wave of 6 grand swing thru. You probably don't need to call it that way—the dancers will know what you mean if you say center 6 grand swing thru.

The same situation occurs after sets in motion but hold the column. Use the designator center column of 6.

How can I do plenty from diamonds?

The program considers plenty always to have the outsides quarter right. There is a call plenty, ends go as you are that gets the action that you probably want.

How can I call boys start quarter thru from C1 phantoms?

Just like that: boys start quarter thru, or boys start 1/4 thru (either spelling is accepted.) The <ANYONE> start concept has the indicated people do their own part of the first part of the call, after which the others join them. You give a person indicator like boys in place of the <ANYONE>. Or, if you like, you may literally type the <ANYONE>, complete with angle brackets. The program will then ask for the person indicator.

If using Sd with the menu and mouse, you must find the concept listed under <ANYONE> start, not boys start.

What do the designators first 1/2/3, last 1/2/3, leftmost 1/2/3, and rightmost 1/2/3 mean?

They are intended principally for designating 6 people. To designate 2 or 4 people, terms like sides or head girls are sufficient. To designate 6 people, use something like (from columns) first 3 are tandems of 3, peel and trail or (from lines) leftmost 3 are couples of 3, pass the ocean.

How can I do things like heads promenade halfway, come in to the middle for a right and left thru?

Start the sequence with the heads start command, and give the call promenade halfway, come in to the middle and [right and left thru], or whatever call you want. That call must be in square brackets, as shown. The comma is optional. You can also do promenade halfway, while the others [right and left thru], or promenade 3/4, while the others [right and left thru], or 1/4. In all cases the people who do the call in brackets will be in the middle, and the others will be as couples on the outside.

Remembering all this isn't easy. Just type prom followed by a question mark, and Sd will remind you of what to do.

How can I do girls trade from blocks, as in girls press ahead and trade?

Just type it. But there is no call press ahead and trade. You must say girls press ahead followed by girls trade.

How can I do pinwheel?

If you are in a promenade setup, type something like sides lead for a pinwheel. The program will give you a rough guess of how far it thought the dancers promenaded before doing the call. You can also do ends pinwheel or centers pinwheel from applicable formations such as tidal lines.

How can I change the star turns on Chain Reaction?

The short answer to the question is that you type “chain reaction, turn the star 1/2”, or “motivate, don't turn the star”, or something similar.

But the more important question is: “How do you know that?”. There are many common ways of modifying calls, and many ways of expressing those modifications in words. Sd is not known for its deep understanding of colloquial English. How do you know what the required words are?

Type part of the call, immediately followed by a question mark. If you type “motiv?” you will see

        motivate, don't turn the star
        motivate, turn the star 1/4
        motivate, turn the star 1/2
        motivate, turn the star 3/4
        motivate, don't turn the star but <ANYTHING>
        motivate, turn the star 1/4 but <ANYTHING>
        motivate, turn the star 1/2 but <ANYTHING>
        motivate, turn the star 3/4 but <ANYTHING>
     motivate but <ANYTHING>

This should tell you what you need to know. At that point you can type “ate, don't turn the star”. (Remember, you already typed “motiv”.)

Suppose the “<ANYTHING>” piques your curiosity. This is a modification for the final centers' cast off 3/4. Try it. Issue the call “motivate but <anything>”. The upper case is optional. You will be prompted for a subsidiary call. Type “2/3 recycle”. You will then see “motivate but [2/3 recycle]”. You could also have entered the call exactly that way. Whenever the “?” printout shows “<ANYTHING>”, you can type a subcall instead, in square brackets. Not angle brackets.

You can also experiment with things by giving the “allow modifications” command and then trying the call, but this method is somewhat unwieldy. If you type

     allow modifications

You will be asked about modifying the initial circulate, the star turn, and the final cast off 3/4.

By the way, if you don't want to type commas or apostrophes, that's OK. They're optional. Capitalization is also optional. But subsidiary calls must be in square brackets.

How can I do a Load the Boat, centers do just 3-1/2 parts?

Say centers work 7/8 load the boat. Telling people to do only part of a call is generally done in terms of fractions, not number of parts. 3-1/2 of the 4 parts of “Load the Boat” is 7/8ths of it. You want just the centers to obey that, so you use the centers work meta-concept, followed by the concept (7/8) that you want them to obey.

What is the definition of E.R.A.?

Notwithstanding contemporary social and political sensibilities, Sd considers the boys' part of this call to be a press back. We apologize to, and sympathize with, the dancers at a recent C4 weekend who believed that everyone should should press ahead on this call.

Sd also considers the boys' part of M.C.P. to be a press ahead. Sorry.

How can I do things like Centers Work As Couples, all Here Comes the Judge?

The best way is to say centers are as couples here comes the judge. For every couples/tandem-type concept, there is also an <anyone> are <concept> version of it. For example, center 6 are tandem threesome 1/4 solid. So you could say centers are as couples here comes the judge. The “all” word is often spoken but is never typed in to Sd or Sdtty.

There is also a meta-concept <anyone> work <concept> that you can use. It has the designated people do the call with the concept while the others do it normally. However, it is a much more problematical and difficult meta-concept. When the concept is a couples/tandem-type concept, “are” is usually better than “work”.

How can I do things like Centers Work Stable, all Here Comes the Judge?

The answer is essentially the same as for the previous question. When the concept is stable or fractional stable, there is also an <anyone> are <concept> version of it. As with the previous question, “are” is preferable to “work”.

How can I call Split Phantom Lines In Roll Circulate?

In all concepts that can specify either lines or waves, the “waves” version has an implicit assume waves operation in it. Under normal circumstances, this means that the live people can make use of the assumption of waves in order to decide how to start the call.

For example, in normal columns, split phantom waves in roll circulate, which is equivalent to split phantom lines, assume waves, in roll circulate, is legal, since the phantom in-roller's location can be deduced from the wave assumption.

The call split phantom lines in roll circulate is illegal from columns because the facing direction of the phantom in-roller is unknown.

Why can't it do tandem or couples concepts in large formations?

If you have this problem, try giving the phantom concept, as in phantom tandem or whatever. The program needs to know exactly how to pair people into tandems or couples, which may require the use of some concept to specify the matrix or the details of the geometry.

Why does it complain about things like magic split circulate?

Because there's no such call. You should be using split trade circulate. Similarly, you should use split trade couple up instead of magic couple up, and cross walk and dodge instead of magic walk and dodge.

Why doesn't it allow some simple things like boys trade?

The <anyone> trade call is extremely complex, because it has to allow the people trading to be nonadjacent. This means that <anyone> trade is not just an instance of the <anyone> concept applied to the call trade. Sd tries to allow you to type everything all on one line. It sometimes fails in this case. If something like boys trade doesn't work when typed together, try typing the boys designator, pressing <ENTER>, and then typing the trade call.

Using Sd, I clicked on centers and then squeeze, and it didn't work. Why?

The call to click on is <ANYONE> squeeze, followed by centers.

Squeeze is a call that takes a designator, telling those people to do it. The difference between that and the use of the centers concept with the plain call squeeze is rather subtle. Humans may have no trouble knowing what to do, but Sd has a difficult time with it. There are other calls (like trade) that have a similar problem. You must use the <ANYONE> squeeze call.

It is much simpler just to type "centers squeeze". The parser in Sdtty and Sd is designed to resolve ambiguities such as this; the menu mechanism of Sd can't do it. Even if you are using Sd and prefer the mouse-and-menu mechanism, typing what you want is a good way to proceed when problems like this arise.

How can I do same sex disconnected?

Just like that. Type, for example, same sex disconnected swing thru. Each sex does that call in their disconnected setup.

How can I type all 8 recycle and circle 1/4?

How about flip the diamond and circle 1/4? How do I tell the program whether it's a 4 person or an 8 person call?

The program recognizes a call [anything] and circle N/4. It tries the “anything” call first with just the centers, and with all 8 people if that fails, so it should work in either case. You can type the fraction as 1/4, 1/2, 3/4, 2/4, or “full”.

As with all calls of this sort, the “official” name of the call uses angle brackets to indicate something that gets filled in: <ANYTHING> and circle <N/4>. You can literally enter the call that way. (If using Sd and the menu, that's the way you have to enter it. Calls starting with things in angle brackets are alphabetized at the end of the call menu, but before the concepts.) If you enter the call that way, the program will ask you about the things that need to be filled in.

        <anything> and circle <n/4>
        how many?
        subsidiary call
        switch the line

But a much easier way is to type everything directly. Remember that, while angle brackets are used in the “official” name of the call, you use square brackets when you type subcalls. And you just type numbers and similar things directly.

        [switch the line] and circle 1/2

How do you know that that call is available? Sd has many calls with tricky syntax like that. It will usually accept what you want to type. But there are many tricky areas. If you are confused, the right thing is to type part of the call, followed by a question mark.

How can I do a shadow box couple up?

Sometimes the following confusing thing happens. You want to do a shadow box couple up, so you type:

        shadow box [couple up]

and all you get is

        shadow box [couple up]  (129 matches, type ! or ? for list)

so you do so, and get

     shadow box [couple up] and a quarter more
     shadow box [couple up] and cross
     shadow box [couple up] and roll
     shadow box [couple up] and sweep <N/4>
     shadow box [couple up] and the <ANYONE> roll
     shadow box [couple up] and <N/4> more
     shadow box [couple up] by golly
     shadow box [couple up] er's cover up but <ANYTHING>
     shadow box [couple up] like a couple up
     shadow box [couple up] the k but <ANYTHING>
     shadow box [couple up] the key
     shadow box [couple up] the windmill, outsides <ANYTHING>
     shadow box [couple up] with the flow

and you wonder “Why won't it let me do a normal one?”

The issue is whether shadow box is a concept, or a call with a subcall. If it's a concept, you should just type shadow box couple up. But if it's a call that takes a subcall, you should use brackets. How do you know?

That isn't easy to answer. Where to draw the line isn't well established, so Sd makes decisions that may seem arbitrary. There is no way to avoid this. Most things are obvious, of course, like the as couples concept. And it should be fairly obvious from usage that breaker [2/3 recycle] is a call with a modifier. Why is that obvious? Because breaker N is a call, and it is obvious that breaker [anything] just has the anything replace some pre-existing part of the call.

Of course, anything that takes the modifier other than at the end, must be a call with a modifier, since concepts are always typed first. Hence [anything] and roll always uses brackets.

So, if you are having trouble of this sort, try adding brackets or leaving them out.

How can I get a “boys work cross, concentric recycle”?

The program thinks it's a“boys work cross concentric”. Would typing the comma help?

No, don't type a comma. The program simply doesn't understand them. Instead, separate the cross from the concentric by pressing <ENTER> after the cross. Or, if using Sd, select the two concepts from the menu separately. The program will put in the comma, along with the word ALL.

In general, this is the way to resolve ambiguous combinations.

In a parallelogram, how can I specify the “wings”?

Sd has a rather fussy, but, we hope, serviceable nomenclature for identifying people. (Remember that, when calling to live dancers, you can take advantage of their common sense. They will generally figure out what you mean from the context and from their experience. Computers can't do that.)

The phrase outer pairs is used to specify these people, and center 4 to specify the others. Note that center 4 is not the same as centers. The designators centers and ends are meaningless in setups like this.

The center 4 do not need to be in a 2x2. In common-point diamonds or a common-point hourglass (the result of 6x2 acey deucey from facing diamonds or a facing hourglass) the people who collided can be designated as the outer pairs, and the others as the center 4.

You can also use designators like center line, center box, center diamond, and so on.

Why is the Roll direction wrong after spin chain and exchange the gears?

Sd defines this call in terms of 3/4 exchange the diamonds and interlocked flip the diamond, and sets the roll direction accordingly. We consider the Callerlab definition to be an attempt to give precision to a definition that was never intended to be precise. Accordingly, we consider attempts to deduce roll direction from the Callerlab definition to be misguided.

How does common spot work?

See Sd Application Note 4.

How can I make Sd understand common spot better?

Try saying (to the program, not necessarily to the dancers) initially common spot. This tells Sd to reassemble the different groups of people after the first part of the call. Otherwise, it keeps the groups separate through the whole call, which makes it much harder to figure out what is happening.

Sd doesn't allow something. Does that mean it's bogus?

No, no, 1000 times, no! Sd, like many other computer programs, is an attempt at approximating human knowledge and judgement. It really doesn't come close.

Sd allows something. Does that mean it's legal?

No, no, 1000 times, no! While we attempt to enforce the “rules” of square dancing accurately, there are many things that Sd allows that are not legal or appropriate. You should not use Sd, or any other choreography program, if you do not understand the level that you are calling. If you call beyond your knowledge and ability, the dancers will notice.

Sd allows scoot back from facing lines. Isn't that bogus?

It sure is. That is in the database to catch people who use the program carelessly. If you call it, get embarrassed, and complain to me, I will point you at this FAQ.

Why is Sd so fussy with apostrophes? Why can't I just type lockers choice?

You can. You never need to type apostrophes or hyphens. You can type either lockers choice or locker's choice. You can type either tandem based triangles or tandem-based triangles.

Why is Sd so fussy with spaces in call names? Can I just type inroll circulate?

As of version 36.63, you can type inroll circulate or outroll circulate, because they are in the database as special alternate spellings.

But in general, the parser (the part of the program that interprets your keystrokes as call and concept names) has a very hard job to do when it completes your input. That is, it lets you type fe w at Mainstream, and figures out that you meant ferris wheel. In order to do this, it must take clues from the spaces that you typed. Unlike apostrophes and hyphens, it can't make spaces optional.

You can always define your own “hot keys” (accelerator keys) or abbreviations for any calls.

Why is leftrigger spelled as one word?

When there is no “official” Callerlab spelling to go by, I use the principle that a call should be one word if the English phrase or word from which it was derived is one word. The “rigger” names are derived from “outrigger”, which is a single word. This seems to be compatible with the Callerlab spelling of things like crossfire and cross fold. “Crossfire” is a single word.

I realize that these decisions are not always straightforward or without controversy.

Who rolls on [swing thru] and centers roll?

The new centers. Sd re-evaluates people's positions before deciding who should roll. We believe that this is usually the more natural thing to do, but it is not automatically assumed. Therefore, you may need to make that clear to the dancers by saying something like “swing thru and the new centers roll.” Of course, if you have the girls roll there will be no problem.

When I say patch the centers, is it the original centers that do the U-turn back?

Yes. People's positions are not re-evaluated after the hinge. We believe that this the right way of handling this sort of thing in general. There are exceptions, such as tap the centers, but those are best left as exceptions rooted in history.

How can I do 3x1 triangles circulate?

You try to circulate in 3x1 triangles, by typing 3x1 triangles circulate. It doesn't allow it.

So you try leaving off the circulate and typing a question mark. You get

     3x1 triangles?
     3x1 triangles are solid
     3x1 triangles are solid <N/4> trianglesome
     3x1 triangles are trianglesome
     3x1 triangles are trianglesome <N/4> solid

What happened to plain 3x1 triangles?

The reason is that the call is known to Sd as 3x1 triangle circulate, without the s. That is, it is the 3x1 variant of the call triangle circulate.

Now this fussiness about spelling, some of which you may not agree with at all, can be extremely annoying. When you run into problems like this, try typing a little less, followed by a question mark. Most of the annoying spelling habits of Sd occur at the ends of words. So if you tried just triang, you might get

     3x1 triang?
     3x1 triangles are solid
     3x1 triangles are solid <N/4> trianglesome
     3x1 triangles are trianglesome
     3x1 triangles are trianglesome <N/4> solid
     3x1 triangular boxes
     3x1 triangle
     3x1 triangle circulate

How can I do line to line but replace the last part with <anything>?

Sd recognizes the call line to line but <anything>. The <anything> replaces the final pass in. (Note that this is an exception to the general principle that but calls replace the last thing done in the center. This is one of a handful of exceptions that are justified by longstanding usage.)

Suppose you didn't know that. You do the usual thing—type something like line to l?. It will list

     line to line
     line to line but <ANYTHING>

Of course, when you see the “<ANYTHING>”, you know that you can type square brackets with a call inside.

Is there some way to add one extra circulate to along?

Sd allows you to replace that circulate with anything, but does not single out “add an extra circulate” for special treatment. To make modifications of this type, give the allow modifications command. This tells the program that you want to do something complex to the next call (and only that call.) After giving that command, type along, or swing along, or [split recycle] along, or whatever. The program will then ask you about substitutions. It will ask

     The ``column circulate'' can be replaced.
     Do you want to replace it?

Type “y”. Just the letter, without <ENTER>. Then type the replacement call. It might be twice circulate, or grand cross back, or remake the column, or invert the column, or whatever.

When the program asks about things you don't want to replace (it does this a lot), type “n”. When using Sd instead of Sdtty, there will be a popup window.

How can I do a turn the key but do a criss cross the deucey after each part?

The concept add (and follow it by, which is identical) is followed by two calls. It performs the first call (first in textual order, that is) after the second. For example:

     swing thru

does a swing thru and roll.

You must type this on 3 lines: one with the “add” concept, and then each of the two calls on its own line. This is because “add” operates on two calls.

There is also a concept precede it by, which performs the first call before the second.

There is really only one context in which these concepts are sensible—they can be the subject of the piecewise, oddly, or evenly meta-concepts. For example:

     piecewise add
     criss cross the deucey
     turn the key

will do a criss cross the deucey after each of the three parts of turn the key.

These concepts are among the situations in which the program does not attempt to print out the exact words that are appropriate to use when calling, but instead prints out an unambiguous description of what is supposed to happen. The exact words you should use depend on the context and on your judgement. You might say “piecewise add a criss cross the deucey, and turn the key,” or “do a criss cross the deucey after each part, and turn the key,” or something similar.

What is the difference between “initially centers” and “centers start”?

A very profound question. A lot of discussion went on among challenge callers over how these should be used. Of course, before computers were in common use, these sorts of things were used in an imprecise way, only in situations in which the meaning would be simple and obvious. As challenge choreography became more complex, it became necessary to work out a really precise meaning.

Initially <concept> always means to apply the concept to the first part. When you apply the centers concept to something, it means only the centers do it, as though they are the only people present. For example, on centers trade from waves, the centers trade with each other. The ends do not enter into their thinking. So initially centers recycle applies the centers concept to the first part or recycle. As such, the very center 2 are the ones who fold.

      2G^                    3BV         1B>   2G>   1G>   4B>
          2BV  3G^  1GV  4B^
      1B^                    4GV         2B<   3G<   4G<   3B<
                      initially centers, 2/3 recycle

Anyone start means that the designated people do the first part of the call, while the others wait. Then the ohers join in for the rest of the call. When doing the first part, they are aware of the whole setup. For example, from C1 phantoms, one could call girls start, 1/4 thru. The girls are aware of the rest of the setup (even though the boys aren't precisely where they need to be for a 1/4 thru) when they start the call. Everyone joins in after the first part.

                  2B^   3BV
         2G<                             2G^   2BV   3G^   3BV
                     4G>                 1B^   1GV   4B^   4GV
      1B^   4BV
                       girls start 1/4 thru

So, on centers start, recycle, the centers are aware of the ends, and of the general setup that the ends make part of. The person in the center wave that is closer to the ends considers herself to be the “center” of the 4-person formation doing the recycle.

      2G^                    3BV         1B>   2G>   3G>   2B>
          1G^  4BV  2B^  3GV
      1B^                    4GV         4B<   1G<   4G<   3B<
                      centers start, 2/3 recycle

How can I say something like “initially use ah so in spin chain the gears”?

     initially use
     ah so
     spin chain the gears

You must type this on 3 lines: one with the “use” concept, and then each of the two calls on its own line. This is because the “use” concept operates on two calls: the call to be used, and the call in which it is to be used. (The “use” concept is like “checkpoint” in this regard.) Such concepts are very hard for Sd to understand, so you have to write them on separate lines. That is, you must press <ENTER> after the concept and then after each of the two calls.

How can I start a sequence with all 4 ladies chain?

Sd is very strongly oriented toward the heads pass the ocean style of sequence openings. That is, you start with the heads or sides doing some call, either by themselves in the center, or something like split square thru 4. Sd is somewhat unwieldy with calls like all 4 ladies chain.

First, you have to give the startup command just as they are. This will leave the dancers in a squared set. Then, after doing the 4 ladies chain and whatever other thar/alamo/squared set calls you want, you may very well want to go into the more “normal” style of calling by having some people move in and pass the ocean or whatever. To do this, use the concept <anyone> move in and, and then then give the desired call.

The sequence might look like:

     just as they are
     all 4 ladies chain
     heads move in and pass the ocean

If you had the ladies chain 3/4, heads won't do. In that case, use the designator headliners or sideliners. These are also Challenge terms that Sd recognizes at Mainstream. They mean "whoever is facing head/side walls right now". When calling, you would presumably say All 4 ladies chain 3/4, *AT* the heads, square thru .... or whatever terminology you like to use.

I can't seem to get it to do anything after things like all 4 couples right and left thru.

This is really the same problem as the all 4 ladies chain problem of the previous question. You need to start the sequence with just as they are, then do the all four couples calls, and then have some people move in and ... to do the rest of the sequence.

Why can't I do split phantom lines load the boat from an 8-chain?

There are two reasons, one very simple and one more serious. First, without knowing the facing directions of the phantoms, we can't tell where they went, so the live dancers don't know whether to leave room for them. If the ends were facing out of their split phantom lines, they would go into spots that require the centers to move outward. So it is necessary to give the assume facing lines or assume inverted lines command.

Even if this is done, Sd still won't be able to figure out where the phantoms went. The problem is that it is too hard to track them through something as complicated as “pass three moving dancers and quarter in”. Sometimes Sd can track phantoms and sometimes it can't. For example, it can do a split phantom lines hocus pocus from an 8-chain, even though that's a C2 call and load the boat is “only” Plus. When you run into a problem like this, give the with active phantoms command after the assume command.

What are active phantoms?

The concept with active phantoms, used after one of the assume concepts (either an explicit one like assume waves, or an implicit one like split phantom waves), effectively places invisible but otherwise intelligent dancers on the phantom spots, with facing directions deduced from the assumption. Those phantoms proceed through the entire call, interacting with each other and with the live dancers as necessary. If the call is impossible for the phantoms to do, or if illegal collisions occur between live dancers and phantoms, it is an error. At the end of the call, any live dancers or phantoms that come to the same spot may take right hands with each other, if that is appropriate for the call. Note that this is contrary to what dancers generally expect when working with phantoms.

Most of the types of assume concepts are sufficiently explicit that, if even a single live dancer is present in the setup, everyone's facing direction may be inferred. This is necessary for the with active phantoms concept, of course. For example, a single live dancer can determine the handedness of all the phantoms when assume two-faced lines is given. Two of the concepts are not sufficiently explicit for this, and may not be used with with active phantoms. They are assume general diamonds and assume general 1/4 tags. If you are going to use with active phantoms, you must give more detailed assumptions than these two, such as assume left 1/4 lines or assume facing diamonds.

You can put Sd into a mode in which there is an implicit with active phantoms whenever any assumption is made. The toggle active phantoms command toggles (turns on or off) this mode. When in this mode, Sd will not actually insert the text with active phantoms after each assume concept.

Beware: The with active phantoms operation is almost never the right thing. While callers certainly have different philosophies on this subject, I have found that it is almost never necessary to use this in order to make Sd perform the material that top-notch callers call. In nearly all cases, giving an appropriate assume command is all that is required.

What are Head Corners? What are Headliners?

These are obscure designators that are only in dancers' vocabulary at high challenge levels, but that Sd makes available at all levels for emergency operations. Head Corners are the Head Boys and Side Girls, that is, the Head Boys and their original corners. Headliners are those people facing the head walls at any given instant. Side Corners and Sideliners are analogous.

The resolver seems befuddled at times. Why?

Especially at very high levels, the resolver seems to take a longer time to find a resolve than one might expect. The reason is that it starts its resolve search looking only for “high quality” resolves, and throwing away huge numbers of “low quality” ones. It assumes that you would press F12 to throw away the low quality resolves anyway. So it is initially reluctant to show a lot of resolves. After it has shown all the high quality resolves it can, it lowers its standards and shows the ones that it skipped.

Things that make a resolve high in quality are brevity, short promenade distance, and avoidance of such things as extend, slip the clutch, and reverse single file promenade. The promenade distance criterion is only applied at C2 and above.

How can I use “minigrand” getouts?

Mini-grand (right and left grand, but on the 3rd hand, promenade) can be added to Sd's repertoire of resolves by giving the toggle minigrand getouts command. You can also start the program (Sd or Sdtty) with a command-line argument of "-minigrand_getouts", either on the command line or in a script or Windows shortcut, or put the line "minigrand_getouts" in the “[Options]” section of the "sd.ini" file.

Why are Sd and Sdtty no longer compiled with Microsoft Visual C++?

I'm glad you asked. The Microsoft compiler is not of acceptably high quality for the compilation of Sd and Sdtty. Microsoft may know how to write software that aggressively propagates email viruses (here), and they may know how to write software that deletes competitors' products (here), and they may know how to write software that makes competing web browsers look defective (here), but they don't know how, or can't be bothered, to write compilers that generate correct code. Compilations of Sd and Sdtty have been observed to crash on “snag bits and pieces” from waves. At first this was believed to occur only with Visual C++ version 6, service pack 3, which caused me to revert to version 5.

The bug was eventually tracked down to incorrect restoration of the ECX register upon exit from a “switch” statement. Bugs of this type, in which the compiler generates incorrect object code without giving any warning or error message, are inexcusable. The bug was reported to Microsoft in detail on 17 December 2001. No reply or fix was forthcoming. Over a year later a followup message was sent to Microsoft management asking about it. They gave me their customer support website ( and phone number (800-936-5800). Both contact points want me to pay them money before I can even find out whether they intend to fix this bug.

The bug was subsequently observed with version 5 also, creating a serious problem, since those are the only Microsoft compilers that I have. As of Sd version 35, Gcc is used for the compilation of Sd/Sdtty for Windows. It has always been used for the Linux release, of course.

No version of Sd or Sdtty suffering from this Microsoft compiler bug was ever released—the code was modified to avoid the bug. But that is not a workable solution in the long run, since I don't know what other parts of the program could be getting compiled incorrectly.

So what software is used in the preparation of Sd and Sdtty?

       computer:             HP/Compaq Presario V3000
       OS:                   Windows XP                   commercial
       editor:               GNU Emacs 20.7.1             free
       development system:   MingW 5.1.4                  free
       compiler/linker:      GCC 3.4.5                    free
       compress utilities:   Winzip 8.1                   commercial
                             Winzip Self Extractor 2.2    commercial
                             gzip 1.2.4                   free
       document preprocessor:texinfo 1999-03-26.17        free
       Postscript formatter: MiKTeX 2.9                   free
       PDF formatter:        MiKTeX 2.9                   free
       HTML formatter:       Perl 5.004-02                free
                             Texi2html 1.51               free

Microsoft Frontpage is not used at any point in the preparation, so there is no danger of running afoul of Microsoft's licensing restrictions against making web pages that "disparage Microsoft, MSN, MSNBC, Expedia, or their products or services".

Is free software actually that much higher in quality than commercial software?

It sure is, in many cases. A worldwide network of hobby programmers who take pride in their work make vastly better products than big companies that are managed by a philosophy of getting the most possible money from the least possible work.