A guitar tuner that gives you a note to tune against, that's easy to replicate in LSDj. But this gives me an idea about hooking up a comparator to a Gameboy button input, count the frequency of the incoming signal and make an actual tuner that tells you the tone and how far off the note is. Not that anyone but me would actually build and us it, but I could build it just to prove that it's possible.

egr wrote:

A tracker that ouputs trigger/CV signals via the link port.  Should be doable since the voltage is there already.

Trigger, sure. CV, not so much. The audio is AC coupled, which you could get around by connecting directly to the CPU output pin. However, you would get a very low resolution, and the DC outputs levels are a mess. Not sure you could do much useful with it in terms CV control.

1,011

(62 replies, posted in Releases)

chibi-tech wrote:

Without revealing my secret sauce, I will say one essential ingredient: custom software timer. It's a long-established trick to use for chiptunes (I believe LSDJ and Nanoloop's sound engines are based around it, even? Please do correct me if I'm wrong), but until recently hasn't been fully exploited in NES music. That being said, creative programming on the squarewaves opens up a pandora's box of weird tones usually not possible within 60/50Hz refresh.

I don't know much about the NES hardware, but I can tell you a little bit about the Gameboy hardware. Gameboy has three useful interrupt sources, VBlank (screen refresh), LCD (raster interrupt which can be set to trigger on a specific scanline, or on every scanline) and a timer interrupt with a selectable interval. Seems like heaven compared the NES's VSync NMI and APU IRQ which is also needed for DMC reloading (right?)

What exactly do you mean by custom software timer? Using the APU timer, or busy-waiting x cycles for high precision timing?

LSDj is using VBlank for general, non-engine stuff (reading buttons, drawing graphics within VBlank period when VRAM is always accessible). It's using the timer interrupt to generate BPM timings. However, LSDj does not allow you to use say VBlank for BPM timing, and then use the timer for effects, or anything like that. And finally the LCD interrupt, which LSDj is using for reloading the wave buffer for sample playback, as well as a high frequency vibrato.

Side note, if anyone has ever wondered why samples to be used in LSDj have to be in the odd sample rate of 11468 Hz, that's why. There are 32 samples in the buffer, so the buffer is reloaded at a ate 11468/32=358.375 Hz. That's exactly 6 times per screen refresh. (59.73 Hz  * 6) Now you know.

Back to the topic. The Gameboy's square channels kind of suck for this kind of thing. There's no way to reliably reset the phase of the square channels completely. Instead, they are reset to the previous phase accumulator value (1/8 of a cycle) So they can't be used to get the same resonant "wow" type sound as in your song.

The Gameoy's  and LSDj's secret is weapon is the wave channel, which can be phase reset, and used to do a similar effect. However, because of how LSDj is written, the timings are a bit jittery (the time between each reset varies slightly) so it doesn't sound as clean as it could. And additionally, that takes up the only channel which can go down to C2 (the square channels only go down to C3) so you can't play a low triangle or similar wave to beef things up while this type of effect is playing. Or sampled drums for that matter. The wave channel is really the only "good" channel on a Gameboy.

This is reply is a bit longer than I planned for, but hopefully someone will find it interesting. And finally, a plug for Rez, a Gameboy synth program that I made, which produces sounds similar to the discussed effect. (It's not really finished, though. Imagine an envelope and maybe an LFO for the frequency and things become more interesting.)

Yeah, DMG or GBC. LSDj is great, but it's not immediately playable. It's a sequencer, and a good one at that, but custom software for a certain task might lend itself better to certain things. Also, if you think LSDj can do everything the chip has to offer, you should check out the thing I just made, Rez which abuses the hardware in a very specific way in order to create something similar to a resonant filter. I should also make an explanation of exactly what Rez is doing, I suppose.

Oh, any ideas are ok I guess.

Hello. I'm going to probe the interest in this. I want you people to list ideas/requests for Gameboy music/sound/noise making programs you want to see happen. Nothing is too big, nothing is too small. Let me see your ideas...

Thanks. I added that recording to the post.

Download link available here: http://blog.gg8.se/wordpress/2012/12/11 … synth-rom/

 ____
 |  _ \ ___ ____
 | |_) / _ \_  /
 |  _ <  __// /
 |_| \_\___/___| by nitro2k01

