Urchlay Posted June 14, 2006 Author Share Posted June 14, 2006 4th option: Speak the word after every pause command or end of phrase. The pause character is sent quite often in normal speech and might be a good enough break in the flow of speech so nobody would notice, and the delay would be shorter. Yah, that should work. It's like my option #2, only better. Last night, I got things working with #2 (speak only when there hasn't been any data for a full frame)... it's still not ready for prime-time, of course. Actually, 2 days ago, I was doing the "speak when there's a pause" thing, and ripped it out because it couldn't detect end-of-phrase (since there's no pause at the end of most phrases). Can just uncomment that bit of code again and it ought to work like your option #4. Quote Link to comment Share on other sites More sharing options...
Urchlay Posted June 14, 2006 Author Share Posted June 14, 2006 5th option: Have one or more "fake" I/O addresses that are supported within the emulator for purposes of speech output. Hm, that'd require modifying the ROMs though, unless I'm missing something... I thought of trying to do a clever hack, like having the 6502 emulator remember the load address of the last "LDA (indirect),y", then when data gets written to the joystick port, just grab all the bytes from the ROM, starting from that address and ending with the first $FF. It'd work, but only for ROMs written with the standard speech macros that come with the AtarVox (or for ROMs that use some other code that uses (indir),y addressing)... though realistically, that might be enough. Hm, but if the ROM wants to change its mind in mid-phrase.... imagine something like a phrase that says "Game Over. Your rank is..." (followed by "Private", "Sergeant", etc). It'd be possible for the game author to write code that changes the data pointer in mid-phrase (though if he's using the standard macros, it'd be much easier to just consider them different phrases). Hmmm.... Quote Link to comment Share on other sites More sharing options...
Urchlay Posted June 14, 2006 Author Share Posted June 14, 2006 Here's a few samples Damn dude... Ehh, I dunno if I can emulate all the R2D2 noises, or the singing... will definitely give it a shot though. Do you still have the codes you sent to the chip to make it say all that? Would be very educational for me to see them... Quote Link to comment Share on other sites More sharing options...
Richard H. Posted June 15, 2006 Share Posted June 15, 2006 Do you still have the codes you sent to the chip to make it say all that? Would be very educational for me to see them... I didn't do them, they're samples from PhraseALator (just click on the view codes button). BTW I've shipped your Avox, but was thinking you might also need a PC interface to play around with speech etc. I have built a USB one which works directly with PhraseAlator. I did have to modify the software to work correctly at 19200 baud (it was missing the odd phoneme) + while I was in there I also took out some of the unneeded stuff. It's here if you want it (ignore the memory utility, it doesn't work with the USB interface). I'll ship it out to you this week. Quote Link to comment Share on other sites More sharing options...
Urchlay Posted June 19, 2006 Author Share Posted June 19, 2006 I got a good bit of work done on this over the weekend... The emulation now supports setting the speed and pitch, though I don't yet know whether the speeds and pitches I use are anywhere near what the real thing uses (will know when it arrives). Just wanted to let everyone know what's up, since I haven't been very talkative lately... Quote Link to comment Share on other sites More sharing options...
Urchlay Posted June 28, 2006 Author Share Posted June 28, 2006 Finally received the AtariVox yesterday, got it hooked up and talking last night. My emulation (incomplete though it is) actually doesn't sound that far off, or at least it's not as wrong as I expected. A question about pitch bend, now that I can hear its effect: It sounds to me like the pitch bend is just a bandpass filter, whose center frequency is controlled by the bend parameter... have I got that right? Another possibly stupid question: If I were going to make samples of the SpeakJet's non-phoneme sounds (the siren, pistol shot, etc), is there a better way to do it than to just hook up the AtariVox audio output to my sound card's line in? Should I be worried about impedance matching, or capacitative coupling, or anything beyond using well-shielded audio cables? (The software side I've got covered, I've just never used it with anything but a $5 crappy microphone before) Quote Link to comment Share on other sites More sharing options...
Richard H. Posted June 29, 2006 Share Posted June 29, 2006 A question about pitch bend, now that I can hear its effect: It sounds to me like the pitch bend is just a bandpass filter, whose center frequency is controlled by the bend parameter... have I got that right? Yes, I think that must be it - it definitely sounds like a filter of some sort. BTW are you planning on emulating this ? Another possibly stupid question: If I were going to make samples of the SpeakJet's non-phoneme sounds (the siren, pistol shot, etc), is there a better way to do it than to just hook up the AtariVox audio output to my sound card's line in? Should I be worried about impedance matching, or capacitative coupling, or anything beyond using well-shielded audio cables? (The software side I've got covered, I've just never used it with anything but a $5 crappy microphone before) Should be OK. My card is not sophisticated and I ended up using a USB sound recorder (Griffin iMic) to avoid interference being generated by the PC. Quote Link to comment Share on other sites More sharing options...
Urchlay Posted June 29, 2006 Author Share Posted June 29, 2006 Yes, I think that must be it - it definitely sounds like a filter of some sort. BTW are you planning on emulating this ? Yep. It'll only be as accurate as my ears, though (so nowhere near perfect...) Should be OK. My card is not sophisticated and I ended up using a USB sound recorder (Griffin iMic) to avoid interference being generated by the PC. My card probably doesn't count as "sophisticated" any more (it's a 5+ year old SB Live), but it should do the trick. Quote Link to comment Share on other sites More sharing options...
Urchlay Posted July 12, 2006 Author Share Posted July 12, 2006 (edited) Update... Now that I've got a real SpeakJet (thanks, Richard!), I'm finding out there's no way to make the flite library sound anything like the real thing (also, using flite increases the Stella executable size by 6 megs)... so I'm looking into using samples again. I sampled all the phonemes at the default pitch and speed... I can stitch the samples together to make words that sound almost perfect (my sample for "t" is a bit off). Apparently the SJ's "Mathematical Sound Architecture" isn't what I thought it was. What I'm working on now is some code to change the pitch and/or speed of the samples on the fly (I now know what an FFT is for, anyway). Also, to make life easier, I wrote a little DASM header file that gives symbolic names to the SJ phonemes, so you can write something like this: myspeech: byte RESET byte SPEED, 110 byte PITCH, 60 byte HE, EHLL, LO, OWWW byte EOP (edit: with new and improved formatting...) Here it is, if anyone might find it useful. jetphones.zip Edited July 12, 2006 by Urchlay Quote Link to comment Share on other sites More sharing options...
+batari Posted July 12, 2006 Share Posted July 12, 2006 (ugh, is there any way to make BBCode preserve indentation in a code tag?) Use two spaces and it will show as one. Quote Link to comment Share on other sites More sharing options...
Legend Posted June 15, 2009 Share Posted June 15, 2009 Did atarivox emulation ever make it into Stella? How do you set it up? Quote Link to comment Share on other sites More sharing options...
+stephena Posted June 15, 2009 Share Posted June 15, 2009 Did atarivox emulation ever make it into Stella? How do you set it up? Here's the current status of AtariVox in Stella: 1) Stella supports 'talking' to a real AVox device through a serial port. It can send sound commands to the device, which will actually generate real sound. To activate this, you simply point Stella to the serial port to which the AVox is connected. 2) The EEPROM on the AVox is not used; access is emulated through a 32K file that Stella generates (and reads/writes) as required. That's about it. Emulation for the sound portion itself (the SpeakJet) will probably never be done at this point, as there were several fundamental issues that were never resolved, and the person working on that part of the code is no longer available to do it. I've recently deactivated and removed that part of the code from the codebase, as it wasn't touched in almost 3 years. But if someone comes along and is interested in taking it on (and can solve the problems we had), then I have no problem with adding it back in again. Quote Link to comment Share on other sites More sharing options...
Legend Posted June 15, 2009 Share Posted June 15, 2009 The EEPROM on the AVox is not used; access is emulated through a 32K file that Stella generates (and reads/writes) as required. Is that the part that saves high scores? Quote Link to comment Share on other sites More sharing options...
mos6507 Posted June 15, 2009 Share Posted June 15, 2009 The EEPROM on the AVox is not used; access is emulated through a 32K file that Stella generates (and reads/writes) as required. Is that the part that saves high scores? Yes. The AtarVox "half emulation" works really well. It's really worth the time to set up. Quote Link to comment Share on other sites More sharing options...
Richard H. Posted June 15, 2009 Share Posted June 15, 2009 The EEPROM on the AVox is not used; access is emulated through a 32K file that Stella generates (and reads/writes) as required. FYI it's emulated because the EEPROM's life would be shortened with the multiple writes during dev work. Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted June 15, 2009 Share Posted June 15, 2009 The EEPROM on the AVox is not used; access is emulated through a 32K file that Stella generates (and reads/writes) as required. FYI it's emulated because the EEPROM's life would be shortened with the multiple writes during dev work. Unless you make serious programming mistakes, I doubt one would ever get even close to the limit, no? Quote Link to comment Share on other sites More sharing options...
Richard H. Posted June 15, 2009 Share Posted June 15, 2009 Unless you make serious programming mistakes, I doubt one would ever get even close to the limit, no? A million writes isn't that many when you think about it Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted June 15, 2009 Share Posted June 15, 2009 A million writes isn't that many when you think about it Hm, assuming you write once every minute that's not even 2 years! Quote Link to comment Share on other sites More sharing options...
+stephena Posted June 15, 2009 Share Posted June 15, 2009 The EEPROM on the AVox is not used; access is emulated through a 32K file that Stella generates (and reads/writes) as required. FYI it's emulated because the EEPROM's life would be shortened with the multiple writes during dev work. Unless you make serious programming mistakes, I doubt one would ever get even close to the limit, no? While this is true, the actual reason for not implementing real EEPROM support is that it requires third-party drivers/libraries that aren't under the GPL, and hence can't be linked to Stella. So support for this will probably never be added. As you say, it would only wear out the device anyway, for no good reason. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.