Offline
Nomad's Land
nonfinite wrote:

Does the 83+ have less song storage space with HT2 like it did for HT1?

Yes, since it has less user RAM. Maybe I'll add support for the Flash memory at some point, but I'm still in doubt about it given that the TI's Flash has an expected endurance of only 10K erase-write cycles (after which your calc would be broken beyond repair, basically).

Regarding the idea of syncing, it's not as straightforward as it may seem. On the back end, HT2 has very little in common with LSDJ and NL. Without having seen the source code of either, I'm pretty sure they use interrupts for timing. This is not possible for HT2, which needs to do all timing through software counting. This, in conjunction with the 1-bit synthesis, leads to a couple of technical problems:
1) While HT2's new beta sound core is now cycle-exact, note data loading is not. Using drum triggers or effect commands will increase the loading time by a varying number of cycles.
2) More importantly, due to the 1-bit synthesis core which keeps the CPU busy at all times, there is not enough time available to wait for an incoming signal.

There is also a third problem, whis is related to how TI calcs derive their clock signal internally. Basically, it's a mess - you'll probably have a hard time finding two TIs that run at the same speed, or even just one that doesn't vary it's speed over time.

That said, I do like the idea of using one of the lines as input, hadn't thought of that. So I might try to implement this at some point in the (probably rather distant) future. But don't get your hopes up too high, as I tried to explain it would be extremely difficult to implement.

For the next 3-4 releases, the to-do list is pretty much set. The next version (due to be released in January) will have some additional sound features and more fx commands, as well as some changes regarding the ALPHA mode behaviour. For the version following that, I plan to make some rearrangements to the GUI, even more fx, and some additional playback and edit related functionality. After that, I want to completely rewrite the keyhandler, as to minimize those annoying glitches when you press a key during playback. After that, I want to add some stuff for "live mode" interaction - different glitches, temporary row/step looping, that sort of stuff. And after that, I want to look into integrating HT2 much deeper with TI-OS to salvage some more valuable RAM, which probably means writing a specialized shell program. Well, that's the idea at least. Undoubtedly this all amounts to several years of work, so it all depends on how much free time and motivation I'll have.

Last edited by irrlichtproject (Nov 11, 2015 8:46 pm)

Offline

Super duper plans!!!

Offline
Madison, WI

I did a battery pull today on my 83+ because I couldn't seem to quit HT2, despite numerous presses of the ON button.  I was notified RAM cleared, and HT2 is gone, along with my first several attempts at writing on it.

If this is normal, maybe put a warning somewhere prominent saying removing your batteries will wipe your software and work.

If this is not normal, what happened? Any idea why HT2 would not allow me to exit?  Music was not playing, I even tried loading a new empty track slot and quitting again to see if that would work.  All functionality worked except for the ability to quit, it seemed.

Edit: Oh yeah.  Doors is still installed somehow.

More thoughts: Can you build in functionality to put the calculator in suspend?  This would resolve the problem of not being able to quit, because I don't need to quit, really.  I just want to conserve battery life while I'm not writing.  This is just a portable music writing station for me...it was a paperweight before that. smile The only time I expect I'll ever really need to be elsewhere will be to run updates or backup files.

Certainly not using it for maths, now that would be just plain silly.

Last edited by nonfinite (Nov 11, 2015 11:43 pm)

Offline
Madison, WI

inb4 someone says "Well there's your problem, you pressed ON instead of OFF!"

Offline
Madison, WI

Oh yeah.  What's the "golden standard" calc to use for HT2?  If the 83+ has limited ram there must be a unit that doesn't.

Offline
Nomad's Land

The 82 has the most user RAM, followed by the 83/82stats. The differences aren't that big though, ~28K on the 82 vs. 24K on the Plus models. Well, that's still one large song more you'll be able to save on the 82.

If you pull the batteries while the calc is running, it will indeed clear the RAM. When the calc is properly shut down though, you can safely pull the batteries for a few minutes. Doors CS itself stays because it resides in Flash memory.

Offline
Madison, WI

OK, so, back to the original question, then.  How does one safely turn off a calculator that doesn't want to turn off?

Offline
Nomad's Land

Oh, I assumed you had accidentally forgotten to press ALPHA before hitting ON.
Hmmm, this isn't supposed to happen obviously, and unfortunately I have no clue what's going on there.
Stupid question, did you stop the player before trying to quit HT2? Also, what version are you on, 2.00 stable or github beta?

Offline

How to construct these wonderful synths? please let me know..i want to construct atleast one..

Offline
Madison, WI

2.00 stable, I believe. The folder says HT200, so that would make sense.

I did quit playback, loaded up a new slot just to be sure playback wasn't going.

It's entirely possible I neglected to activate Alpha.  Ooh, idea. Maybe show a little text on the bottom of the screen similar to the load/save conf when someone pushes ON without Alpha enabled: "ALPHA+ON to Exit" or something like that.  With no feedback on a button press one sometimes wonders if the message was received.

Offline
Nomad's Land

@Prasaanth bandaru: Writing a 1-bit sound driver is actually not that difficult. Some basic knowledge of assembly/machine code is needed though.
I've written a rather extensive tutorial about it, starting with the very basics. So check that out if you're interested. Also, there's a load of source code on my github.

