1

(438 replies, posted in Commodore Computers)

@frantic: I have digged out the old SW-1.7 version I used with sync out on the userport. I can share with you, but it was made for me personally - so there is a big M64 logo, other colors, and changes in the playback "logic", my first attempts for incorporating functions especially for live act usage smile And there is a little difference in the user port sync, compared to defmon sync. So in order to provide a version, that works with the defmon sync device - I suggest I rebuild an original SW 1.7 version, without my further changes, and with the start stop bit set for the defmon device:

I compare my sync to what is written on the defmon wiki - there is a little difference:
My version does not utilize a start/stop line, only 1 bit for the sync signal. The signal is set on each player call, and 0ed at return.
The LSDJ sync and nanoloop sync work this way, that they keep position, when no sync signal comes. They "freeze". So my version of the device simply forwards (and translates) a sync signal whenever it comes from the user port. In SW this means when I press play, sync starts, and on pressing stop it stops. Just without a second signal.

Also I have modifed the playback this way, that I can start playing a song (F1). Whenever I feel I need it smile - I can press F3 which is usually "pattern play". When I press this while song playback (F1), it switches to pattern play of the currently played pattern.
That enables me to have a song where I pre arrange patterns, and can work on each as long as I want (F3), and it will advance to the next pattern, when I press F3 again, after the current pattern is finished playing.

I am not sure anyone would want all this (esp a big M64 logo haha), so I gonna rebuild SW 1.7, and 1.8 with defmon sync. I need to insert just 2 lines additional to my sync: set start bit on play, and clear start bit on stop. Then your version and mine are the same. I can also still use this version, as my device simply ignores start/stop smile
How can I best share it with you? I will send you the M64 branded version, too just for fun smile
cheers, M64

2

(438 replies, posted in Commodore Computers)

martin_demsky wrote:

That catskull shop sync device is not expensive and it looks like established and verified product, so why to experiment with homebrew and maybe damage something smile i also see they are selling gameboy midi sync so maybe this can be paired with defMON adapter midi sync.

Oh I more wanted to point out, that it is for GBAs/GBCs so not for the old grey Gameboys - which most often people have to make music. Be sure to have the right model and not to be disappointed at the time the device arrives was my intention to help here.
Its fine to use of course. My homebrew stuff is really safe, otherwise I would not mention smile - but that's not for everyone absolutely agreed!

3

(438 replies, posted in Commodore Computers)

frantic wrote:

Did I understand that correctly. You have a version of SID-Wizard laying around, that is able to use Scannerboy's sync interface to drive external gear?

Short answer: yes smile

Longer answer: I am on a sync journey for quite some years now. My start was that I am doing electronic music, and I also so much love the SID sound. More exactly - the sounds I grew up with = tracked sounds. Fast forward - so I was able to compose tunes around 2016 with SID-Wizard. And now I wanted to add samplers, synthesizers, etc. So I needed a sync. But there was nothing out that satisfied my "needs". My thing is I want to make music live, and I also want to use the real (old) hardware, and I want to work like I work on the step sequencers of the various synts (303, digitakt+tone,Korgs...,...) on a 16th note grid -> trackers. Then came LSDJ and nanoloop to me smile

I think I explored any existing music software, all kinds of solutions (mssiah,prophet64 likes, cynthcart and likes, various trackers, midi boys and likes) but nothing satisfied my requirements. Maybe to note: I have a professional electronics background, so for me it's easy to quickly setup and hack sthg with signals.
So I thought of building sthg to sync by myself. First idea was to at least play in sync - so modify the tracker in any way that it outputs any sync signal. SID-Wizard is open source, so I learned how to build it, and played around. I added a signal on the user port that I fed to an arduino. Then translated this to MIDI, analog, LSDJ and nanoloop sync. At this time I think I found this forum, and posted about it, I showed my stuff on facebook smile That was around 2017 I think. Very exciting, and I was almost there.

The only limitation was, that the C64 had to be master. And I could either use 6 ticks per 1/16th note, or 5. -> 150,37 or 125,31 BPM. So the next 3 years I had the question floating around, can it be possible to sync a tracker ..... And came to the conclusion per se no. So I worked with this sync - I called it user port sync, since. hermit also mentioned it in SID-Wizard 1.8 readme smile

Now I read a bit about the defmon sync. As it looks, it does exactly the same smile

So ... yes I do have made a SID-Wizard version that works with the defmon sync device haha - how cool is that! smile But it is outdated, SID-Wizard 1.7. I can adapt the current 1.8 version - and send you. Or upload somewhere, no problem.

4

(438 replies, posted in Commodore Computers)

