MediaWiki API result
This is the HTML representation of the JSON format. HTML is good for debugging, but is unsuitable for application use.
Specify the format parameter to change the output format. To see the non-HTML representation of the JSON format, set format=json.
See the complete documentation, or the API help for more information.
{
"batchcomplete": "",
"continue": {
"gapcontinue": "Web_Reference",
"continue": "gapcontinue||"
},
"query": {
"pages": {
"32": {
"pageid": 32,
"ns": 0,
"title": "Sound",
"revisions": [
{
"contentformat": "text/x-wiki",
"contentmodel": "wikitext",
"*": "From: tdiaz-a(in_a_circle)-apple2-dotsero-org (Tony Diaz)<br>\nNewsgroups: comp.sys.apple2,comp.answers,news.answers<br>\nApproved: news-answers-request@MIT.EDU<br>\nFollowup-To: comp.sys.apple2<br>\nSubject: Apple II Sound & Music Frequently Asked Questions (FAQ)\n\nArchive-name: apple2/cdrom<br>\nPosting-Frequency: monthly<br>\nLast-modified: August 21 2007<br>\nVersion: 1.7<br>\nURL: http://wiki.apple2.org/index.php?title=Sound\n<br>\n\n= Apple II Sound & Music FAQ =\n\n== An introduction to music and sound on computers. ==\n\nMusic and sound have been a computerized pursuit since at least the 1960s, when enterprising hackers discovered that by programming the large mainframes of the time to do different operations, different tones could be generated on a common AM radio from the interference (this is still a problem today :-).\n\nEarly synthesizers developed at the time (known as Mellotrons) consisted of a huge bank of tape loops, with each key playing a different tape. Primitive analog tone generators were also in use. These early synthesizers first got wide industry exposure via Walter aka Wendy (never mind) Carlos' \"Switched-On Bach\" album. At this time (mid to late 60s), Robert Moog developed the direct ancestors of today's synthesizer. Moog's synthesizers were programmed via 'patch bays', wherein the user would connect a series of jacks in a specific configuration via patch cords to get a certain tone. This use of the word 'patch' for a sound setting on a synthesizer persists, despite that today a 'patch' is usually a data file stored on disk or in ROM.\n\n\nThe Moog's debut in a Top 40 song was Del Shannon's \"Runaway\". A Moog was used along with a tube-based analog synthesizer called a theremin in the Beach Boys' classic \"Good Vibrations\". The possibilities of synthesizers weren't really exploited until the onslaught of 70s 'art-rock' bands such as the Who, Supertramp, ELP (Emerson, Lake, and Palmer), Genesis, Yes, Pink Floyd and Rush. Synthesizers have continued to advance to the point where they are now the only instrument needed to make a typical Top 40 or rap album. This was foreseen somewhat by Boston, who included a \"No Keyboards!\" logo on one of their early albums despite the obvious inclusion of a Hammond organ on several songs.\n\n\nComputer control of music developed somewhat later, however. Several companies in the early 1980s had competing systems for allowing electronic synthesizers to interface to computers and each other, Roland's \"CV-Gate\" system being among the most popular. Around 1983 or so, a group of companies developed the now ubiqitous MIDI (Musical Instrument Digital Interface) standard. It is now very difficult to find a synthesizer without MIDI capabilities, and all popular computers can be interfaced to MIDI instruments, including the Apple II.\n\n\nThe first development after MIDI was introduced was the \"sequencer\" program, a program which allowed the recording and playback of MIDI data streams, as well as sophisticated editing functions. This allowed perfect playback of songs every time, as well as more advanced functionality such as the ability to synchronize MIDI data with SMPTE (Society of Motion Picture and Television Engineers) time code, a fact which made it very simple to add MIDI-based music to television shows and theatrical films and synchronize to a resolution finer than 1 frame. SMPTE and MIDI were used heavily in the production of the soundtrack for the recent blockbuster \"Jurassic Park\" for example.\n\n\nAt about the same time as the first sequencers were arriving, computers began to get sound chips with some semi-decent capabilities. Machines such as the TI-99/4A and Atari 800 had chips capable of playing at least 3 independent tones at any one time. However, the tones were preset, usually to a square wave, which has very little musical interest. This went to the next step when a young engineer developed the SID sound chip for the Commodore 64 computer. The SID chip could play 3 tones at once [plus 1 channel devoted to 'white noise' percussive sounds], and each of the tones could be selected from a range of several waveforms. In addition, advanced effects such as \"ring modulation\" were avalible on this chip. The C=64 soon allowed many to compose some amazing tunes, but the best was yet to come.\n\n\nThe engineer who designed the SID went on to join a company called Ensoniq, where he designed the DOC (Digital Oscillator Chip) which powered the company's now legendary Mirage synthesizer. The Mirage was unique in that it was the first major synthesizer to offer sampling, wherein you could digitally record any sound you wanted, from trumpets to snare drums to water dripping, and use it as an instrument. Best of all, the DOC chip could play up to 32 samples at any one time, making it useful to emulate a whole orchestra with one Mirage. The DOC chip also powered Ensoniq's ESQ-1 and SQ-80 synthesizers.\n\n\nNow, to get some Apple II-ish relevance. During the design of the Cortland (aka IIgs), Apple was planning on using a chip not unlike the one on the Mac II series. This chip played 4 samples at once, but was limited in it's stereo capabilities (you got 2 samples on the left, and 2 on the right, and that's it) as well as overall flexibility (it's limited to 1 fixed sampling rate of 22,050 Hz). Luckily, Ensoniq sent a sample of the DOC chip to Apple, and it ended up in the hands of a music enthusiast working on the IIgs project. This engineer fought with management until they decided to use the DOC chip for the IIgs. However, up until nearly the last minute, the DOC and it's 64k of RAM were to be an extra-cost feature, which would have killed the GS music software market dead. Luckily, price drops on components allowed the DOC to be standard, so all IIgs owners could hear great sound.\n\n\nBack to generalized things, the next development was to combine sampling and sequencing software on capable computers. This resulted in the *Tracker genre on the Amiga, as well as Music Construction Set, Music Studio, and other programs on many platforms. These programs typically had a sequence file and a series of sample files used as instruments, with some notable exceptions (the *Tracker series on the Amiga had all-in-one 'modular' files, hence the name MOD).\n\n\n\n== 8-bit music and sound ==\n\nThe 8-bit IIs are quite underpowered in the sound department compared to the IIgs. However, anyone who's played Dung Beetles or Sea Dragon knows that some pretty sophisticated stuff is still possible. The 8-bit sound normally consists simply of an ability for programs to make the speaker click. If a program toggles the speaker very fast, tones are generated. And using other techniques beyond the scope of this FAQ, you can even play digitized samples on the speaker, although the quality isn't very good unless you can somehow hook up external speakers. You can hear for yourself with Michael Mahon's Sound Editor 2.2, which is currently available from his web page at: http://members.aol.com/MJMahon/\n\n\nThere have also been a variety of sound expansion boards available for the 8-bit IIs, but the only one to really catch on was the venerable Mockingboard. The Mockingboard was available in several packages. The Mockingboard \"A\" was the base card, which added 6-voice music and sound synthesis to to any alotted II. The Mockingboard \"B\" was a daughterboard that worked with the \"A\" and added speech synthesis capabilities. The Mockingboard \"C\" was essentially an \"A\" and \"B\" in one package. The later Mockingboard \"D\" had the same capabilities as the \"C\", but attached to the Apple IIc via the serial port.\n\n\n== Types of sound files found on the IIgs ==\n\nSeveral types of sample files are used. Here are the most common.\n\n<tab class=wikitable sep=bar>\n<A2Txt>Name</A2Txt> | <A2Txt>Extension</A2Txt> | <A2Txt>FType</A2Txt> | <A2Txt>Description</A2Txt>\nRaw|no std.|BIN|Contains only raw sample data. The auxtype\n|||is normally the sample rate divided by 51.\n|||(See section CA for more on why this is).\nACE|.ACE|$CD|Contains raw sample data compressed with ACE,\n|||Apple's Tool029 sound compressor.\nASIF|no std.|$D8|Contains sample data plus additional data.\n|||Notable due to its use by SoundSmith.\nAIFF|.AIFF|$D8|Interchange format popular on the Macintosh.\n|||Not used much on the IIgs.\nHyperStudio |no std.|$D8|Contains raw or ACE compressed data plus\n|||additional information.\nrSound|no std.|$D8|Resource fork contains one or more rSound and\n|||rResName resources. Used by HyperCard\n|||IIgs and the Sound CDev.</tab>\n\n \n== An introduction to sampling ==\n\nSampling is conceptually simple; an incoming analog sound signal is converted to a digital number (0-255 on the IIgs). Getting good samples depends on a number of factors:\n\n* Sampling rate. This is how often in samples per second the incoming signal is actually noticed and saved. In general, you want to have a sampling rate of twice the frequency of the highest pitch sound you intend to sample. (The reasoning behind this is known as the Nyquist Sampling Theorem). Compact discs sample at 44,100 Hz, which means they can accurately track signals up to 22,050 Hz, beyond the range of human hearing. Long-distance telephone calls are sampled at 8,000 Hz, since the characteristic part of human voices is generally from 1000-3000 Hz. If frequencies higher than or equal to half your sampling rate exist, they will manifest as distortion in the output sample.\n\n* Stereo card quality and shielding (the Audio Animator makes the best samples of any card I've tried, by far).\n\n* Input signal level (the higher the better, except that there is a threshold known as the 'clipping level' above which the sampler will be unable to track the signal. Analog tape recorders do something very similar).\n\nOnce a sample is made, it can be manipulated in a variety of ways via mathematics. Because this processing is digital, no degradation of the signal can occur, unlike with analog processing. Some effects which can be done include:\n\n* Cut and pasting parts of the sample around.\n\n* Mixing/overlaying two samples.\n\n* Flanger/Chorus effects.\n\n* Amplification and deamplification.\n\n* Echoing\n\n* Filtering and equilization\n\nand much more...check out a modern rack-mounted guitar digital signal processor for all the things possible :)\n\nTo digitize a sound (I'll use AudioZap as the example, others are similar):\n\n* Hook everything up.\n\n* Check the oscilloscope. The wave should be barely touching the top and bottom of the 'scope. Any higher and the sound is clipping; any lower and you'll get a poor quality recording. Adjustment methods vary by card; for the Sonic Blaster card AZ can adjust it in software. Otherwise, consult your card's manual.\n\n* Select a recording rate (lower numbers on AZ = faster).\n\n* Click Record and cue up your tape or CD.\n\n* Select Ok and then start the tape or CD.\n\n* Click the mouse and stop the tape or CD when you are done.\n\nYou've just made a sample! congratulations! Experiment...you can't hurt anything, but may discover fun/neat things to do!\n \n== Some basics on editing sounds. ==\n\n(This section attempts to be program-independent, but in some cases specific refrences to AudioZap may sneak in :-)\n\nI'll assume you now have a sound loaded up, and whatever program is showing you a nice wave graph. Now, you can pick out portions of the wave by simply clicking and dragging the mouse over a part of the wave, and letting go when you have as much as you want. If you now try to Play, you'll only hear the portion you have selected. If you need to adjust your selection range, many programs allow you to shift or apple-click and extend the endpoints instead of just starting over with a new range.\n\nOnce you have an area selected, you can cut/copy/paste/clear just like you would text in a word processor. When pasting a waveform, you simply click once where you'd like, and select Paste. The program inserts the previously cut or copied piece of wave and moves the wave over to make room, just like with a word processor.\n\nFor more specific information, consult the documentation for the program you use.\n \n== AE Types of music files ==\n\n<tab class=wikitable sep=bar>\n<A2Txt>Name</A2Txt> | <A2Txt>Extension</A2Txt> | <A2Txt>FType</A2Txt> | <A2Txt>Description</A2Txt>\nMCS|None|MUS|Music Construction Set tune.\nTMS|.SNG|BIN|Music Studio song.\nSS|None|MUS|SoundSmith song.\nNTMOD|None|INT|NoiseTracker GS module\nNTSNG|None|BIN|NoiseTracker GS song.\nMOD|None|$F4|Amiga ProTracker module ($F4 is temporary).\nMIDI|.MID|MDI|Standard MIDI file.\n</tab>\n\n== A brief overview of SoundSmith style editors. ==\n\nSoundSmith (and all other MOD derived editors) use a very simplistic way to representing music, to wit:\n\n<pre>\n0 C5 1000 --- 0000\n1 --- 0000 --- 0000 ... additional tracks here\n2 G5 33FF G5 53FF\n3 --- 0000 --- 0000\n4 C5 1000 --- 0000\n</pre>\n\nThis is often known as a 'spreadsheet' format since there are rows and columns much like a spreadsheet. Let's take a look at an individual cell:\n\n<pre> \nNumber of cell\n| Instrument number\n| | Effect data\n| | /|\n2 G5 33FF\n /\\ |\n || Effect number\n ||\n Note and octave\n</pre>\n\nFor this note, it's #2 of 63 in the pattern, it's a G in octave 5, using instrument number 3, effect 3, and data FF. What effect 3 actually means depends on the tracker in question. On SoundSmith and derivatives, it means \"Set the volume to --\", in this case set it to $FF (255) which is the maximum.\n\nNow, into a larger structure. 64 lines of cells makes up a block, or pattern as it is sometimes called. (some Amiga and PC editors allow blocks of varying lengths, but we won't consider those here). You can terminate a block early with a special effect. On most trackers, an actual effect number is used. On SoundSmith, entering the note/octave as NXT makes that line of cells the last line played in that block.\n\nNow that we've covered cells and blocks, we can get into the large-scale structure of things. To make a complete song, we can give the player a 'block list' which tells it to play a specific sequence of blocks in a specific order. For instance, we could have it play block 4, then block 0, then block 1, then block 2, then block 2. An entry in the block list is known as a 'position'. MOD-derived formats typically allow 128 positions, and 64 (MOD) or 71 (SoundSmith) blocks.\n\nFor those of you with (gasp!) other machines and more modern trackers, you'll notice many of these trackers have a 4th column in each track. The extra column is usually a volume level for the track, where 0 means \"don't change\" and all other values do - this helps to preserve effects and make things more flexible. Also, nearly all limits associated with the original MOD format are no longer in force - Impulse Tracker on the PC, probably the most advanced tracker available today, offers 64 tracks, up to 32 megabytes of samples, and nearly unlimited blocks and positions.\n\nA Practical Example:\n\nCrank up MODZap 0.9 or later and a favorite tune. Set it to the \"Classic Player\". Now, remember those numbers you never understood before, off to the left of the scrolling cells? Here's what they mean, in terms of what you just learned: *grin*\n\n<pre> \nThis is the # of entries in the block list > 35 --- 0000\nThis is the current block list entry playing > 04 --- 0000\nThis is the block # currently playing > 01 --- 0000\nThis is the current cell # in the current block > 36 A#4 0384\n</pre>\n\nAs you watch, the current cell # will normally (barring certain effects) smoothly go from 00 to 63. When it hits 63, it will go to 00 again and the current block list entry number will increment by 1. When it does, the current block number will change if needed (remember, a block can appear multiple places in the block list).\n\n\n== An Overview of MIDI ==\n\nMIDI is a specification developed to allow computers and electronic musical instruments to communicate with each other. Physical MIDI hookups can get rather complicated; here is a brief primer:\n\nMIDI hookups are a lot like your stereo, in that each device has IN and OUT ports. However, MIDI devices also have a port known as THRU, which retransmits information from the In port (more on why this is a Good Thing later). MIDI devices are thus connected in a modfified daisy-chain arrangement, with the Out of the master (usually a computer) connected to the In of Slave #1, and Slave #1's Thru connected to Slave #2's In, and so on. The Outs of all devices go to the In of the master.\n\nHere is a diagram of a simple hookup:\n\n<pre> \n -----------------------------------\n| ---------------- |\n| | ___________ | ----- |\n| | | | | | | |\nIn In Out In Out Thru In Out Thru\nComputer Synth Drum Machine\n(Master) (Slave #1) (Slave #2)\n</pre>\n\nMIDI is based on 16 'channels'. Each channel is typically assigned to one specific device you have connected in your chain. In the example above, you might have the synth set to listen to channels 1-9, and the drum machine set to listen to channel 10 (this is a typical assignment). With this setup, when the computer transmits a note on channel 10, it will first go to the IN of the synth, which will simultaneously retransmit it via it's THRU port and notice that it doesn't want to use the data. The note will then appear on the drum machine's IN port. The drum machine will transmit it on it's THRU port (to which nothing is connected in the example) and start the note. This allows flexibility; if for instance you wanted you could connect a second drum machine with different sounds, set it to channel 10 also, and have a unique mix :)\n\nI will not cover MIDI recording and editing here, because there isn't really any good MIDI software on the IIgs to cover. That's life.\n\n\n== Technical Specs for the GS Ensoniq chip ==\n\nThe 5503 Ensoniq Digital Oscillator Chip (DOC) contains 32 fundamental sound-generator units, known as 'oscillators'. Each oscillator is capable of either making an independent tone by itself, or of being paired up cooperatively with it's neighbor in a pairing known as a 'generator'. The generator arrangement is used by most programs, for it allows more flexibility and a thicker, lusher sound.\n\nThe DOC plays 8-bit waveforms, with the centerline at $80 (128 decimal). This format is known as \"8-bit unsigned\". $00 (0 decimal too) is reserved for 'stop'. If a sample value of 0 is encountered by a DOC oscillator, the oscillator will immediately halt and not produce any more sound. The DOC additionally has an 8-bit volume register for each oscillator, with a linear slope. The dynamic range of the DOC (the 'space' between the softest and loudest sounds it can produce) is approximately 42 dB, or about on par with an average cassette tape.\n\nEach oscillator has it's own 16 bit frequency register, ranging from 0 to 65535. In a normal DOC configuration, each step of the frequency register increases the play rate by 51 Hz, and computing the maximum theoretical play rate is left as an exercise for the student.\n\nWhen oscillators are paired to create generators, there are 4 possible modes:\n\n* Free-run: the oscillator simply plays the waveform and stops. No interaction with it's 'twin' occurs.\n\n* Swap: Only one oscillator of the pair is active at a time. When one stops, the other immediately starts.\n\n* Loop: The oscillator simply plays the waveform and if it hits the end without encounter.cgiing a zero, it starts over at the beginning.\n\n* Sync/AM: This actually has 2 possible effects: either one oscillator of the pair modulates the volume of the other with the waveform it's playing, or both oscillators sync up perfectly, causing a louder and more 'solid' sound.\n\nOscillators play waves stored in up to 128k of DRAM. This DRAM is not directly visible from the GS's 65816 CPU, but can be accessed (slowly) via services supplied by the Sound GLU chip. Note that no widely manufactured IIgs motherboard supported the full 128k of DRAM that the DOC can see. Conversely, no synthesizer Ensoniq made using the DOC had anything less than the full 128k.\n\nThe output of an oscillator can be directed to any one of 16 possible channels. Apple only makes 8 channels avalible via the 3 bits on the sound expansion connector, and all current stereo cards limit this to 1 bit, or two channels. However, the \"Bernie II The Rescue\" IIgs emulator for the Power Mac expands this support to 4 discrete output channels, two of which are encoded to the rear channel for Dolby Pro-Logic compatible output. No IIgs software that I'm aware of supports more than 2 channels however.\n \n \n== About IIgs Stereo Cards ==\n<tab class=wikitable sep=bar>\n<A2Txt>Mfr</A2Txt>|<A2Txt>Name</A2Txt>|<A2Txt>Notes</A2Txt>\n<A2Txt>---</A2Txt>|<A2Txt>----</A2Txt>|<A2Txt>-----</A2Txt>\nMDIdeas|SuperSonic|First IIgs stereo card. Not very well\n||constructed, but sounds nice. Digitizer\n||option pretty good.\n|\nMDIdeas|Digitizer Pro|Daughterboard for SuperSonic, but also takes\n||up another slot in your GS. Pretty good, but\n||very few were sold.\n|\nApplied|GStereo|I've never used one; anyone?\nIngenuity|\n|\nApplied|FutureSound|Most advanced card made. Includes\nVisions||sophisticated noise reduction, coprocessor, and\n||timing generator for ultimate control of\n||sampling rates.\n\nApplied|Sonic Blaster|Generally poor to average card; boneheaded\nEngineering||decision to use non-shielded ribbon cable\n||results in hissier than average output and\n||digitizing.\n\nApplied|Audio Animator|The one they got right. Has digitizing\nEngineering||circuitry external to the GS itself to avoid\n||noise, plus a MIDI interface.\n\nEcon Tech.|SoundMeister|Generally above average quality. Nothing much\n||to say. Pro version with direct-to-harddisk\n||recording cancelled.\n</tab>\n \n== What about them other machines? ==\n\nHere's a rundown of sound on other computers...\n \n<pre>\nComputer or Card Wavetable voices WT bits FM voices Stereo? Digitize?\n-----------------------------------------------------------------------------\nApple IIgs 32 8 None Yes(4) Yes 8 bit\nSoundblaster 1 8 11 No Yes 8(4)\nSoundblaster Pro 2 8 20 Yes Yes 8\nSoundblaster 16 2 16 20 Yes Yes 16 bit\nSoundblaster 16 AWE32/64 32 16 20 Yes Yes 16\nPro Audio Spectrum 16 2 16 20 Yes Yes 16\nGravis UltraSound 32 8/16 None(2) Yes Yes 16(4)\nGravis UltraSound Max 32 8/16 None(2) Yes Yes 16\nGravis UltraSound PnP 32 8/16 None(2) Yes Yes 16(11)\nLogitech SoundMan Wave 20 16 22 Yes Yes 16\nCommodore Amiga (all) 4 8 None Yes Yes 8(4)\nMac (non AV, 0x0) 4 8 None Yes(3) Yes 8(4)\nAV 0x0 Mac Infinite(1) 8/16(10) Infinite(1) Yes Yes 16\nPowerPC Mac 2 16 None Yes Yes 16\nAV PowerPC Mac Infinite(9) 8/16(10) Infinite(9) Yes Yes 16\n\nGame Machine Wavetable voices WT bits FM voices Other voices Stereo?\n------------------------------------------------------------------------------\nAtari 2600 0 0 0 2 No\nIntellivision 0 0 0 4(8) No\nNintendo Ent. System 1(5) 8 5 1 No\nSega Genesis 1(5) 8 6 0 Yes\nSega CD 11(7) 8/16(7) 6 0 Yes\nSuper NES 8 12(6) 0 0 Yes\nSony PlayStation 24 16(6) 0 0 Yes\nSega Saturn 32(12) 8/16 32(12) 0 Yes\nNintendo 64 Infinite(13) 8/16 Infinite(13) 0 Yes\n</pre>\n\n== Notes: ==\n\n\"Wavetable\" as used here means \"a channel capable of playing back a digitized waveform\". This is NOT the generally musically accepted meaning of the term, but it IS how it is commonly used when referring to computer sound boards.\n\n\"8/16\" for WT playback bits means the chip is capable of directly processing 8-bit or 16-bit samples without conversion (the GUS's GF1 chip and the AV Mac's DSP chip obviously fit these criteria).\n\n1 - The AV Mac's DSP chip can theoretically mix an infinite number of wavetable voices or synthesize an infinite number of FM voices. However, this is limited in practice by the speed of the chip and any other things you have it doing (voice recognition, modem replacement, etc).\n\n2- The Gravis UltraSound can emulate FM synthesis in software.\n\n3- Macs before the Mac II were mono-only.\n\n4- This requires additional hardware.\n\n5- The Genesis and NES's wavetable channel is pretty hackish, and not very high quality; nonetheless it works for speech.\n\n6- The SNES and PSX sound chips accept 16 bit samples which have been ADPCM 4:1 compressed (this is similar to the ACE compression toolset on the GS, but the data format is NOT the same).\n\n7- The Sega CD has two channels of 44.1khz stereo 16-bit CD audio and 8 8-bit DAC channels in addition to the capabilities of the Genesis.\n\n8- The Intellivision uses the General Instruments AY-3-8192 chip found on Apple II boards such as the Phasor and Mockingboard. This provides three tones and one percussive noise at once.\n\n9- The PowerPC AV Macs have no dedicated DSP chip; they use the main CPU, which can cause application performance degradation (see also note 1).\n\n10- AV Macs of both CPU types have a 2-channel 16-bit CODEC to actually reproduce the audio, but the DSP or 60x chip are capable of conversion.\n\n11- The Gravis UltraSound PnP specs also apply to other AMD InterWave-chip based boards such as the Reveal WavExtreme 32. 12- The Saturn's 32 voices can each be set to either waveform playback or FM. FM is not limited to sine waves as on older chips, however. 13- Like AV Macs, the N64 uses a DSP to mix as many sound channels as you can devote processing time to - however, since the same DSP computes the 3D geometry you're pretty limited on how many channels you would normally want to use.\n\n \n== What's this I hear about 3D sound? ==\n\nSince stereo sound has been around since at least the 1940s, people have been attempting since then to bring the front-to-back plane into sound, and not just the side-to-side provided by conventional stereo. One of the more notable attempts was made in the 1960s with the so-called \"quadraphonic\" system, which actually had 4 speakers and used special LPs with 4 distinct channels. Since this is often impractical, and nobody wanted to go to the trouble of recording 4 channels anyway, the system faded out by the mid-to-late 1970s.\n\nWith the advent of affordable DSP power in the early 1990s, and advanced psychoacoustic research, many new systems started to appear. Most popular is Dolby Pro Logic, which encodes 4 channels of sound into the 2 stereo channels commonly found in stereo VHS tapes and compact discs. This system uses 5 channels - left, center, and right in front plus left and right rear, which are actually the same sound. This system doesn't provide very good sound localization because the 2 rear speakers cannot play different material, and neither they nor the center channel can play full-range sound. Nonetheless, because the encoding for this system is cheap and easy to do, a wide variety of PC and Macintosh software now offers it in either licensed or unlicsensed form.\n\n\nThis system is being gradually phased out in favor of Dolby Digital, or AC-3, which encodes \"5.1\" distinct full channels of sound - 1 channel for each of the same 5 speakers used in the older Pro Logic plus a \".1\" channel which contains only deep bass and is intended to drive a subwoofer. This provides a very compelling sound field when properly implemented with good quality speakers, since all 5 main speakers can play independant full-range sounds.\n\n\nThere are also a variety of methods which claim to reproduce an entire sound field with only 2 speakers or normal stereo headphones. The most popular of these is \"QSound\", which has the added advantage of also being compatible with Pro Logic, so you can get 'real' multi-plane sound if you've got it and a reasonable imitation otherwise. QSound was first commercially used for Madonna's \"Immaculate Collection\" album, and is now used in arcade, console, and PC-based video games as well as many other places.\n\n\nNote that although Pro Logic encoding is possible in realtime on the IIgs, no known software actually does this. Additionally, the psychoacoustic methods such as QSound simply require too much DSP power to pull off in realtime on the IIgs or other Apple II computers, so be wary of any claims of such. It's certainly possible to pre-process waveforms with QSound and simulate realtime encoding - this method is used on systems such as the Sony Playstation which don't have spare DSP capacity. This \"cheat\" may or may not work with other psychoacoustic systems - it depends on the specific coding method. As always, let your ears be your guide...\n\n\nCopyright (c) 1993-1997 Ian Schmidt. Contents may be freely distributed as long as no editing occurs without permission, and no money is exchanged. Exceptions are hereby explicitly provided for Joe Kohn's Shareware Solutions II, the services GEnie and Delphi, for the current Apple II FAQ maintainer, and for user groups everywhere. \n\n== The Apple II: It just keeps going and going and going.... =="
}
]
},
"69": {
"pageid": 69,
"ns": 0,
"title": "System Monitor",
"revisions": [
{
"contentformat": "text/x-wiki",
"contentmodel": "wikitext",
"*": "From: tdiaz-a(in_a_circle)-apple2-dotsero-org (Tony Diaz)<br>\nNewsgroups: comp.sys.apple2,comp.answers,news.answers<br>\nApproved: news-answers-request@MIT.EDU<br>\nFollowup-To: comp.sys.apple2<br>\nSubject: comp.sys.apple2 Apple II System Monitor CMD Reference\n\nArchive-name: apple2/faq/sysmon<br>\nPosting-Frequency: monthly<br>\nLast-modified: October 11 2007<br>\nVersion: 0.54<br>\nURL: http://wiki.apple2.org/index.php?title=System_Monitor\n\nThe next section is the Frequently Asked Questions (FAQ) posting of the comp.sys.apple2 newsgroup. Copyright (c) 2007 by Tony Diaz (email: tdiaz-a(in_a_circle)-apple2-dotsero-org), all rights reserved. This document can be freely copied so long as 1) it is not sold, 2) any sections reposted elsewhere from it are credited back to this FAQ with the FAQ's copyright info and official WWW location ( http://wiki.apple2.org/index.php?title=System_Monitor) left in place.\n\nThis may not be the latest version of this FAQ-- this is an archived copy. For that, drop by http://wiki.apple2.org/index.php?title=System_Monitor\n\nThis FAQ may not be sold, bundled on disks or CD-ROMs, reprinted in magazines, books, periodicals, or the like without prior consent from the maintainer, Tony Diaz. Exceptions are explicitly granted for Juiced.GS and _The_Lamp. Email me for permission otherwise.\n\nBig thanks to Nathan Mates, the previous maintainer of this comp.sys.apple2 FAQ, for allowing it to live on after his departure and anyone who took up that mantle before him.\n\nBegin part 1 of 1\n\nApple II System Monitor command reference\n\nNOTE: this reference is in beta form, and is still being written. Expect a few minor continuing changes in its layout, content, and correctness. Most info should be correct-- I'd like to be notified of any problems noted in here.\n\n\n\n\nTable of Contents\nSection 1: General Intro to this FAQ and its conventions\nSection 2: System monitor commands listed by system:\n2.1 How to enter the System Monitor\n2.2 Commands in all System Monitor ROMs\n2.3 GS Extensions to the System Monitor\nSection 3: The Miniassembler\n\n\n= General Intro to this reference and System Monitor =\n\nThis FAQ attempts to be a reference for the commands supported by the\n[[inbuilt]] System Monitor contained in the ROM of all Apple II models. As there were a number of versions of the System Monitor, I've attempted to delineate which features are available depending on which model of the Apple II is present.\n\nWarning: the System Monitor allows you to change blocks or bytes of\nRAM at will. You are advised that any manipulations of your Apple II's memory may cause your Apple II to crash or worse. You have been warned of the possibility of causing any damage to your system integrity, and by following any commands listed below, you accept responsibility for what you do.\n\nThis reference is one of a series of references that have been written detailing the Apple II. You may also want to read the\nApplesoft Basic FAQ, the DOS & Commands FAQ, or the comp.sys.apple2\nFAQ.\n\nConventions used by this FAQ: Commands are given in double quotes, but those are not to be typed. <return> is the return key on the keyboard, and should be the last thing typed on a line to be parsed. \"^C\" (or any other letter) is shorthand for Control-C, i.e. hold down the control key and press C. 'Address', 'Address1', 'Address2' are valid addresses for your system-- either 16 bits or 24 for regular Apple II or GS. 'Val', 'Val2' ... are valid bytes to store in memory or registers. All addresses, values, etc are hex unless explicitly stated otherwise. In addition, leading 0s from addresses and values can be omitted.\n\n= System monitor commands listed by system =\n\n== How to enter the System Monitor ==\n\nThe system monitor is identified with an asterisk ('*') for a prompt.\nIf you have one of the earliest versions of the Apple II ROM, you will be placed in the monitor immediately on powerup. However, later\n('Autostart') versions look for disks to boot first. From all Apple\nIIs at the Basic (either Applesoft or Integer) prompt, \"CALL -151\"\nwill enter the monitor. ProDOS's BASIC.SYSTEM version 1.4 and up added the \"MTR\" command to do the same thing.\n\nGSs with a ROM 01 or 3 have a \"Visit Monitor\" CDA (Classic Desk\nAccessory-- accessible from most programs by pressing\nControl-OpenApple-Escape at once) that is builtin, but not always\nenabled. To enable this CDA, the easiest way is to go to the\n\"SetStart\" Graphical Control Panel, and make sure \"Enable Programmer\nCDAs\" is selected, than reboot.\n\n= Commands in all System Monitor ROMs =\n\n== Exiting the monitor: ==\nFrom within the monitor, the easiest ways to get out are either \"^B\"\nor \"^C\" (don't forget to hit <return> at the end of your line), which\nreturn you to either Applesoft or Integer Basic. ^B zaps any program\nand variables in memory, while ^C preserves them. If you entered the\nGS's monitor through the \"Visit Monitor\" CDA, DO NOT use this method\nto exit to Basic; instead use ^Y as is printed when you enter the\nmonitor-- your system will tend to crash as you attempt to exit.\n\n\n== Examining Memory ==\n\n\"Address\" will dump the byte at that address; after that, if <return>\nis pressed again on a blank line, up to 8 bytes (16 if on a GS in 80-column mode) will be printed in continuing order.\n\n\"Address1.Address2\" will dump all the memory between the two at up to\n8/16 bytes per line. [If Address2 is less than Address1, only the byte at Address1 will be printed.] While doing a memory dump, ^S (no\n<return> needed) will pause, ^X will stop the dump.\n\n\n== Disassembling Memory ==\n\n\"AddressL\" will disassemble 20 lines worth of \"instructions\" starting\nat that address; \"L\" by itself will continue on from wherever the\nprevious \"L\" ended. Note that there is no effective difference between code and data in terms of the actual bytes in memory, so if the disassembly makes no sense, it may not be of executable code.\n\n\n== Setting Memory ==\n\n\"<A2Txt>Address: val1 [val2...]</A2Txt>\" sets one or more bytes of memory. There is a practical limit of the number of bytes you can set at once due to the ~255 character limit of the command line, but whatever you type will be set. \"<A2Txt>:val1 [val2...]</A2Txt>\" continues setting memory from where the last memory set ended, allowing you to continue without retyping the starting address. If you try to mix examining and setting memory, setting reverts to the last explicitly specified address, not whatever was last displayed. For example, \n\n<A2Txt>2000<return><return><return></A2Txt>\n<A2Txt>:FF<return>\" will set 2000 to FF.</A2Txt>\n\n== Moving and comparing memory ==\n\n\"<A2Txt>Address1<Address2.Address3M</A2Txt>\" will move memory in the range from Address2 to Address3 to the destination start address of Address1. \n\nThis is more of a copy than move, as the source memory is not modified if the destination range does not overlap the source. The copy is done in increasing order from Address2 to Address3.\n\"<A2Txt>Address1<Address2.Address3V</A2Txt>\" will verify memory in the same type of block range as for moving, and print all differences, one difference per line. The address printed is the address in the source block, along with the value in the source block followed by the value (but not address) in the destination block in parens.\n\n== Simple math ==\n\n\"<A2Txt>Val1+Val2</A2Txt>\" and \"<A2Txt>Val1-Val2</A2Txt>\" print the result of adding or subtracting the values, truncated to 8 bits.\nExamining/Setting registers, running programs \"<A2Txt>^E</A2Txt>\" will dump the current values of the registers. On pre-GS machines, this is only the A,X,Y,P and S registers. \n\nTo set the registers, immediately after a ^E, type\n\"<A2Txt>:NewA [NewX [NewY [NewP [NewS]]]]</A2Txt>\". Registers may be omitted from the right sides if you don't want to change them, but the first value always goes into the accumulator, etc.\n\n\"<A2Txt>AddressG</A2Txt>\" provides a machine language JSR to the specified address with the current registeres set as above. Assuming your code returns with a RTS, you will normally return to the monitor cleanly; if you try to execute data instead of code, the results are usually a crash.\n\n== Cassette I/O ==\n\nIf your Apple II supports this (Apple ][, ][+ and //e only), you can read and write programs to a cassette interface attached to your computer's ports. To write a block of memory out, type\n\"<A2Txt>Address1.Address2W</A2Txt>\"; reading is accomplished with\n\"<A2Txt>Address1.Address2R</A2Txt>\".\n\n== DOS I/O ==\n\nAssuming that you have booted and entered the Monitor from DOS 3.x or ProDOS's BASIC.SYSTEM, you can execute all normal legal DOS commands just by typing them. This is because the OS intercepts the I/O vectors, and gets commands first before passing them on to whatever else is running. For a full list of commands, see the DOS & Commands FAQ at [[:DOS]]\n\n== Misc I/O command ==\n\n\"<A2Txt>N</A2Txt>\" sets the text display to \"Normal\" mode (white text on black background on normal Apple IIs; foreground text color on background text color for the GS); \"<A2Txt>I</A2Txt>\" sets it to \"Inverse\" (i.e. reverse) mode.\n\n\"<A2Txt>n^P</A2Txt>\" (n=0..7) sends output to that slot; \"<A2Txt>n^K</A2Txt>\" gets input from that slot. However, if DOS or ProDOS is active, it is highly recommended that you use the \"PR#n\" and \"IN#n\" commands to redirect I/O.\n\n= GS Extensions to the System Monitor =\n\nNote that the following are in addition to the normal features of the Apple II System Monitor as detailed above, except for the obvious lack of cassette tape support.\n\nIf you're doing extensive GS programming work, you may find the combination of the GSBug init and the Nifty List CDA to be invaluable and far more useful and powerful than the builtin monitor. GSBug is available from Apple's FTP site; Niftylist is on the usual legitimate Apple II ftp sites, such as:\n\nftp://apple2.caltech.edu/pub/apple2/addons/cda/niftylist34.shk\n\n== Extended syntax ==\n\nAs the 65816 in the GS can address memory 24 bits wide, addresses can now have a third byte in them. They must be specified with a '/' after the bank byte, i.e. \"AB/CDEF\". Banks specified simply by themself (such as \"AB/\") are sticky; i.e. if the bank is omitted after that, the last set bank is used.\n\n== Searching Memory ==\n\n\"<A2Txt>/Pattern/<Address1.Address2P</A2Txt>\" searches at most one bank for the\nspecified pattern. The pattern can be a set of bytes, or a string enclosed in \"s.\nExtended register examining and setting \"<A2Txt>^E</A2Txt>\" still works, but prints much more information on the GS's extended registers. In addition, it is possible to set any register directly with \"val=RegisterName\" using the reister names as printed by ^E. The m and x registers are used by the builtin disassembler (\"L\") to decide whether to print one or two bytes after immediate mode instructions. The ROM 00/01 does not track REP/SEP instructions, so if they chnage in the middle of code, the disassembly will look wrong.\n\nThe ROM 3 does it right, but may still need to be told what mode to start disassembling in. \"^R\" resets registers to a \"default\" state of mostly all 0.\n\n== Extended running programs ==\n\n\"<A2Txt>AddressG</A2Txt>\" still uses a JSR, so your code should be in bank 0. [A beep will tend to occur if you are not in bank 0.] \"AddressX\" does a JSL to the address, and \"AddressR\" does a JML to that code.\n\n== Extended math and conversions ==\n\nMath operations can now take up to 32-bit operands as input. Multiplication is implemented as '*', and integer division is implemented as '_'. The result of addition/subtraction is reported as a 32-bit number; multiplication has a 64-bit result. Division has a 32-bit remainder and quotient reported. Conversions between hexadecimal and decimal is now possible; use \"hexval=\" to convert to decimal and \"=decval\" to convert to hex.\n\n== Random other GS stuff ==\n\n\"<A2Txt>=T</A2Txt>\" shows the current system date and time.\n\"<A2Txt>\\{Bytes to put on stack} {Bytes to pull off stack} {Parameter bytes} {Function %23} {Tool %23}\\U</A2Txt>\" will attempt to do a GS toolset call. All of the parameters are bytes, with the possible exception of the parameter list. Any execution error is reported.\n\n= The Miniassembler =\n\nThe miniassembler is aptly named-- it supports going from assembly mnemonic to the hex form one instruction at a time, no support for labels, inserting code, or anything else. It is mostly useful for quick tests of code.\n\nThe miniassembler is accessible from most but not all Apple IIs. From ][s and ][+s with Integer Basic in ROM, type '<A2Txt>F666G</A2Txt>' to enter it from the monitor prompt; //c, enhanced //e, IIc+ and GS, type \"!\" from the monitor prompt to enter the miniassembler. This miniassembler is identified with a \"!\" prompt, and is separate from the normal monitor-- monitor commands won't work in it.\n\nIn the miniassembler, the first instruction is entered as follows: \"Address: opcode [data]\". If there are any errors in a line, the speaker beeps, and a ^ is placed under the first location where it thinks there is an error. Continuing lines can be entered as follows: \" opcode [data]\" (note leading space on line).\n\nTo exit the miniassembler, simply hit return on a blank line. In the GS, the miniassembler does not keep track of register sizes; if you want to use a 16-bit value, you must provide 3 or 4 digits, padding it with leading 0s on the left to make that many digits."
}
]
}
}
}
}