#14 C64 Sid chip Emulation

closed
5
2009-04-28
2009-03-24
Andrew C
No

Nick,

Ok, so it's a vintage synth chip for a computer...
But would you be inclined to do one?
I'd see it having 3 oscillators with square, triangle, sawtooth, white noise and each having ring-mod on/off switches.
In terms of filters, does Bristol have low, band and highpass filters?
And also, would it be possible (if this emulation ever does happen) to have sort of arpeggtion speeds that are well, really really REALLY fast? I.E to have those classic Commodore chord-arpeggios?

Andrew Coughlan

Discussion

  • Andrew C

    Andrew C - 2009-03-24

    oops, my bad, I think the emulation would also have pulse wave as well, along with a button for oscillator sync for all three oscillators and and ADSR for the three oscillators as well. :-P

     
  • Nobody/Anonymous

    Hi Andrew,

    That does actually sound like an interesting project. Will look into some documents on how the chip was organised and thing about how to put together an emulator. Bristol does have BP and HP filters however they are not very rich so I would have to do some work on them.

    Regards,

    Nick

     
  • Nick Copeland

    Nick Copeland - 2009-03-25
    • labels: 1165890 --> Audio Engine
    • assigned_to: nobody --> ncopeland
     
  • Nick Copeland

    Nick Copeland - 2009-03-25

    This is tagged against the engine however the GUI is also a requirement.

     
  • Nick Copeland

    Nick Copeland - 2009-03-27

    Hi Andrew,

    Do you have any reference for the implementation of the SID chip? I have some on the waveform generation techniques and can use that to do some reasonable emulations however I am missing bits on the oscillator multiplexing - how it implements the three oscillators and how they were driven into the filters. It is not obvious whether this was truly three synth voices or just three oscillators into a single filter and envelope.

    I will also have to review how the arpeggio was generated. I have a feeling the CPU probably drove this rather than the chip itself which means for the kind of speeds that the scanning was done I will have to put it into the emulator, I don't think it is reasonable to drive this with MIDI events.

    Will also have a search for some samples of the sounds to make sure I understand what I am after.

    Kind regards, Nick.

     
  • Nobody/Anonymous

    Nick, also, about the fast arpeggios that simulate chords, I agree that it was done by the CPU and not by the chip itself, so you would have put it into the emulation. But what do you mean by it not 'being reasonable to drive with midi events'?

    Personally at least, I think it'd be cool to have well, two sort of 'chord arpeggio' modes, one mode could perhaps use the current arpeggiator to scan the notes and play them back at a fast speed (perhaps just increasing the max speed of the arpeggiator for this emulation) and the other mode something that does something like 'play a chord and then use the arpeggiator to play those notes fast' but to sort of have a release time so you can lift your hand off the keyboard and the notes would play but die.
    Like in this: http://www.youtube.com/watch?v=BHHyBUiHxmc&feature=related

    Andrew.

     
  • Nick Copeland

    Nick Copeland - 2009-03-27

    Hi Andrew,

    Those are good reference sites you gave. My comment on not being able to use MIDI to drive this arpeggiation regards the pending release with the bristol BassMaker, its a 16 stage 4 page sequencer. It gives another interface for sequencing and my comment refers to the fact that I can't really expect to send each step in the sequence from a MIDI event since the overhead would be too high for the rates we are looking for here.

    To be honest I think that due to how this chip was used that I would need to use some other form of arpeggiation that needs to be locked into the code I use to emulate the chip. I think that the C64 CPU was driving one oscillator to do the arpeggiation and the remaining two to provide lead sequences and I really have to think how I can emulate that, it is a different paradigm from one keyboard driving a synth with 3 oscillators such as the MiniMoog. Here each oscillator has its own control frequency input - almost like having a keyboard for each oscillator but that is obviously ugly.

    Not to worry, the emulator will be monophonic to start with so perhaps I need to integrate the arpeggiation functions into the GUI for one oscillator and let the other two track the keyboard or something. I might also try and make the actual SID emulator be a black box driven by the bristol emulator. That would be a pretty cool solution - emulators within emulators. Don't worry about what I am saying, they are kind of notes to let me work on development of some code.

    Regards Nick

     
  • Nick Copeland

    Nick Copeland - 2009-03-27

    Have you had a look at sidplay and libsidplay? If you do want to render SID files then this is probably a better toolkit than bristol is going to be. I still want to work on an emulator however I am not certain that I want it to be a replacement for an existing SID player kit.

    Nick

     
  • Andrew C

    Andrew C - 2009-03-27

    Well, no, I'm not planning rendering SID files under bristol, but I think it'd be cool a cool emulation under bristol y'know?

    Also, scratch that rather stupid idea of the two arpeggiator modes. It's quite stupid sounding and probably a lot more meaningless work for you.... But I'd say that an arpeggiator that can go to quite fast would be cool. (or at least faster than currently. :P)

    But also, you mentioned the Bristol Bassmaker, are you implying that the various bristol synths can/will hook up to the Bassmaker and be able to be sequenced from the bassmaker?

    Thanks,

    Andrew.

     
  • Andrew C

    Andrew C - 2009-03-27

    Also, one other thing Nick,

    Say that, as you said, you've got the equivelent of 3 synths with their own waveforms and envelopes right? Maybe, when designing the emulation you could well, place the 3 synths onto 3 seperate channels, but have their parameters editable from one Brighton GUI?

    Just a thought,
    Andrew.

     
  • Nick Copeland

    Nick Copeland - 2009-03-28

    Have move this into a thread on Open Discussion since it is a little wide of one feature request.

     
  • Nick Copeland

    Nick Copeland - 2009-04-07

    The actual 6581 SID chip emulation is finished, feature set has been checked however full functionality can only be tested when this is part of a full synth emulator. That work is well underway, it will use two SID chips, one will generate audio with three voices which was the starting point, and then an LFO and Envelope were needed for modulation of the voices. It was decided the best path would be to extract these from a second chip as it leads to some interesting setups and has options for emulating 5 rather than three voices quite easily - only voice-3 from the second chip is required for the mods leaving two for general use later.

    There are a couple of other choices for alternative configurations such as using the two IC for splits and layers with different mod capabilities and another option would be to make a 5 voice synth where each voice is emulated by SID chips.

    The key assignments modes for the first emulator will be monophonic, Poly-1 where all three voices sound the same, poly-2 where each voice has its own sounds, and Poly-3 where each has its own sound however all voices above two are sounded with high speed arpeggiation on the third voice, similar to the C64 sequences. These can be adapted depending on results but seems like a good starting point. Arpeggiation rate will be from 16 samples up to 250ms however that may also change depending on requirements.

     
  • Nick Copeland

    Nick Copeland - 2009-04-27

    Implemented a SID chip and integrated it into an emulator. Kept it as close as possible to the SID 6581 specification.

     
  • Nick Copeland

    Nick Copeland - 2009-04-27
    • status: open --> pending
     
  • Nick Copeland

    Nick Copeland - 2009-04-28
    • status: pending --> closed
     
  • Nick Copeland

    Nick Copeland - 2009-04-28

    Going to close this request. The SID chip itself is now integrated and the first emulator is using it. Any open issues will be bug reports against the softSID and there are probably a few more emulators that can be built, they are a separate issue.

     

Log in to post a comment.