Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TD-3 Format support #1

Open
parashu-rama opened this issue Sep 3, 2021 · 43 comments
Open

TD-3 Format support #1

parashu-rama opened this issue Sep 3, 2021 · 43 comments

Comments

@parashu-rama
Copy link

parashu-rama commented Sep 3, 2021

Hello!

I want to convert TD-3 seq to Crave seq.

Can you help me with TD-3 seq file support?

@claziss
Copy link
Owner

claziss commented Sep 3, 2021

Sure, plz let me check the TD-3 format.

@parashu-rama
Copy link
Author

parashu-rama commented Sep 3, 2021

Thank You!
Da Funk.seq.zip

@claziss
Copy link
Owner

claziss commented Sep 5, 2021

Hey, I will do first a TD-3 sequencer dumper, then I'll move in creating the convertor to Crave seq. It will take a bit.

@parashu-rama
Copy link
Author

Thank You!

@claziss
Copy link
Owner

claziss commented Sep 6, 2021

Hey @parashu-rama , please can you share with me a simple TD3 sequence of lenght 16, where u have a single C3 note in the first position? I do not have a TD3 and the Behringer tool requires one. I may need several such simple sequences to identify all the td3 seq file info.

@parashu-rama
Copy link
Author

Me either :)
Found this https://303patterns.com/
Will ask for support!

@parashu-rama
Copy link
Author

parashu-rama commented Sep 6, 2021

Bought One! Wait for delivery :)

@bradisbell
Copy link

Hello all. I received an e-mail requesting me to check this thread.

I've documented the TD-3 MIDI implementation here: https://303patterns.com/td3-midi.html I haven't looked at the sequence files saved from Synthtribe in awhile, but if I remember correctly, they basically followed the same format as you get via SysEx. If you find this documentation useful, please feel free to consider dropping a link back to 303patterns.com. :-)

Also, if you want to use the Synthtribe tool before your actual TD-3 arrives in the mail, all you need is a MIDI port labeled TD-3. Use your favorite MIDI tool to create such a port, such as Tobias Erichsen's rtpMIDI or loopMIDI: http://www.tobias-erichsen.de/software.html

@claziss
Copy link
Owner

claziss commented Sep 7, 2021

@bradisbell Thanks for the info !

@claziss
Copy link
Owner

claziss commented Sep 8, 2021

@parashu-rama I think I've cracked. The listing of DaFunk:

