Open303 - open source 303 emulation project - collaborators wanted

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS
JC-303

Post

antto wrote:one more odd question
PM: c c f
TM: G G G -
..: S - -
here the slide from "c" to "c" would be optimized into a "tie" like the previous example
but what happens with the third "G" .. will it take the second "c" pitch, or the "f" ?
It gets converted to:
PM: c f
TM: G O G -

So the third G (now second) is still assigned to the f pitch.

Post

ah, thanks for clearing that out Mike ;]
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!

irc.libera.chat >>> #kvr

Post

Mike Janney wrote: Also, check out ABL2's 303 style programming mode found in the preferences screen. I tried to mimic the 303 sequencer as closely as possible with the exception that I do not compact the patterns and also the time and pitch modes are more closely related. But the rules are the same.
--Mike
i never figured how that '303 style programming mode' works

doesnt it just advance on every note you enter or something?

oh btw, glad you cleared that out, seems like a whole chunk of text - patterns i'd have to read and interpret otherwise.


@ antto: good news: I'm going home a bit sooner, so I'm able to record samples if you still need any.
I'm also planning to do a test with multiple 303's, for quick comparison of the differences between each one. Any special request for that? I'm not going to spend a long time on that so maybe a quick test with min/max levels of whatever you need to hear.

Post

i'm trying to picture how the patterns are stored, it's a chip, right, it's ones and zeros, so it's digital, and it either looks like some kind of arrays or nasty binary, erm, that's the same thing..

rv0: cewl, i'm having a vacation, free from work till the end of this week (whee!) and i'll be messin with the 303 a lot now

samples? hell yes, different 303s? exactly what i needed ;P~
i'll try to make a "universal" (and yet short, if possible) test scenario for exposing the possible differencies between the units

good news: i'm currently porting the memory system of my sequencer into mIRC (as a mirc script) for experiments (to me, mIRC scripting is more convinient for testing purposes, or laying basic models of big projects)
..and i'll be working on the algorithm for converting the thing i call a "pattern" into the format you are familiar with, so i will (hopefuly) be able to exactly tell what pattern i want programmed into the 303 ;P~
and i'll probably find bugs in my algorithm when you show the samples :hihi:

btw how much time do i got before you get home?
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!

irc.libera.chat >>> #kvr

Post

@antto
i'll be home tomorrow.. situation took a rather sharp turn this morning, but i'm quite glad with it actually.
i'll be home a lot in the near future, finally able to finish some projects (YAY !!!)
studio is a mess but 303's are connected.
for the samples: please provide a fixed BPM, i'll make sure it's sample accurate by feeding it external sync from my sync soft.


dont break your head too much over the pattern storage now. you wont find it by guessing :D

Post

okay..

btw, you can enter the UDAS information _with_ the pitch?
i had the impression that patterns are entered in three steps: PM: keys, TM: time, PM: udas
but if the last step could be joined with the first, then this makes it easier to understand how it works

since adding slides after the TM is like additional modification to TM
gonna check out how Roland explain pattern creation in the manual
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!

irc.libera.chat >>> #kvr

Post

i figured, my current internal pattern format has enough "room" to store the patterns in 303 format
i think it might be possible to have both formats stored in the same pattern space
in other words, a pattern will be either type1 or type2 (modern/303)
and the sequencer will handle the two types sepparately (playing too)
it gets very interesting to see what happens if you "switch" between patterns of the two types while playing (eek!)

now, i can simply sepparate the steps into two elements, one that holds the (pitch/slide/accent) and the other that stores the (G/O/- and step length)
i'll have to reduce the pitch range to 6 bits (5 octaves) but that's not bad at all

the thing is, that i will store the pitches in the same order as how they were entered, and when the sequencer is playing the pattern, it will "pick" a note from there independantly..
so, byte2 from each step (the byte where i store the time info) will be read one by one on each step, but byte1 (where the "notes" are) will be read only when a "G" in time mode occures

i have a function in my current sequencer that reorders the steps backwards (for example) .. which is pretty simple, step1 and step16 are swapped, step2 and step15 too.. and so on
now it'll be very interesting to implement this same function, but with this 303 style pattern format
instead of moving steps, it'll have to move the whole notes+lengths, hah!

rv0: a bunch of months ago, i remember you told me about some tricky things that could be done with 303 patterns in their native format, which are impossible in our "array-of-steps" format, i didn't understand
now i begin to see what you meant ;]