Some info on the link to the Gameboy sync adapter: this is only for GBA (Gameboy advance) and GBC (... color) versions. I want to add - these are not preferred for music - while thy sound ok, the original grey Gameboy (DMG) has the fattest sound. If one needs help connecting to that - you can see above and if there is sthg unclear I like to help out

5

(438 replies, posted in Commodore Computers)

Hi! Since I never had original Gameboy cables, I personally always soldered my own connector to them. Prev I used micro usb for example. When you know the pinout it is not difficult to do. LSDJ for example needs the clock on SERIAL CLOCK (pin5), and GND (pin 6), SERIN (pin 3), and SEROUT (pin 2) to ground. Nanoloop only needs the clock on SERIN, GND to ground ofc, no further groundings. You really need no device for this.
The arduinos output 5V TTL level, they can be directly used to go into gameboys (any sync), and also to use as analog sync.
Same for MIDI - all can be done without further electronics - going directly from the arduino pin to
Gameboy, analog sync, midi sync. Arduinos drive up to 40mA current. MIDI is a current loop. 40mA is enough, and if in doubt you can amplify with a single transistor + 2 resistors (< 1 EUR) wink

With arduino I refer to the usual ATMEGA microcontrollers (and most others), which appear to me from the photos might be used in the defmon sync device. The code required is pretty much arduinoboy, reading the input from the user port signal (play, pause, 24 ppqn come from defmon instead of MIDI IN).

I am up to to publish all my sync stuff open source, now realized:  my old sync device is also (accidently) and can be used as defmon sync device. The "user port sync" as I had called it I have used with SID-Wizard 1.7 when I was only able to have the C64 as master wink So there is also a SID-Wizard version I can provide which works with the defmon sync device. big_smile !

6

(438 replies, posted in Commodore Computers)

Hi! Is this about an analog sync out of defmon sync device? About sync cables - I have soldered 3.5mm sync cables for analog sync quite a few times. Usually they should be mono, except when you use pocket operators. So you can short L and R, work with this perfectly. 5V TTL level is sufficient for all gear I tried (Korg Volcas, Arturia Beatstep, Keystep, LSDJ analog sync mode, ...., .... ). At home I have the pinout, but afaik it's the same pinout like connecting audio (where GND should be, and where signal should be). Gonna verify this in the evening.

In Austria a guy wants to sell 2 NL 1.5 with manual (can be downloaded anyway) - for EUR 1.500,-- smile No buyer yet wink
https://www.willhaben.at/iad/kaufen-und … 410384336/

lol

Thank you frantic. I will come back to you, after having played with my new toy, and having familiarized with defmon first

Hi! Oh that is indeed very interesting news. I am happy for you, that sounds like a little dream come true hehe, cool. Abt my code - it is so small, that it would fit everywhere. But with this news it's probably useless. For one, I think noone except me would use that wink , and I like to use the user port for myself, it is easy coding with it. That conflicts with the new interface. What you are up to is more than an adequate replacement also.
Definately I will add a 2nd C64 to my setup, where I for now will run 2 wizards wink.
One I want to try defmon how I can work with it. For MIDI (and sync) support, I would then need to buy a new interface, whilst I am so glad to have no MIDI in my setup. I am pretty sure I will find a way to add "my" sync to defmon. That is the easy part. I can paste the code here, just for fun, you will see it's nothing wink But with this it's not done, ... without any controls over the sound (channel muting as a minimum), I would need to reverse engineer defmon a bit more, the playback position, current pattern, things like that, to display them. But that's just my personal way or imagination how I want to work. When I can have that way easier with a MIDI device, the option is still there to add MIDI sync to my device, and have both SID-Wizard, and the new defmon running in sync. Using the upcoming MIDI dream device hehe, that sounds cool to me.

Minimum sync routine:
// somewhere, ie on "pressing play", init tune
        lda #0
        jsr music.init

// ...

// sync routine:
!:  // now wait for: low->high               
        lda $dd01
        and #1
        beq !-
        // wait for high -> low
!:      lda $dd01
        and #1
        bne !-   
        inc $d020     
        jsr music.play
        jmp !--

// in this loop: add: check keyboard, and make a stop condition, and go back to editor

Ooh TB-3 hehe, that sounds like some evil sound hehe. I also used a TB-3, TB-03, and a TD-3 big_smile
For now I am happy to do "chiptune only", it is how I want to work in this phase of my life smile
Welllll .... yeah that sounds like a good plan, please feel free to PM me with any sound you make!
I really like defmon, I tried it some years ago, and can't remember why I went for SID-Wizard later.
I think it was the documentation probably. I was a novice on C64 tracking that time. Mayybe
I should have a 2nd look with my updated knowledge I collected over time smile
And I like you use it and will mix it with some acid sound yeah!
Please feel free to PM me any sound you are making. SID+acid is what I both really dig! smile