[G1	   	  ]
[A#3	   	  ]
[G2	  A	  ]
[F3	   	  ]
[D#2	S A	  ]
[C2	S  	  ]
[C1	S A	  ]
[C3	S  	  ]
[D#3	  A	  ]
[D#1	   	  ]
[F3	  A	  ]
[G3	S A	  ]
[A#1	   	  ]
[G1	  A	  ]
[C1	  A	  ]
[G2	  A	  ]

I still need to clean the implementation up, there are some fields which are not clear to me what they represent. However, we can go further a bit and think how we map the TD-3's slide and accent. Clearly we can map TD3's accent to Crave's accent, but what we do with TD3 slide? Shall we map it to Crave's glide or note length?

@parashu-rama
Copy link
Author

parashu-rama commented Sep 8, 2021

Congratulation!
My td-3 should be delivered before September 13.
We can test the sound of slide in both versions or implement both options to choose from using the command line parameter.
Or ignore it :)

eg
--slide none/glide/length

@claziss
Copy link
Owner

claziss commented Sep 8, 2021

That is a good idea.

@parashu-rama
Copy link
Author

parashu-rama commented Sep 8, 2021

Manually enter pattern in SynthTribe with glide and try to txtdump it.

  1. Unknown header because crave version 1.1.2
  2. Change to 1.1.1 in hexeditor - octave mismatch - but sound good
Swing: 50%	 Length 16
[G2	     	 64 x1 ####     ]
[A#3	     	 64 x1 ####     ]
[G3	  A  	 64 x1 ####     ]
[F4	     	 64 x1 ####     ]
[D#3	G A  	 64 x1 ####     ]
[C3	G    	 64 x1 ####     ]
[C2	G A  	 64 x1 ####     ]
[C4	G    	 64 x1 ####     ]
[D#4	  A  	 64 x1 ####     ]
[D#2	     	 64 x1 ####     ]
[F4	  A  	 64 x1 ####     ]
[G4	G A  	 64 x1 ####     ]
[A#2	     	 64 x1 ####     ]
[G2	  A  	 64 x1 ####     ]
[C2	  A  	 64 x1 ####     ]
[G3	  A  	 64 x1 ####     ]

dafunk-crave.seq.zip

@claziss
Copy link
Owner

claziss commented Sep 9, 2021

It is an interesting project, but step by step. Let's first finish the the TD3 to Crave (and other way around?) project.

@claziss
Copy link
Owner

claziss commented Sep 9, 2021

@parashu-rama I've pushed a crude TD3 seq parser. Please give it a try and let me know how does it work. To parse a TD3 seq file just pass -t option.
For example:

 ./txtdump -t td3/DaFunk.seq 

The txdump without the -t option will parse the crave specific sequence.

@parashu-rama
Copy link
Author

Works like a charm! Thanks!

@parashu-rama
Copy link
Author

parashu-rama commented Sep 10, 2021

Probably Crave octave mismatch

CraveSeq % ./txtdump -t Da\ Funk.seq
Parse TD3 seq file ...
Swing: 0%	 Length 16
[G1	     	 ]
[A#3	     	 ]
[G2	  A  	 ]
[F3	     	 ]
[D#2	S A  	 ]
[C2	S    	 ]
[C1	S A  	 ]
[C3	S    	 ]
[D#3	  A  	 ]
[D#1	     	 ]
[F3	  A  	 ]
[G3	S A  	 ]
[A#1	     	 ]
[G1	  A  	 ]
[C1	  A  	 ]
[G2	  A  	 ]

CraveSeq % ./txtdump xz.seq

Swing: 50%	 Length 16
[G2	     	 64 x1 ####     ]
[A#4	     	 64 x1 ####     ]
[G3	  A  	 64 x1 ####     ]
[F4	     	 64 x1 ####     ]
[D#3	G A  	 64 x1 ####     ]
[C3	G    	 64 x1 ####     ]
[C2	G A  	 64 x1 ####     ]
[C4	G    	 64 x1 ####     ]
[D#4	  A  	 64 x1 ####     ]
[D#2	     	 64 x1 ####     ]
[F4	  A  	 64 x1 ####     ]
[G4	G A  	 64 x1 ####     ]
[A#2	     	 64 x1 ####     ]
[G2	  A  	 64 x1 ####     ]
[C2	  A  	 64 x1 ####     ]
[G3	  A  	 64 x1 ####     ]

Снимок экрана 2021-09-10 в 09 39 26

@claziss
Copy link
Owner

claziss commented Sep 10, 2021

Yes the octave number may be off by one as I am counting from zero. I will check this.

@claziss
Copy link
Owner

claziss commented Sep 11, 2021

@parashu-rama Please check the latest push. I've added the '-d' option which is parsing the TD3 sequence file, and dumps it as a Crave sequence file. The Crave sequence file has .crave.seq extension. It is still a very crude implementation, but the output looks alright.

I've also corrected the octave missmatch.

@parashu-rama
Copy link
Author

parashu-rama commented Sep 11, 2021

It working! Thank You!
https://youtu.be/Q4KkNYIL8iE

@parashu-rama
Copy link
Author

At last a simple TD3 sequence of lenght 16, where u have a single C3 note in the first position.
singleC3.seq.zip

@claziss
Copy link
Owner

claziss commented Sep 14, 2021

It looks like the last 4bytes from seq file are set. I need to figure out their meaning. The TB 303 (and TD3) should have something about note length, maybe this is the one.

@parashu-rama
Copy link
Author

parashu-rama commented Sep 14, 2021

TD-3 gate length 50 and 100
c3l.seq.zip
Снимок экрана 2021-09-14 в 09 35 49
Crave
Снимок экрана 2021-09-14 в 09 37 03

@claziss
Copy link
Owner

claziss commented Sep 14, 2021

When slide is on, the TD-3 editor shows the note as 100% open.

@parashu-rama
Copy link
Author

parashu-rama commented Sep 14, 2021

oops, sorry
Снимок экрана 2021-09-14 в 10 18 12
Any other test?
Снимок экрана 2021-09-14 в 15 11 38

@parashu-rama
Copy link
Author

parashu-rama commented Sep 14, 2021

what we do with TD3 slide? Shall we map it to Crave's glide or note length?

I think 100% length better
parser.c.diff.txt

@claziss
Copy link
Owner

claziss commented Sep 14, 2021

what we do with TD3 slide? Shall we map it to Crave's glide or note length?

I think 100% length better
parser.c.diff.txt

Updated as you suggested. Plus I don't check for TD3 version any longer.

@parashu-rama
Copy link
Author

Thanks!

Are you interested in parsing the uno synth patch sequence or I close this issue?

@claziss
Copy link
Owner

claziss commented Sep 14, 2021

I need to fix the obvious snafus for this implementation first. Probably it is a good idea to use something more highlevel like Python, and after that to parse the Uno too.
I'll close the issue my self.

@parashu-rama
Copy link
Author

How I can help You?

@claziss
Copy link
Owner

claziss commented Sep 14, 2021

For the time being nothing to do on your side, I will have an update soon, and then I would like to ask you to compare the sound from Crave and TD3 ;) Still decoding the last bits of TD3 seq format, and I think I've got a good idea what every filed does.

@parashu-rama
Copy link
Author

@claziss
Copy link
Owner

claziss commented Sep 14, 2021

@parashu-rama Thanks for the demo, any chance to use your TD-3 and record only the DaFunk seq in a wave and share it?
Also, please find my latest update, with the missing link ;) namely the sustain note of TB-3. I do not think, I do a good job when creating the crave sequence with sustain.

@parashu-rama
Copy link
Author

140921.m4a.zip

@claziss
Copy link
Owner

claziss commented Sep 15, 2021

I've made some mods in how to handle the TD3' sustain pitch feature. I hope it sounds good on a Crave. Anyhow, the above dafunk track looks all right although I couldn't get to much acid from my Crave.
@parashu-rama please make a new issue with the Uno sequencer, I'll check what is its format in a shot while. Cheers.

@parashu-rama
Copy link
Author

Last note length bug?
./txtdump -d I\ feel\ love.seq
Parse TD3 seq file and convert...
Swing: 50% Length 8
01:[C2 A #### ]
02:[C3 A #### ]
03:[C2 A #### ]
04:[C3 A #### ]
05:[G2 A #### ]
06:[G2 A #### ]
07:[A#3 A #### ]
08:[A#3 A ######## ]
Снимок экрана 2021-09-15 в 17 10 00

I feel love.zip

@claziss
Copy link
Owner

claziss commented Sep 15, 2021

@parashu-rama fixed

@parashu-rama
Copy link
Author

Thanks!

@parashu-rama
Copy link
Author

Probably octave mismatch 02 step?

./txtdump -t Da\ Funk.seq
Parse TD3 seq file ...
Swing: 50% Length 16
01:[G1 #### ]
02:[A#4 #### ]
03:[G2 S ######## ]
04:[F3 #### ]
05:[D#2 S A ######## ]
06:[C2 A #### ]
07:[C1 S A ######## ]
08:[C3 A #### ]
09:[D#3 S ######## ]
10:[D#1 #### ]
11:[F3 S ######## ]
12:[G3 S A ######## ]
13:[A#2 #### ]
14:[G1 S ######## ]
15:[C1 S ######## ]
16:[G2 S ######## ]

@claziss
Copy link
Owner

claziss commented Sep 20, 2021

C2 (TD3) is 0x18 (24 decimal), the second position has 0x2e value (46 decimal), hence, there are 22 pitches between the two notes:

Note Value
C2 24
C#2 25
D2 26
D#2 27
E2 28
F2 29
F#2 30
G2 31
G#2 32
A3 33
A#3 34
B3 35
C3 36
C#3 37
D3 38
D#3 39
E3 40
F3 41
F#3 42
G3 43
G#3 44
A4 45
A#4 46
B4 47

To me, the second pitch should be A#4.

@parashu-rama
Copy link
Author

I think that octave begins with C, not A
60281adc9a9727 71960019 jpg
.

@claziss
Copy link
Owner

claziss commented Sep 20, 2021

Yes, that is true, if you are considering C major scale.
I use A major scale for printing. However, the seq file should be correct. I will revert this patch

@parashu-rama
Copy link
Author

Thank you for the clarification!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants