Shop OBEX P1 Docs P2 Docs Learn Events
SIDcog - The sound of the Commodore 64 ! - Page 2 — Parallax Forums

SIDcog - The sound of the Commodore 64 !

2456789

Comments

  • Ahle2Ahle2 Posts: 1,178
    edited 2009-12-30 15:50
    @Nick McClick
    A lot of peope have built their own synths with real SID chips. Have a look at these.
    www.youtube.com/watch?v=lnTh4e0b-ic&feature=related
    www.youtube.com/watch?v=lQlHboNGzMU

    And here is music making on the C64 with the help of the MSSIAH cartridge and a Commodore 1350 mouse.
    www.youtube.com/watch?v=1r-yMTLVW1U

    Theoretically we could have 6 SIDcogs running at once, one cog mixing it down to two stereo channels and the last cog controlling it all.
    That's 18 channels and whould be enough for a decent synthesizer.

    @Oldbitcollector
    Personally I love the drum sounds generated on the C64.
    But if you are talking about natural sounding drums, it's not going to be easy.
    The SID isn't about creating natural sounding sounds at all.

    The Paula chip in the Amiga was great for natural sounds thanks to being sample based.
    Have a look at www.youtube.com/watch?v=nTz5iwmtkrs
    Everything you hear is from that little sound chip created in 1985... (My PC/Console friends were SOOOOO jealous back then)
  • Ahle2Ahle2 Posts: 1,178
    edited 2010-01-12 22:13
    Look at first post.
    I've uploaded a beta version of my SID dumper, so you guys can dump your own *.sid tunes to *.dmp files.
    It basically is a SID player with the ability to "dump" SID register data into "dump files".

    It features:
    - Code by me [noparse];)[/noparse]
    - SID emulation.
    - 6502 emulation. The first ever seekable CPU emulation. (Yes, SEEKABLE. Try the slider in the player tab)
    - Nice GUI
    - Platform independent... but only a Windows version is available for now. (Is there any mac guy willing to compile a mac version?)

    Instructions:
    1. Add some sid files to the playlist (SID player tab)
    2. Select some of the tunes
    3. Go to the SID dumper tab.
    4. Select a path to dump to.
    4. Set "Dump end point" to something like 00:03:00 ( 3 minutes )
    5. Press the button labeled "Start dumping"

    BTW, Look at the "SID dump player" code at the top for an example on how to playback *.dmp files from a SD card using SIDcog.
    You can also download Jeff Ledgers "SID player" to playback dumps.

    Post Edited (Ahle2) : 1/13/2010 12:42:56 AM GMT
  • Oldbitcollector (Jeff)Oldbitcollector (Jeff) Posts: 8,091
    edited 2010-01-12 22:55
    Missing file from SidDumper: qtgui4.dll

    OBC

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    New to the Propeller?

    Visit the: The Propeller Pages @ Warranty Void.
  • VIRANDVIRAND Posts: 656
    edited 2010-01-12 23:11
    Oldbitcollector said...
    Missing file from SidDumper: qtgui4.dll

    OBC
    That's odd. Second time today, someone was missing a qtgui.dll file,
    and the other time was on a social forum not a technical one.

    I always wondered why Windows can't compile only the pieces from dll files that they need into a single complete exe.
    Even if dlls do something with global variables, there could be just an array of global variables for them.

    Post Edited (VIRAND) : 1/12/2010 11:16:08 PM GMT
  • Ahle2Ahle2 Posts: 1,178
    edited 2010-01-12 23:13
    It was too big to fit... [noparse]:([/noparse]
    You can download it here.... just copy the QtGui4.dll file.
  • Ahle2Ahle2 Posts: 1,178
    edited 2010-01-22 21:58
    There are a lot of people in this forum that have not got a SD card connected to the prop or they simply are to lazy to bother testing SIDcog.
    So here is a medley of 12 C64 tunes recorded directly from a propeller running SIDcog.
    www.mongofiles.com/file/16540/SIDcogMedley.mp3
  • Cluso99Cluso99 Posts: 18,066
    edited 2010-01-23 02:48
    Ahle2: Very nice medley smile.gif Unfortunately I don't have enough time to play with all these great things.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Links to other interesting threads:

    · Home of the MultiBladeProps: TriBlade,·RamBlade,·SixBlade, website
    · Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator)
    · Prop Tools under Development or Completed (Index)
    · Emulators: CPUs Z80 etc; Micros Altair etc;· Terminals·VT100 etc; (Index) ZiCog (Z80) , MoCog (6809)
    · Search the Propeller forums·(uses advanced Google search)
    My cruising website is: ·www.bluemagic.biz·· MultiBladeProp is: www.bluemagic.biz/cluso.htm
  • Michael OBannonMichael OBannon Posts: 19
    edited 2010-01-24 18:30
    Johannes,

    I've just found SIDcog, and it looks to be a very useful platform for building music synthesizers. I hope you will pursue the ability to combine waveforms in each cog. This would be a powerful addition for those of us who want to use SIDcog for music synthesis rather than playing existing files.

    Thanks again,
    Michael
  • laserjoneslaserjones Posts: 14
    edited 2010-01-24 21:07
    Very impressive work - thanks for sharing this!

    Unfortunately, I don't have practical experience with Propeller programming yet (due to a terrible lack of time ...), so I cannot interpret your source code, but maybe you could briefly explain what method you used to implement the filters? I had thought that decent filtering is impossible on a processor that does not even have a hardware multiplier ... But it would be very useful for some synthesizer projects I have in mind for the future.

    Also, can I find documentation on the logarithmic envelope function somewhere?
    Oldbitcollector said...
    Any chance that steel drums could be done with SIDcog?
    If no samples are used, I think FM ist the best method for steel drums, so this would be a job for Ariba's phantastic 20-voice FM MIDI synth for the Propeller. I can't imagine a SID doing it realistically. (On the other hand, I could neither imagine a 20-voice FM synth nor a SID emulation for the Propeller, so don't count on my imagination here ...) wink.gif
    Michael OBannon said...
    I've just found SIDcog, and it looks to be a very useful platform for building music synthesizers. I hope you will pursue the ability to combine waveforms in each cog. This would be a powerful addition for those of us who want to use SIDcog for music synthesis rather than playing existing files.
    For a stand-alone synth, it could be an option to reduce the number of SID voices per cog - then you could improve the emulation and still have lots of voices when using several cogs.
  • Ahle2Ahle2 Posts: 1,178
    edited 2010-01-27 19:09
    Michael OBannon said...
    Johannes,
    I've just found SIDcog, and it looks to be a very useful platform for building music synthesizers. I hope you will pursue the ability to combine waveforms in each cog. This would be a powerful addition for those of us who want to use SIDcog for music synthesis rather than playing existing files.
    Thanks again,
    Michael
    Are you talking about the combined waveforms found in the real SID? Or are you talking combining waveforms by either "anding" or "adding" them together?
    Real SID combining is almost impossible with known algorithms, but it can be done with a lookup table and a lot of hub ram.
    laserjones said...
    Very impressive work - thanks for sharing this!
    No, thank YOU for being interested in my work [noparse];)[/noparse]
    laserjones said...
    I had thought that decent filtering is impossible on a processor that does not even have a hardware multiplier
    I use a subroutine for multiplication. It takes a lot of extra cycles but it works thanks to the relatively fast processor speed (20 mips per cog).
    SIDcog uses 187.200 32 bit multiplications per second.
    I can give you the "pseudo code" for the filter emulation if you want to.
    It's probably the simplest way of doing a 6db/octave multi-mode filter, just 32 PASM instruction ( well a lot more if you count the multiplication subroutine calls )
    laserjones said...
    I can't imagine a SID doing a steel drum realistically
    Maybe by using two oscillators and ring modulate and/or synchronize one oscillators with the other. (the famous C64 musician Tim Follin did a lot of strange sounds this way)
    laserjones said...
    For a stand-alone synth, it could be an option to reduce the number of SID voices per cog - then you could improve the emulation and still have lots of voices when using several cogs.
    Well, 31Khz is a little bit low for real hifi sound generation but it's still enough in most cases. Next step is 62Khz and would require more than one cog and it would also require to rename SIDcog [noparse]:)[/noparse]
  • laserjoneslaserjones Posts: 14
    edited 2010-01-27 20:19
    Ahle2 said...
    I can give you the "pseudo code" for the filter emulation if you want to.
    That would be great - also for the envelope decay function, if possible. A reference to some online description of the methods would also be sufficient.

    Thanks again,
    Joerg
  • Ahle2Ahle2 Posts: 1,178
    edited 2010-01-30 15:29
    The pseudo code for the multi mode 6db/octave filter looks like this!
    [b]Each sample:[/b]
        filter_H  = input_sample - filter_B * filter_resonance - filter_L      
        filter_B += filter_freq * filter_H
        filter_L += filter_freq * filter_B
    
    



    filter_H = Highpass filtered sample
    filter_B = Bandpass filtered sample
    filter_L = Lowpass filtered sample
    filter_freq = Cutoff frequency ( a value between 0 - 1, max freq = sample_rate/2 )
    filter_resonance = Resonance amount ( a value between 0 - 1 )
    input_sample = The incoming sample

    If you for an instance want a bandpass filtered sample use: output_sample = filter_B
    If you for an instance want a bandpass reject filter use: output_sample = filter_L + filter_H

    The logarithmic envelope decay function works like this
    [b]Each frame:[/b]
      amplitude_level-= decay_rate
      if amplitude_level < reference_level
        decay_rate /= 2
        reference_level /= 2
    
    

    Post Edited (Ahle2) : 1/30/2010 3:39:36 PM GMT
  • ForrestForrest Posts: 1,341
    edited 2010-01-30 18:55
    Ahle2, Oldbitcollector, Nick,

    When are you going to announce the board I just saw on Gadget Gangster?
  • Chris MicroChris Micro Posts: 160
    edited 2010-01-30 19:29
    Hi Ahle2,

    very nice project. I like the way you wrote the code: very well structured.
    I made a SID-Emulator too some time ago.
    Here it is AtmegaSID
  • laserjoneslaserjones Posts: 14
    edited 2010-01-30 22:52
    Ahle2 said...
    The pseudo code for the multi mode 6db/octave filter looks like this!
    It's THAT easy??? I can't believe it ... How can a filter work if it processes each sample completely independently of the others? I would have thought that the function would need to include at least the previous sample as well, and probably even more, as with only one sample (or very few samples), the system does not gain any information about the frequency of the signal - and frequencies is what the filter affects. Or did I misunderstand the pseudo code somehow?

    EDIT: Oops, wait ... Filter_B and Filter_L in the first line result from the previous iteration of the routine, right? Then I understand that it can indeed work this way.

    Post Edited (laserjones) : 1/30/2010 10:57:53 PM GMT
  • Ahle2Ahle2 Posts: 1,178
    edited 2010-01-31 09:43
    @laserjones
    Yes, it's that simple [noparse]:)[/noparse]

    @Chris Micro
    Wow, that's a really cool looking project I must admit.
    chMinimalSid.jpg

    @Forrest
    It's really not up to me to make the announcement.
    I've been suggesting to Jeff and Nick to make a Quiz here on the forum and the winner will win a SIDstick.
  • TonyWaiteTonyWaite Posts: 219
    edited 2010-01-31 11:50
    @Ahle2:
    Thank you for this object: I have enjoyed the sound demo's.
    The code is wonderfully annotated.
    I too have been fascinated to see the simplicity of the bandpass filtering.
    For a different application, I have been researching how to do a 50-5000Hz bandpass filter.
    Is it really only a matter of experimenting with the setCutoff values below?

    PUB setCutoff(freq)
      byte[noparse][[/noparse]@Filter1] := freq&$07
      byte[noparse][[/noparse]@Filter2] := (freq&$07F8)>>3
    



    Regards,
    T o n y
  • Ahle2Ahle2 Posts: 1,178
    edited 2010-02-04 15:31
    A new version of SIDcog is available. Have a look at the top.

    Changes:
    - Combined waveform support.
    - Fixed the annoying clicking sound that occured every now and then when playing triangle waveforms.
    - Improved envelope handling.
    - Partly implemented support for resonance value changes Thanks to Ariba [noparse]:)[/noparse]
    - A lot of small improvements and bugfixes

    A new version of SID Dumper is also available.

    Changes:
    - Improved 6502 emulation
    - Improved SID emulation

    @TonyWaite
    TonyWaite said...
    Thank you for this object: I have enjoyed the sound demo's.
    The code is wonderfully annotated.
    Thanks [noparse]:)[/noparse]
    TonyWaite said...
    Is it really only a matter of experimenting with the setCutoff values below?
    Yes.

    Post Edited (Ahle2) : 2/4/2010 3:36:46 PM GMT
  • Ahle2Ahle2 Posts: 1,178
    edited 2010-02-12 13:11
    Here is a demonstration song that is played with the latest version of SIDcog (v0.80).
    It was recorded directly from the SIDstick (gadgetgangster.com/find-a-project/56?projectnum=236)

    (You will have to rename "SIDcog_v080_Demonstration.mp3_" to "SIDcog_v080_Demonstration.mp3")

    Enjoy!
  • Ahle2Ahle2 Posts: 1,178
    edited 2010-02-19 20:38
    www.youtube.com/watch?v=cZzfhQuW2eE
    Just a nice little clip from the El Jugador from Gadgetgangster.com.

    How is this SIDcog releated you might ask?
    Well, SIDcog is the sound core used in the SID player at the beginning.
  • Cluso99Cluso99 Posts: 18,066
    edited 2010-02-20 03:01
    Ahle2: The sounds are great.

    What hardware is required on the prop for the audio output? Do you just use an RC network or is more required?
    Can it input to a stereo/TV?
    How many cogs does it use for the sound generation? (Obviously I haven't looked at the code).

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Links to other interesting threads:

    · Home of the MultiBladeProps: TriBlade,·RamBlade,·SixBlade, website
    · Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator)
    · Prop Tools under Development or Completed (Index)
    · Emulators: CPUs Z80 etc; Micros Altair etc;· Terminals·VT100 etc; (Index) ZiCog (Z80) , MoCog (6809)·
    · Prop OS: SphinxOS·, PropDos , PropCmd··· Search the Propeller forums·(uses advanced Google search)
    My cruising website is: ·www.bluemagic.biz·· MultiBlade Props: www.cluso.bluemagic.biz
  • Chris MicroChris Micro Posts: 160
    edited 2010-02-20 09:38
    >> Do you just use an RC network or is more required?
    yes, pin 10 and 11 are the outputs

    Hi Ahle,

    your emulator is really great. I just tested it and the sound is fantastic, much better than the sound of my Atmega32 SID.

    I tried to run the SID-Dumper, but it seems there is a Problem with the Qt4gui.dll. Is there a version conflict? Is it possible to get the source code of the SID-Dumper?
  • Ahle2Ahle2 Posts: 1,178
    edited 2010-02-20 10:56
    @Cluso99
    It uses one cog, that's why it's called SIDcog tongue.gif (and not SIDcogs)
    You can run it on any propeller based platform that has got at least one sound channel output through a RS network.
    To play SID dumps you need a SD card connected and some dumps to play back.

    @Chris Micro
    Thanks for the great words.
    I just love the look of the Atmega32 connected with a couple of wires, batteries, headphone and nothing else... that thing looks so cool.

    Did you try to download the QT4gui.dll from the link provided?
  • Chris MicroChris Micro Posts: 160
    edited 2010-02-20 12:25
    >>Did you try to download the QT4gui.dll from the link provided?

    Yes, but when I run the dumper, it reports some missing function inside the dll.
    Could there be some version conflict because on my computer qt is installed? Or does the version of QT4gui.dll provided in you link does not longer fit to your program ?
  • Ahle2Ahle2 Posts: 1,178
    edited 2010-02-20 14:16
    Yes, it seems to be some kind of conflict.
    I know for a fact that the dll file in the archive works. If you put it in the same folder as the exe file, it should "override" any dll files in system32.
  • tenfoldtenfold Posts: 4
    edited 2010-03-01 01:04
    I dabble in chiptune music, and am also interested in synths of all kinds. After considering buying a hardsid, and realizing it was going to cost more than I wanted to spend I went searching for alternatives and found the sidstick, and then this thread.

    First I want to say awesome work! I'm always impressed by projects like this because I have a brain that can't fathom how to even begin something like this.

    I have a few questions, and please excuse the noobishness if they sound crazy. I'm not a programmer, and only marginally understand hardware stuff.

    Would it be possible to add a midi clock signal to the sidcog, so that a midi port could be added to something like the sidstick. Then, that would send the clock signal out while a sid played so that sids could be synced with other gear. Or midi in, to play sids using an external clock signal?

    My other question is a hardware one. Would it be possible to mod the sidstick so that a real sid chip could be added instead of the sidcog?

    Thanks for your help, and again, awesome work!
  • Oldbitcollector (Jeff)Oldbitcollector (Jeff) Posts: 8,091
    edited 2010-03-01 01:12
    From the hardware side, yes you could add a simple Midi interface, but because of
    the design you might need to add a extra chip socket with some I/O pins bent out so that
    you can easily access them.

    There is a midi object for the Propeller that is available. All that is lacking is some
    software glue between it and the sidCOG software which really shouldn't be that
    big a deal.

    So yes, doable...

    OBC

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    New to the Propeller?

    Visit the: The Propeller Pages @ Warranty Void.
  • Cluso99Cluso99 Posts: 18,066
    edited 2010-03-01 04:52
    Ahle2: Did you enter SidCog in the Prop contest? Hope you did.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Links to other interesting threads:

    · Home of the MultiBladeProps: TriBlade,·RamBlade,·SixBlade, website
    · Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator)
    · Prop Tools under Development or Completed (Index)
    · Emulators: CPUs Z80 etc; Micros Altair etc;· Terminals·VT100 etc; (Index) ZiCog (Z80) , MoCog (6809)·
    · Prop OS: SphinxOS·, PropDos , PropCmd··· Search the Propeller forums·(uses advanced Google search)
    My cruising website is: ·www.bluemagic.biz·· MultiBlade Props: www.cluso.bluemagic.biz
  • Ahle2Ahle2 Posts: 1,178
    edited 2010-03-01 22:44
    Here is a serial driven SID player for everyone that havn't got a SD-card connected.
    www.mongofiles.com/file/18079/SIDcog_SerialPlayer.7z

    Everyone with a propeller connected to a speaker and a PC running Windows should be able to run this. smilewinkgrin.gif

    Propeller:
    Run SIDcog_SerialSlave on the propeller.
    (If necessary, change RX pin, TX pin and sound pins )

    PC:
    Run SIDcog_SerialPlayer on your Windows machine.
    In the Settings tab, enter the right COM-port number.
    In the SID player tab, add some SID tunes from the SID folder in the archive.
    Click on a tune and press the play button.
    If everything is okey, you should hear some SWEEEET music coming from your Propeller.

    @JonnyMac
    Have a look at the "Direct control tab" [noparse]:)[/noparse]

    @Cluso99
    No, I didn't enter SIDcog in the Prop contest. [noparse]:([/noparse]

    @tenfold
    It should be possible to make a dedicated PCB the size of the propstick that could hold a real SID-chip.
    The SID-chip is VERY, VERY hungry though and the battery wouldn't last more than a couple of minutes.

    Post Edited (Ahle2) : 3/1/2010 10:52:17 PM GMT
  • Oldbitcollector (Jeff)Oldbitcollector (Jeff) Posts: 8,091
    edited 2010-03-02 00:33
    OBC crosses serial SIDcog off his todo list.. AWESOME!

    You know this would make a neat add-on board using that new Propeller Backpack board.
    How many voices could we generate with something like this?

    OBC

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    New to the Propeller?

    Visit the: The Propeller Pages @ Warranty Void.
Sign In or Register to comment.