Rez is a unique synthesizer program for the Nintendo Gameboy. It crudely simulates a resonant filter in a way inspired by the resonance algorithm used by the Casio CZ series phase distortion synthesis. Whether I’ve come close to this type of synthesis, I leave to the users of the program to decide. It can both produce sounds meant to emulate this effect, and sounds more reminiscent of a hard sync oscillator. It also produces a graphical pattern on the Gameboy screen.

During the development of this program, I’ve encountered a number of subtle issues with the DMG hardware, which you can either see as bugs or charming features of the hardware being (ab)used.

What should you run it on?

Rez is intended to be used on real hardware, in particular on a DMG, the original “brick” variety of Gameboy. If you wish to use an emulator, BGB and Gambatte are good choices.

Honorary mentions go out to no$gmb, TGB Dual and smygb02 for sounding glitchy in ways that may be interesting, even though they sound nothing like intended.

How does it work?

In this version, the controls are simple. Up and down control the “resonant frequency”. Left and right control the “fundamental frequency”. Currently, the synth is not tuned to any scale, so you need to manually tune it if you wish to use it with other instruments.

The values of these parameters are shown on the screen: The four hex digit value is the resonant frequency and the two hex digit number is the fundamental frequency.

A and B toggles between different waveforms which gives the resonance a different character, from relatively smooth to harsh to a hard synced sawtooth oscillator.

On the far right (press A you can’t get any further) there’s a clean sawtooth waveform. This waveform is unaffected by the resonant frequency setting and may be useful for tuning the fundamental frequency to another instrument.

There’s a bug in the DMG hardware which sometimes causes the waveform stored in the channel 3 wave RAM to be corrupted. You can press start to enable a workaround for this issue, at the expense of a slightly different timbre. You may also choose to leave this off which randomly and radically changes the waveform.

Pressing select shows the current contents of the wave RAM. This is a debug feature that I used to debug the wave RAM bug. It may be of interest if you’re curious.

All buttons can be used simultaneously.
TIP: Find a “sweet spot” resonance and fundamental setting and alternate between holding left+up and right+down. This increases one setting and decreases the other. This can give some nice effects.

Future versions

I have plans for more features for Rez, including among other things better ways of controlling the parameters. I don’t want to promise too much yet, but MIDI input support (using Arduinoboy or Nanoloop MIDI-USB) may be plausible. But I felt that I wanted to get a version of this out the door to avoid tweaking the program indefinitely and never releasing it.

Rez is not shitwave 2. Don’t believe the rumors.

1,017

(27 replies, posted in Nintendo Handhelds)

Quite possibly yes.

1,018

(27 replies, posted in Nintendo Handhelds)

Terminology note: Twisted pair just means the wires are twisted around each other. This has nothing to do with whether the signals are crossed over. USB has twisted pair wiring for the signals because it helps the signal integrity. On a GB link cable, SIN and SOUT crossed over because in on one end becomes out on the other end. The two things are completely unrelated. Any one cable can do, none, one, or both of these things.

1,019

(27 replies, posted in Nintendo Handhelds)

Ok, then you should do the pin swap mod using the gnd pin. The shield is the metal thing that wraps around the wires inside the cable. It should be connected to the sleeve of the link port connector which in turn connects to ground inside the Gameboy. If your cable only has wires inside and no shield wrapped around the wires inside the cable, well then you're screwed.

1,020

(27 replies, posted in Nintendo Handhelds)

JuiceCBean wrote:

This seems like it would be practical, but wouldn't I still need the ground pin?  It says to move it to the power pin right?

The trick is to use the cable shield as ground, since the connector shield is connected to ground inside the Gameboy. Alternatively, you could move and reuse the SOUT pin (the one  that sends data from the Gameboy) as +5V if you don't need that functionality (sending MIDI from the Gameboy.) Without some kind of ground connection, the circuit won't work.

1,021

(5 replies, posted in Nintendo Handhelds)

But why? Why destroy a functioning (?) EMS64 cartridge? Buy a GB cart replacement battery and solder wires onto the battery tabs, or better yet, solder that battery into place on the other cartridge you have. You will typically only need to change the battery every few years so it can't be that much of a hassle.

So, I've edited the title...

Renoise lets you remap every keyboard shortcut. Also, doesn't fn+backspace produce a "delete" keystroke?

1,024

(9 replies, posted in Nintendo Handhelds)

Avoid batteries marked "heavy duty". (Misleading name...) Use alkaline type batteries. Or better yet, buy Ni-MH rechargeable ones and a charger. You won't regret it.