@nonfinite: Yeah, if the folder is called HT200, it's 2.00 stable. Ok, so for the time being I'm not going to do anything about this, but please do let me know if you run into this problem again. Regarding printing an info message - ha, I wish it was that easy! The problem is that the print driver is ridiculously inflexible. It is good at printing exactly those characters that are in use now, but even just adding the "H" would require major changes, and probably blow up the code by a few 100 bytes yikes So this kind of stuff will have to wait till I get around to doing that TI-OS integration I was talking about. The only thing I definately want to add in one of the next versions is a display of how much memory is left for saving.

Offline
Toronto, Ontario, Canada
irrlichtproject wrote:

@Prasaanth bandaru: Writing a 1-bit sound driver is actually not that difficult. Some basic knowledge of assembly/machine code is needed though.
I've written a rather extensive tutorial about it, starting with the very basics. So check that out if you're interested. Also, there's a load of source code on my github.

Still cool to see my pcm2pwm tool mentioned. tongue

Btw, I think the Pulse Interleaving example code may be missing a label (The second zero flag conditional uses skip2 as a PC offset but that label seems to be missing).

EDIT:

On a related note, I've been meaning to try out some ZX Spectrum coding (I'm pretty decent with Z80) and I'd love to know what tool-chain/emulator/etc you use or prefer. Is there a good emulator with breakpoints, register values and single cycle stepping that also has relatively accurate emulation?

Last edited by jefftheworld (Nov 14, 2015 5:47 am)

Offline
Nomad's Land

Hehe, yes, pcm2pwm is simple, but it does the job smile

And you're right, the example code was indeed missing that label. Well spotted big_smile

My toolchain for ZX is as follows (Linux setup obv):
- zmakebas to create BASIC loaders from regular text files
- pasmo assembler (perhaps not the most powerful z80 assembler around - that would be sjasmplus. But I like pasmo's clean and simple syntax).
- fuse emulator - one of the most accurate Spectrum emulators out there. It's debugger is quite powerful, but somewhat user-unfriendly - you set up your breakpoints in a sort of command line, eg. to set a breakpoint at $8000, you type "br 0x8000".

I use the usual shell scripting to glue it all together, ie:

zmakebas -a 10 -o loader.tap loader.bas     #make BASIC loader with BASIC start set to line 10 (= Speccy autorun)
pasmo -d --alocal --tap main.asm main.tap main.lst      #assemble tap file, include debugging output, and create a list file from symbols
cat loader.tap main.tap > test.tap
rm main.tap
fuse-gtk -m 48 -t test.tap    #autoload and run in fuse, 48K mode
Offline
Toronto, Ontario, Canada
irrlichtproject wrote:

Hehe, yes, pcm2pwm is simple, but it does the job smile

And you're right, the example code was indeed missing that label. Well spotted big_smile

My toolchain for ZX is as follows (Linux setup obv):
- zmakebas to create BASIC loaders from regular text files
- pasmo assembler (perhaps not the most powerful z80 assembler around - that would be sjasmplus. But I like pasmo's clean and simple syntax).
- fuse emulator - one of the most accurate Spectrum emulators out there. It's debugger is quite powerful, but somewhat user-unfriendly - you set up your breakpoints in a sort of command line, eg. to set a breakpoint at $8000, you type "br 0x8000".

I use the usual shell scripting to glue it all together, ie:

zmakebas -a 10 -o loader.tap loader.bas     #make BASIC loader with BASIC start set to line 10 (= Speccy autorun)
pasmo -d --alocal --tap main.asm main.tap main.lst      #assemble tap file, include debugging output, and create a list file from symbols
cat loader.tap main.tap > test.tap
rm main.tap
fuse-gtk -m 48 -t test.tap    #autoload and run in fuse, 48K mode

Rad, thanks. That emulator and zmakebas makes it nice and easy!

Offline

Hey Calculator friends!

Since my TI83+ could not drive my headphones properly I decided to design and build a small headphone amp for it. I find it bulky to bring a small mixer or something if I want to make some music on the bus or train.

I got an idea to build the amp from a CMOS 4069 chip, a hex inverter. These chips are pretty fast and since anything that comes out of the calculators two channels is 1 or 0 it felt fun to give it a try and it worked great!
I even threw in a simple low pass filter to take out all the extreme high frequencies that we cant hear anyway.
(Feeding a "normal" non-pwm sound source in to this thing would probably result in a fancy 1bit distortion. Have not tried it yet but it should be brutal. smile)

Here are some sound examples:
https://www.dropbox.com/s/55jkqx7bfqwhb … 1.ogg?dl=0
https://www.dropbox.com/s/mes9rjzckuqas … 1.ogg?dl=0

First one is through the amp and the other is clean.
Looking at the waveforms in cubase I would say they are pretty much identical. Except that the amplified one is inverted. But I can live with that. smile

I have the thing breadboarded right now but I have designed a pcb and will order a few test cards soon.

If you guys are interested I can make some pcb:s for you too if the first batch turns out ok.
I figured that we all have this same problem. smile

Picture of spagetti amp:
https://www.dropbox.com/s/6z8atckrhugfr … i.jpg?dl=0

Offline
Madison, WI

Hi there. Nonfinite Electronics is adding a section to our shop focused on Houston Tracker 2. We are currently stocking accessories for Texas Instruments devices, (adapters and official TI silver link/graphlink cables,) and have plans to add more.

See details here:

http://nonelectronics.com/blog/new-texa … to-nonelec