From mailserv@gaia.ucs.orst.edu Thu Oct 20 14:26:45 1994
Precedence: Bulk
Date: Thu Oct 20 12:24:03 PDT 1994
From: gus-sdk-request@gaia.ucs.orst.edu (GUS Programmer's Server)
Reply-To: gus-sdk@gaia.ucs.orst.edu (GUS Programmer's Digest)
Subject: GUS Programmer's Digest V13 #11

GUS Programmer's Digest     Thu, 20 Oct 94 12:24 PST     Volume 13: Issue  11 

Today's Topics:
                         Continuous recording
                   GUS Programmer's Digest V13 #10
                              UNSUBCRIBE

Standard Info:
	- Meta-info about the GUS can be found at the end of the Digest.
	- Before you ask a question, please READ THE FAQ.

----------------------------------------------------------------------

Date: 20 Oct 94 09:23:00 MET
From: "VISX80::GRECNER" <GRECNER%VISX80.decnet@musx53.zfe.siemens.de>
Subject: Continuous recording

>I see that the actual recording is taking place via DMA directly into the  
>PC's memory (rather than the GUS RAM).  Is it possible to set the recording  
>to loop inside of a (for example) 20K block, sending an IRQ when a rollover  
>point (10K, say) is reached?  It makes sense that this would be possible, but  
>I don't see from the SDK docs how to set it up.

You have to implement your own double buffer. You start a transfer to one
buffer, after it's full, the DMA will signal an interrupt. Now you have
to programm DMA again to another buffer and go on. You have to be fast
to miss no sample. On a 20Mhz machine, you have cca. 450 cycles to do it
at 44.1kHz. This is the same technique Sound Blaster programmers have
to use for both recording and playback, and the same you'll have to use
when programming CODEC on the GUS MAX. Maybe there is some small DMA buffer
on GUS to deal with this, which lets you setup the new buffer address in
DMA controller not necesseraly that quickly. I don't know. Anyway, SDK DOC
describes an AUTOINIT mode in UltraRecordData() saying you don't have to
reprogram the DMA again, you just have to hook the record int handler, and
"hit the control register on UltraSound to restart the recording", which
should be fast. But then they say you have to take care about losing no
samples, since the buffer remains the same. They don't, however, say how.
So either you do it like I said first, if it doesn't take 450 cycles
to reprogram the DMA, or you'll use the autoinit mode and try not to lose
any samples. I can imagine two techniques here. Either you manage to
change the DMA buffer address only in PC DMA controller without programing
anything else, which should be reasonably fast, and the you restart recording
by hiting the control register, as they say, or, if the address change is
impossible (I don't know much about PC DMA yet), you'll have to save let's
say first 16 bytes of recorded data while in interrupt handler prior to
restarting recording again. Then, when back from interrupt, you could read the
rest of the buffer away hoping recording didn't reach 17-th byte yet, which
should not happen. You have 16 * 450 cycles then.

>Also, what is the lowest sampling rate that would allow distinguishable  
>speech to be recorded?  I'm looking at an application that needs to be able  
>to transfer sampled speech through a _s_l_o_w_ communications connection, and  
>even with ADPCM encoding I'll still need to minimize the samples...

You'll have to try. In telephony they use 8kHz with A-law or U-law or whatever
it is.
				Hope this helps.
				Martin Grecner

P.S. It did help me as well, since I'll have to write a recording routine
     in the future.

------------------------------

Date: Wed, 19 Oct 1994 15:59:06 -0400 (EDT)
From: Phat Hong Tran <ptran@sciborg.uwaterloo.ca>
Subject: Re: GUS Programmer's Digest V13 #10

On Wed, 19 Oct -1, GUS Programmer's Server wrote:

> Date: Wed, 19 Oct 1994 13:31:55 BST
> From: Chris Barrett <se2cb@de-montfort.ac.uk>
> Subject: Re: GUS MIDI driver source?
> 
> Hi GUS proggers.
> 
> I am attempting to write some MIDI software (player, sequencer type stuff), and
> I have all the info I need on the MIDI format, and the .PAT file format.
> 
> What I have not yet come across is any source code which handles the playing of
> patches (including all that enveloping and vibrato stuff). 
> 
> There's plenty of source for playing MODs, but does anybody out there have or
> knows of any freely available source to do such a thing?
> 
> I'd luv to hear from ya...

There's no freely available MIDI engine source, but have you considered
using Ultramid as your MIDI driver?  It does all that you're asking for,
but it's a TSR-type driver for DOS.  Ultramid programming docs can be 
found on Epas.

Phat.

------------------------------

Date: Thu, 20 Oct 1994 07:47:18 +0800 (GMT+0800)
From: "SiNnEd..." <leechinh@iscs.nus.sg>
Subject: UNSUBCRIBE



------------------------------

End of GUS Programmer's Digest V13 #11
**************************************

To post to tomorrow's digest:                    <gus-sdk@mail.orst.edu>
To (un)subscribe or get help:            <gus-sdk-request@mail.orst.edu>
To contact a human (last resort):          <gus-sdk-owner@mail.orst.edu>

                       FTP Sites                     Archive Directories
                       ---------                     -------------------
Main N.American Site:  archive.orst.edu              pub/packages/gravis
                       wuarchive.wustl.edu           systems/ibmpc/ultrasound
Main Asian Site:       nctuccca.edu.tw               PC/ultrasound
Main European Site:    src.doc.ic.ac.uk              packages/ultrasound
Main Australian Site:  ftp.mpx.com.au                /ultrasound/general
                                                     /ultrasound/submit
South African Site:    ftp.sun.ac.za                 /pub/packages/ultrasound
Submissions:           archive.epas.utoronto.ca      pub/pc/ultrasound/submit
Newly Validated Files: archive.epas.utoronto.ca      pub/pc/ultrasound

Mirrors:               garbo.uwasa.fi                mirror/ultrasound
                       ftp.st.nepean.uws.edu.au      pc/ultrasound
                       ftp.luth.se                   pub/msdos/ultrasound

                       Gopher Sites                  Menu directory
                       ------------                  --------------
Main Site:             src.doc.ic.ac.uk              packages/ultrasound

                       WWW Pages
                       ---------
Main Site:             http://www.cs.utah.edu/~debry/gus.html

Main European Site:    http://src.doc.ic.ac.uk/packages/ultrasound/
Main Australian Site:  http://ftp.mpx.com.au/archive/ultrasound/general/
                       http://ftp.mpx.com.au/archive/ultrasound/submit/
                       http://ftp.mpx.com.au/gravis.html
                       
Mirrors:               http://www.st.nepean.uws.edu.au/pub/pc/ultrasound/

MailServer For Archive Access: Email to <mail-server@nike.rz.uni-konstanz.de>
                               Email to <ftpmail@doc.ic.ac.uk>

New Submit Files Mailing List: Email to <listproc@uni-konstanz.de>
                         with content "subscribe epas-list <your-name-here>"

Hints:
      - Get the FAQ from the FTP sites or the request server.
      - Mail to <gus-sdk-request@mail.orst.edu> for info about other GUS
	related mailing lists (general use, musician's, etc.).