EDIT: both types would be convertable too
in the 303 type, there are maximum of 16 "notes" that can be stored, but some might be left unused (depending on how many Gs are in TM)
when such a pattern is converted to the other type, the unused notes would be rearanged, and placed "inbetween"
a simple example:

Code: Select all

8 notes, i'm lazy..
PM: c d e f g a b C
TM: G O - G - G O G

this would be converted to:
[c ][--][--][d ][--][e ][--][f ]
|g.s|...|...|g..|...|g.s|...|g..

and the remaining "notes" (g,a,b,C) would be stored in the gaps
[c ][g-][a-][d ][b-][e ][C-][f ]
|g.s|...|...|g..|...|g.s|...|g..
and then, this pattern of the "modern" type can be converted back to 303 type and the result would be the same

gonna test all of this if it really works in practice (maybe i haven't had enough coffee today)
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!

irc.libera.chat >>> #kvr

Post

antto wrote:okay..

btw, you can enter the UDAS information _with_ the pitch?
i had the impression that patterns are entered in three steps: PM: keys, TM: time, PM: udas
but if the last step could be joined with the first, then this makes it easier to understand how it works

since adding slides after the TM is like additional modification to TM
gonna check out how Roland explain pattern creation in the manual
Yes, you can enter UDAS with pitch. Actually the workflow is more: Enter GO- for each step (usually 16) in time mode. In pitch mode enter pitch and UDAS for every G that the time mode has. For example, if there are 5 G's in TM then you only have to enter 5 PM notes.

--Mike

Post

super! i think i understand it now
i only need to know some little "rules" that i'm not sure of
AFAIK, a pattern cannot begin with a "O" in TimeMode
and an "O" can only exist after a "G" .. you can't have an "O" after a rest

and, um, can the last step be a slide (to the first)? not sure but i think someone mentioned this

Code: Select all

PM: c b c f(S)
TM: G G G G
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!

irc.libera.chat >>> #kvr

Post

that's all correct

Post

then what happens when the 303 makes the "optimization" ?

Code: Select all

PM: c b c f(S)
TM: G G G G 
later i change the last note to c(S)
PM: c b c f(S)
and usualy a slide to the same note gets "optimized" into a long note
..unless the other note had different Accent value
i guess the 303 sequencer used boolean variables for UDAS and comparing if a note is "the same" was easy ;P~
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!

irc.libera.chat >>> #kvr

Post

antto wrote:then what happens when the 303 makes the "optimization" ?
PM: c b c f(S)
TM: G G G G
later i change the last note to c(S)
PM: c b c f(S)
and usualy a slide to the same note gets "optimized" into a long note
..unless the other note had different Accent value
i guess the 303 sequencer used boolean variables for UDAS and comparing if a note is "the same" was easy ;P~
There is no problem having a slide on the last note, so yes, it's possible to slide to the first note of the sequence.

In the case above there will be no 'optimization' as you have as many G (start notes) as pitches, and typically you would not be able to "continue" a note on the first note of a new measure anyway. So:

G - start a new note
O - continue a note
- - pause

Post

exactly..

btw antto, i'm finally in my studio again, so requests are open!
already had the chance to record some things for myself :)
(shameless plug: http://soundcloud.com/rvooh/sorry-to-interrupt http://soundcloud.com/rvooh/2nd-interrupt)

Post

great!
got some questions:
how slow/fast can the tempo be with the external sync?
how many 303s are over there?
and IIRC you have always given me samples from one them, right?

i'll make some example patterns in my synth, with test scenarios covering different aspecst of the characters of a 303, and record them as mp3s
then i'll convert the actual patterns with my experimental converter (and they will hopefully be 1:1 exact)
then i'll make a .rar archive with each sepparate test in a sepparate directory, with the example mp3 (how it should sound like) and a text file containing the pattern(s) and instruction for knob tweeking...)
i hope that's convenient..
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!

irc.libera.chat >>> #kvr

Post

rv0: i'm done with the first few requests
tests_001.rar (8MB)

i've included the txt files with the instructions for each setup, and the example mp3s (if you suspect that my patterns were wrong or something..)
and, i left the actuall patterns (in NSP format) too

so, i first programmed the patterns in my synth, then exported them to NSP, and then i used my experimental converter, it kinda looks bugfree now, but you never know.. ;]
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!

irc.libera.chat >>> #kvr

Post Reply

Return to “DSP and Plugin Development”