-
c0dav0x
The yamaha FM synth chip that was used in alot of their keyboards as well as some of the best-sounding arcade games... Does anyone know of a patch that emulates all of its features? Or can anyone even tell me where to find all of its features & settings? I know it has 8 voices, with 4 operators to choose from for each (saw, sin, tri, noise(?)). But can anyone tell me what else it has in terms of digital or analog envelopes, filters, effects and all? If there's no patch for it I plan to try and make one, but I'm not finding much information.
I did find the datasheet, which doesn't help a whole lot. Here's what it says:
_"Generate up to 8 notes"
"Generate noise"
"Timbre can be altered temporally"_
How? I think that can be done by sweeping the modulator frequency or level controls - but are there auto-sweepers or hard presets?_"High harmonic can be de-harmonized from the base freuency"_
What does that mean - that I can control the pitch of the highest partial independently from the pitch of the lower ones? Is this easy to do in pd? I imagine it will require FFT, or maybe I could erxperiement with networks of key-following filters?_"De-harmonize between octaves"_
Anyone know what this means?_"Interval setting of 1.6 cents."
"Add vibrato and AM"_
AM is just the volume envelopes, right? Or am I missing something completely?If anyone wants to answer these questions, fire away, heh. I certainly appreciate it!
-
c0dav0x
This may sound confusing, if so no worries.
OK... right now I'm working with 4 voices, each with 5 values that I want to be able to occasionally sweep (fund freq, vibrato range & speed, tremolo level & speed). I don't have a piano keyboard, and may never get one because I prefer to send ordered, pre-loaded lists of notes and envelopes to the instruments to control their sounds, rather than MIDI device inputs. I'm wondering if there's an easier way to program sweep information than the method I'm building now (which is to store each upcoming sweep as it's own pre-loaded table of offest values, and have each list of tables accessed by sending the address referencing the voice-modifier I wish to sweep). That way I can encode the ranges, direction changes, and speeds of a particular sweep motion with a single, easily-resized data structure.
Basically when I want a certain input to a particular voice swept, I just negate the value I'm sending (since they are all otherwise positive), then use a cell logic to return the abs values to the voice player, and if negative then also send a message to my sweep sequencer consisting of "addresses", which are just numbers representing which voice's modifers I want swept on the current beat. The sweep sequencer then decodes this address using a large [select] to choose which of 20 lists of sweep-offset-tables to use: (to tabread through @ 1 index/ms, then send & add the sweep-offset values to the proper modifier input of my voice player, and finally, prime the next offsets table to use next time the same address is sent to the sweep sequencer.
This means that my little 4-voice synth, with 5 sweepable modifiers per voice, will require 20 separate lists of tables (I figure anywhere from 0-30 tables per list in a given track). To me this seems like kind of an ugly/expensive approach, but it's alot faster than the only other programmable-sweeps method I could come up with.
I bet this post looks like a train wreck, but hopefully someone else has "been there" and can visualize what I'm trying to do. Is this going to be the easiest way for sending programmed sweeps? Maybe there's something I'm overlooking that would do this with less work and code volume?
And if this is my best bet, then is 1 index/ms a good speed to use for extracting sweep offests from the tables? This is kindof a guess... I shouldn't need my sweep response to be faster, but maybe it needs to be slower? The most voice modifiers I'll ever sweep simultaneously on a given beat is 12, with the average being more like 1-2.
-
c0dav0x
I can't seem to use the [<~], [>~] and [||~] objects from zexy external, because windows won't take those characters in the filename. I tried renaming the pd patches to "lt~", "gt~" etc, but I can't get them to work. Is there something else I need to change for everythig to match up properly? Or are windows users just unable to use these three objects?
-
c0dav0x
My specialty is hardware, logic and machine programming. I know that down the road, I will be looking into trying to run pd on my own boards. The thing is, I don't really know anything about the language pd is written in, or more importantly, the nature of a pd patch's disassembled code.
Does anyone know if pd code can be easily run on architectures other than x86 and ppc?
I have alot of experience on the moto 68000 series, which at 16MHz is probably fast enough for some wavetable syntheses and alot of control comptations, right? That's where I would like to start.
I'm also interested in some other cpu's that I haven't delved much into yet.. the hitachi SH-4 looks attractive for embedding in a pd board, with its built-in logic for fourier transforms and matrix math (which I think would be nice for an audio-responsive GEM patch).
-
c0dav0x
Hi everyone, I forget if I already mentioned elsewhere, but I'm new to synth design and for my first project I want to emulate the NES sound device (2A03), which I've got over halfway complete.
There's alot of detailed specs for the 2A03, even a manual on programming the hardware, and that helps alot but it still takes me a long time to figure out how to emulate some of the effects. The how~ forum has been very helpful, but I was wondering if anyone else here is into the "8-bit sound", and does any designing/composing with pd?
Once I finish my 2A03 project and get some experience, I want to move on to emulating the Sega X-Board sound devices, or the Seta x1-010 both of whch seem to have no technical documatation available. Anyone know a good way for analyzing obscure sound devices? Alot of times it's difficult to get samples where only 1-2 channels are playing.
-
c0dav0x
I feel like an idiot asking this but I've been looking for the answer a long time. How can I get object boxes and especially comments to appear smaller? I've seen this alot in other peoples' patches but I've never figured out how to shrink it down.
-
c0dav0x
I want to reduce the linearity of a triangle wave by reducing the bit-depth of the amplitude, basically make it into a fine, triangle-shaped step-function. I'm trying to think of what would be the best way (least CPU work) to achieve this?
I suppose the most direct approach would be to convert from digital to a low-resolution (like 8-bit or even 4-bit low) analog approximation, but is that possible in PD?
Could I somehow get the triangle into a table, and then use tabwrite~ (or tabosc4~?) to create another table that is incremented at the same rate (hopefully real-time), but the amplitude values written to the new table are only updated on every n-th sample of the input? I'm a little confused on the differences between the various table objects... I know I need to do some more reading, but I'm hoping someone may have a quick answer for me
-
c0dav0x
Hi all, glad I found this place and it's still active! I'm fairly new to pd and to synthesis in general, but I've been playing with the platform for a few months now and I recognize a few names here already from alot of examples and tutorials I've viewed, so it's good to be here.
Anyway on with my question.. I notice vline~ has two extra inputs, but all the examples I've seen use three-member lists on the hot input. And the built-in help for vline~ only explains the first input as well. What are the other two inputs for? Can all three be used to set the target, duration and delay values individually?
And if so - can I send for example:
msg[ 1, 0 ] to target, msg[ 20, 100 ] to duration and msg[ 0, 400 ] to delay inputs of vline~, instead of using:
msg[ 1 20 0, 0 100 400 ] on the first input?This would help me alot for the simple ASR envelope I'm working on. Otherwise I suppose I can go through set & trigger hell and maybe figure out a good way to get the variables into the (list, list) format but I'm worried about lagging something up.
Thanks!
-Matt -
c0dav0x
thanks guys, I'll poke around and see if I can find some manuals. nestor if you have one that's ready to upload that's cool, but don't go outta your way, I'm trying to be more resourceful, heh.
AM is rapid modulation of volume that causes audiable sidebands. When the sidebands are inaudiable for low modulation frequencies we usually call the effect "Tremelo" not AM. Vibrato is slow frequency modulation, usually less than 10Hz
Man that's a great analogy! I had figured out the relationship between FM and vibrato, but I didn't realize the one about AM and tremolo. Thanks!
-
c0dav0x
well, I've got the four main instruments and the panelling done for my pd-NES, all that's left is to add glue for the sequencing and composition tools. I had to cheat pretty badly on the noise channel though. For the standard noise mode I used the method from zenpho which looks simple and sounds good, but I noticed he didn't emulate the looped-decay noise mode, which all my resources describe as being "difficult", but otherwise provide slightly different explanations of the mode. It appears that emulators and other software that fully emulate the noise channel seem to "wing it" and use their own unique methods. I'm guessing it's because the actual hardware driving the random number generator kicks out one random bit to the 4-bit DAC at 890KHz, which I guess I can't simulate in pd unless I could change my sampling rate to 445kHz (for 4bit codes). I haven't found a good explanation of what happens to each bit - apparently the hardware updates one of two different bit sequences (a 93-bit sequence and a 32kbit sequence, the latter of which makes no sense to me - that's a big load on the memory bus). I've tried creating different kinds of noise generators or 93bit noise samples, and looping them with an interpolating sampler and decay envelope, but it never sounded right. The problem is the noise itself - no matter how fast I loop I never get a smooth tone, or I still hear regular noise over the tone.
I ended up ripping the looped noise sounds from NES games and an emulator, storing them as timbre presets, and using soundfiler and elementary granular methods to transpose. It's definitely cheating, but it doesn't limit me to the 16 pitch colors that the hardware has to choose from. So I got what I wanted, the NES sound without all the NES limitations, but I'm a little frustrated that I couldn't find a solution that uses only generators as opposed to external samples.
Does anyone have a recommendation for correctly emulating the looped-decay-noise sound? I've attached a wav ripped from Megaman that has a D# tone at four different timbres (caused by different decay strengths in the envleope).