Martin that sounds cool. You know SID-Wizard 1.8 has MIDI IN support, and MIDI SYNC OUT support.
And it supports standard C64 MIDI devices of course. I for example have used the Kerberos interface cart. SW 1.8 can run there now too. It has MIDI and flash in one. With it you would be able to do all SID-Wizard+MIDI related stuff. Also you can use cynthcart ofc.
May I point you to this: https://csdb.dk/release/?id=142049 it's IMHO the "best"  MIDI synthesizer for the C64. Maybe you can get any MIDI interface, unfortunately skip then the UII one , and do some great sound?
The problem I understand is very specific as your expansion port is blocked by C1541UII+ cartridge. What you told about the C1541UII+ cartridge sounds pretty amazing! I do not own one, so I can not really help there.
I focussed here on the synchronization of playback. And exactly to not need any specific hardware cartridge, I tried to avoid MIDI at all smile

cheers, M64

If you want I can share the piece of code, it is very small. I can also send you the .ino file, etc.
Then we can make defmon playback also to slave mode.

In order to receive MIDI clocks, there is 2 things to do:

a) measure time on the arduino between 2 clocks, then set arduino highres timer accordingly - to generate the "fake IRQ signal" for SID-Wizard or defmon or ... , and derive all other sync modes from it.

b) as I use a little arduino (nano), and it has only 1 highres timer - which I allready use, and the serial comm on arduino would use, too: we need another arduino, or a bigger arm processor with 2 highres timers.

Then we can also define another input pin to be used as for example "analog sync". And choose between MIDI sync, analog sync.

My first goal was to get rid of the tempo limitation. Not necessarily to receive external clocking on the arduino side. The device as sync master is sufficient for me. When I need MIDI devices, I can add a MIDI out very easily. And I can control the tempo so ... all fine for me, no need to be synced by anything else like MIDI clock.

And - yes there were a lot of complications, mainly related to clean timing. On both the arduino, and the C64 side. When main loop takes too long, polling user port can skip a tick. So you read correct, I am polling big_smile

A better version would use a hardware interrupt, but I found it works _so_ stable, that I continued working with a main loop. Polling this pin in a mini loop is just a few cycles. This must be fast. So it is < 10 microseconds.
After pin went high, I wait for pin goes low. Then comes the phase where is more time: call player (< $20 rasterlines time), and display stuff. I know that I can expect roughly 50% of vsync time to be free for me. That is a lot. Then after that I must be fast again, because the next HIGH signal will come soon.

Did I write understandable? I am happy to go into more details. Thank you for your interest!

PS: I have removed all MIDI stuff (via settings file) from SID-Wizard, to make space for my code)

Oh I do not use MIDI at all. I have for a better description made this video https://www.youtube.com/watch?v=Hu4VytU-6Kc.

And I also do not at all tell SID-Wizard to advance on any moment, I want to stay tempo-setting / funktempo etc - independent. I am calling the player routine (ie $1003) itself.

In the IRQ handler there comes the point where it calls the player. This call I removed from there (not really, I left it for jam playing mode).

In the main loop (outside IRQ) I react on play (F1 or F3) then I
- disable raster IRQ
- enable my mode
- as long as in my mode and play:
   wait for a pin on the user port to go HIGH
   call player routine
   display stuff
   handle keyboard (checks for run/stop, F4 (=stop playback), the mute keys, etc )
   loop
- if stopped: re-enable raster-IRQ, restore display and internal variables

the mainloop must ofc be faster than 1 VSYNC, in order to make a playback > 100% possible.

The sync device outputs the corresponding frequency the usual raster-beam has. And just varies that speed then.

Here I want to share with you more information on the SID-Wizard external sync

https://www.youtube.com/watch?v=Hu4VytU-6Kc

cheers, M64

Thank you frantic! Oh mssiah can work with a MIDI clock, but it isn't a tracker, I am not so interested in it.

You are right, SID-Wizard you can also use as a MIDI note player that is the MIDI in function.
And all the rest too, I personally like to have a tracker - and not use the C64 as a synth. Yes M64 is quite a cool thing haha. I found it after I gave my name. Damn! smile

It would be relatively easy to modify defMON — or any other C64 music editor really — in the same way that you have modified SidWizard, but I am not aware of anyone actually doing it, like you said.

Yesss! I even think of injecting this little routine into games like .. Arcanoid II - and play that in sync smile !

Thank you a lot for your feedback, much appreciated!