Getting chaos-0.2 to run in Purr Data
edit: solved
[gme~] / [gmes~] - Game Music Emu
Allows you to play various game music formats, including:
AY - ZX Spectrum/Amstrad CPC
GBS - Nintendo Game Boy
GYM - Sega Genesis/Mega Drive
HES - NEC TurboGrafx-16/PC Engine
KSS - MSX Home Computer/other Z80 systems (doesn't support FM sound)
NSF/NSFE - Nintendo NES/Famicom (with VRC 6, Namco 106, and FME-7 sound)
SAP - Atari systems using POKEY sound chip
SPC - Super Nintendo/Super Famicom
VGM/VGZ - Sega Master System/Mark III, Sega Genesis/Mega Drive,BBC Micro
The externals use the game-music-emu library, which can be found here: https://bitbucket.org/mpyne/game-music-emu/wiki/Home
[gme~] has 2 outlets for left and right audio channels, while [gmes~] is a multi-channel variant that has 16 outlets for 8 voices, times 2 for stereo.
[gmes~] only works for certain emulator types that have implemented a special class called Classic_Emu. These types include AY, GBS, HES, KSS, NSF, SAP, and sometimes VGM. You can try loading other formats into [gmes~] but most likely all you'll get is a very sped-up version of the song and the voices will not be separated into their individual channels. Under Linux, [gmes~] doesn't appear to work even for those file types.
Luckily, there's a workaround which involves creating multiple instances of [gme~] and dedicating each one to a specific voice/channel. I've included an example of how that works in the zip file.
Methods
- [ info ( - Post game and song info, and track number in the case of multi-track formats
- this currently does not include .rsn files, though I plan to make that possible in the future. Since .rsn is essentially a .rar file, you'll need to first extract the .spc's and open them individually.
- [ path ( - Post the file's full path
- [ read $1 ( - Reads the path of a file
- To get gme~ to play music, start by reading in a file, then send either a bang or a number indicating a specific track.
- [ goto $1 ( - Seeks to a time in the track in milliseconds
- Still very buggy. It works well for some formats and not so well for others. My guess is it has something to do with emulators that implement Classic_Emu.
- [ tempo $1 ( - Sets the tempo
- 0.5 is half speed, while 2 is double. It caps at 4, though I might eventually remove or increase the cap if it's safe to do so.
- [ track $1 ( - Sets the track without playing it
- sending a float to gme~ will cause that track number to start playing if a file has been loaded.
- [ mute $1 ... ( - Mutes the channels specified.
- can be either one value or a list of values.
- [ solo $1 ... ( - Mutes all channels except the ones specified.
- it toggles between solo and unmute-all if it's the same channel(s) being solo'd.
- [ mask ($1) ( - Sets the muting mask directly, or posts its current state if no argument is given.
- muting actually works by reading an integer and interpreting each bit as an on/off switch for a channel.
- -1 mutes all channels, 0 unmutes all channels, 5 would mute the 1st and 3nd channels since 5 in binary is 0101.
- [ stop ( - Stops playback.
- start playback again by sending a bang or "play" message, or a float value
- [ play | bang ( - Starts playback or pauses/unpauses when playback has already started, or restarts playback if it has been stopped.
- "play" is just an alias for bang in the event that it needs to be interpreted as its own unique message.
Creation args
Both externals optionally take a list of numbers, indicating the channels that should be played, while the rest get muted. If there are no creation arguments, all channels will play normally.
Note: included in the zip are libgme.* files. These files, depending on which OS you're running, might need to accompany the externals. In the case of Windows, libgme.dll almost definitely needs to accompany gme(s)~.dll
Also, gme can read m3u's, but not directly. When you read a file like .nsf, gme will look for a file that has the exact same name but with the extension m3u, then use that file to determine track names and in which order the tracks are to be played.
Multiple track audio to MIDI signal
Hi!
Well first of all I should say that I'm very new to Pure Data, and this is the first time I'm using it on a real project. It's still a bit confusing for me, and there is a kind of complicated setup for what I'm trying to do,
Short question (my take on the issue):
Is there a way to assign a Pd patch to separate tracks in a DAW,? Like making the patch into a plugin.
Or is there an audio device that I can use with my DAW that supports multiple output channels, so I can assign each track to the desired patches within Pd.
Long explanation:
For this project I'm building a live music+visuals set with a band. I use a DAW to receive the sound of a full band via mic and line inputs on an USB interface. I also use a built-in sampler and synthesizer to play on certain songs and interact with the band, while sometimes also playing plain audio files that are too on separate tracks.
For the visuals I use Resolume Arena. As I kind of also play in the band (with the synth and the sampler), I need to be able to operate the visuals in a very simple yet interesting way, so audio-responsive effects are a nice option. I want to be able to assign as many parameters as I can to be responsive to the individual audio tracks that come from the band and my instrument. So my idea is to use the MIDI mapping feature on Resolume, which gives me many options.
On Pd I found a patch that takes audio signals and interprets them via [fiddler~] giving out MIDI. Now I only need to assign individual instances of the patch to individual tracks, and then restrict each of their MIDI output signals to a different note range so I can map them to Resolume.
In a perhaps less confusing way, this is what I need:
Starting point: live audio feed and audio files on DAW tracks
Ending result: A distinct MIDI signal for each track.
I hope this is understandable. If you can come up with any other way of achieving the main goal of this proyect (make audio responsive visuals on Resolume via MIDI mapping) and would like to share it, I would really appreciate your ideas.
Thanks in advance for your help!
New here
Mua Bán đất Đà Nẵng giá rẻ - Những điều bạn chưa biết
Đừng phớt lờ những điều này khi giao dịch mua Bán đất Đà Nẵng giá rẻ
Như chúng ta đã biết, giao dịch mua Bán đất tại Đà Nẵng - Tinbatdongsan247.net là một việc quan trọng. Bởi nó liên quan đến đầu tư, sinh sống lâu dài cũng như phải chi một khoản tiền lớn. Vì vậy việc cẩn trọng trong những phi vụ như thế này không bao giờ là thừa. Và dưới đây là những điều bạn cần quan tâm để có những giao dịch thành công nhất.
Những giấy tờ cần thiết khi mua bán đất Đà Nẵng giá rẻ
Bất kỳ giao dịch nào, việc chuẩn bị những giấy tờ, hồ sơ cần thiết là vô cùng quan trọng. Nó không chỉ giúp bạn tiết kiệm thời gian, mà còn thể hiện uy tín của bản thân bạn. Và giao dịch mua bán đất rẻ ở Đà Nẵng lại càng phải như vậy. Vì giao dịch này có thể sẽ còn tiếp tục sau này, hoặc bạn muốn giới thiệu cho bạn bè. Để không đến lúc tìm được mối mới bắt đầu chuẩn bị sẽ lỡ nhiều cơ hội tốt.
Khi mua bán đất Đà Nẵng giá rẻ cần chuẩn bị thật kỹ giấy tờ
Những giấy tờ mà bạn cần quan tâm đến bao gồm: Hợp đồng chuyển nhượng quyền sử dụng nhà đất. Đây là văn bản quan trọng thể hiện giao dịch Mua bán đất tại Đà Nẵng của bạn thành công. Cùng với đó là giấy chứng nhận quyền sử dụng nhà đất. Tài liệu này chứng minh người bán là chủ sở hữu thực sự của miếng đất bạn mua. Để hiểu rõ những văn bản này bạn có thể tham khảo các khoản 1, 2 và 5 Điều 50 Luật đất đai.
Cách tiếp cận khách hàng nhanh nhất cho người bán đất Đà Nẵng giá rẻ
Đối với một nhà bán đất, thì việc tiếp cận bước đầu với khách hàng là rất quan trọng. Tuy nhiên đây vẫn chưa phải là bước đầu tiên bạn cần làm. Mà bước đầu chính là định giá đất cần bán đất rẻ ở Đà Nẵng. Bạn có thể tự định giá dựa theo kinh nghiệm của bản thân. Nhưng nếu không chắc chắn hãy nhờ đến các chuyên gia môi giới.
Sau khi đã xác định được giá nên bán, bạn sẽ tiến hành đăng tin rao bán đất rẻ tại Đà Nẵng đất trên các trang online. Mạng xã hội luôn được nhiều người quan tâm, và sẽ dễ tiếp cận khách hàng hơn. Bạn nên lựa chọn những trang web có lượng truy cập lớn để rao bán. Đồng thời biên tập nội dung hấp dẫn, thêm hình ảnh rõ nét về lô đất để thu hút khách hàng.
Đừng quên tham khảo giá trước khi mua bán
Cách mua được những lô đất tốt theo ý muốn của mình
Còn nếu là người mua, bạn hãy thể hiện mình là một người vui vẻ, khéo léo trong thương lượng. Thể hiện ấn tượng tốt sẽ tạo nên không khí thoải mái, dễ giao dịch. Về lựa chọn đất tốt, bạn cần chú ý đến giao thông khu vực, thuận tiện đi lại. Đồng thời để ý các tiện ích xung quanh cũng như tìm hiểu về người Ban dat tai Da Nang gia re thật kỹ.
Bạn nên mua từ những người đang cần tiền gấp, họ dễ thương lượng và bán đất rẻ tại Đà Nẵng nhanh. Còn nếu không xác định được liệu họ cần bán gấp hay không thì hãy chú trọng những yếu tố khác. Bước tiếp theo là khảo sát giá đất xung quanh, để tránh bị mua hớ.
Đó là những lưu ý khi mua bán đất Đà Nẵng giá rẻ dành cho người bán lẫn người mua. Vì vậy, đừng phớt lờ những lời khuyên hữu ích này nhé! Chúc bạn sẽ có những giao dịch thành công.
Purr Data Linux-64 and GEM?
Ok, here in Puppy-Linux apt-get is not installed.
Now I installed libftgl2_2.1.3 successfully with the package manager.
Doing the same as before
[Gem] creates! Yes!
In the commandline (linux-console) [shortened]:
pd-l2ork -noprefs -nostdpath -nrt -verbose
Pd-L2Ork version 2.4.6 (20171213-rev.46ffba3)
compiled 22:30:53 Dec 13 2017
port 5401
guidir is /usr/lib/pd-l2ork/bin
"/usr/lib/pd-l2ork/bin"/nw/nw --user-data-dir="/root/.config/purr-data" "/usr/lib/pd-l2ork/bin" 5401 localhost pd-l2ork "/usr/lib/pd-l2ork/bin" xf3c100Waiting for connection request...
[0426/002010.733670:WARNING:chrome_main_delegate.cc(565)] final extension:
... connected
/etc/pd/gem.conf: No such file or directory
/root/.config/pure-data/gem.conf: No such file or directory
./gem.conf: No such file or directory
load plugins 'film' in '/usr/lib/pd-l2ork/extra/Gem/'
pattern : /usr/lib/pd-l2ork/extra/Gem/gem_film*.so
dylib loading file '/usr/lib/pd-l2ork/extra/Gem/gem_filmAVIPLAY.so'!
library loading returned: dlerror 'libaviplay-0.7.so.0: cannot open shared object file: No such file or directory'
dylib loading file '/usr/lib/pd-l2ork/extra/Gem/gem_filmGMERLIN.so'!
library loading returned: dlerror 'libgmerlin_avdec.so.1: cannot open shared object file: No such file or directory'
dylib loading file '/usr/lib/pd-l2ork/extra/Gem/gem_filmMPEG3.so'!
library loading returned: dlerror 'libmpeg3.so.2: cannot open shared object file: No such file or directory'
dylib loading file '/usr/lib/pd-l2ork/extra/Gem/gem_filmQT4L.so'!
library loading returned: dlerror 'libquicktime.so.2: cannot open shared object file: No such file or directory'
[...]
dylib loading file '/usr/lib/pd-l2ork/extra/Gem/gem_imageMAGICK.so'!
library loading returned: dlerror 'libMagick++-6.Q16.so.5: cannot open shared object file: No such file or directory'
[...]
dylib loading file '/usr/lib/pd-l2ork/extra/Gem/gem_imageMAGICK.so'!
library loading returned: dlerror 'libMagick++-6.Q16.so.5: cannot open shared object file: No such file or directory'
[...]
dylib loading file '/usr/lib/pd-l2ork/extra/Gem/gem_recordQT4L.so'!
library loading returned: dlerror 'libquicktime.so.2: cannot open shared object file: No such file or directory'
[...]
There are some more libs missing, maybe I should install them too?
All the examples of Gem seem to work now!
Even the teapod and openGL stuff.
And my final patches, also work. So nice!
Now I will review what those flags actually do:
https://puredata.info/docs/faq/commandline
But I am wondering, if I was lucky, that Gem is programmed for printing messages in the commandline and other non-working libraries probably won't do so?
Thank you so much
Trying to build a basic neural net with ann
Ok. Ive been experimenting for 2 weeks now. It's easy to train the net to recognize a shape from a stream of data. The net will look for "clues" en output something in regards of those clues.
In the following patch, I train a net to recognize a shape N N+1 N N+1 (ex: 1212, 2323, 3434 ... ).
If this shape is recognize, the net output 0 1, in the other case, 1 0.
The training is made with number from 0 to 7.
I train with random exemples of N N+1 N N+1, mixed with totally random string of number.
The training goes well, and after little time the net is perfectly capable of making the différence between the shape and a random string.
I extend with number from 8 to 40, and it apears that the net still can identify the shape, outside of the training field, until something like 29 30 29 30.
I decide to make things a little harder, and i generate N N+1 N R string (r being a random number).
This is still the good shape for him ! not realy for me. I keep going, and try with R N+1 N R.
And after considering the results, I come to the conclusion the net recognize the good shape for any string of three digits like: N N+ 1 R<N+1
Conclusion: training is a fine art !
Patch: AnnTrainer.pd
Final Solution: Anyone looking to control Ableton Live...easily
Hi All
A little bit of work to set up but forget midi mapping...google it if you dont believe me.
After a lot of time spent trying to get a simple but sophisticated way (using a minimal 8 button floorboard) to control Live on w10, I thought I would share this particular solution to possibly help others (especially after the help offered here on this forum). I tried a number of scenarios, even buying Max 4 Live, but it turns out a lot simpler than that. It needs 3 main areas set
FOOT CONTROLLER BEHAVIOURS/GESTURES
Create pd patch that gives you 'behaviours' per switch. Ill be happy to share mine but Im just cleaning them up atm.
eg I have 4 standard behaviours that dont take too much time to master
- Action A: A quick click (less than 500ms) Always the primary action
- Action B: Long click ie 1 click down and pedal up after 500ms. I use this eg always as a negative ramp down for things like lowering volume but if its just held down and released in a natural way, it is the secondary action of the switch
- Action C: 3 Click ie 1 quick down, up and then hold down. I use this for a positive ramp eg as volume up
4 Actiion D: Double click, Always a cancel
These are all mapped to note/ctrl outs that match the 'Selected Track Control' below
PLUGIN
Use PD VST to create a plugin version of your patch. This is loaded into Live as a control track. Live manages the connection of your floor board etc into the actual track so you dont wrestle with the io. I always use track 1 for click (forget Live metronome, this is much more flexible and can have feel/swing etc) so I dedicate track 2 to control.
Use LoopMIDI to create a virtual midi cable that will go from this track and be fed into the remote script.
REMOTE SCRIPT: 'Selected Track Control'
Download latest from http://stc.wiffbi.com/
Install to live and make sure your notes/control conform.
Enable this as a control surface in live and connect midi in from the plugin. Think about giving the guy a donation...massive amount of work and he deserves it!
I use it to control 8 tracks x 8 scenes and is controlled by 3 switches
- Scene control up and down (A = down, B = up)
- Track control same as scene
- Rec/Fire/Undo Volume up and down (A = fire/rec, B = Volume Down, C = Volume Up, D (Dbl Click) = Undo
The scenes and tracks wrap so there isnt too much foot tapping
There is quite a bit more to it of course...its and maybe no one else needs this but it would have saved me a couple of weeks of time so Im happy to help anyone wanting to achieve gigging without a massive floor rig and an easy way to map and remember.
HTH someone
Cheers
mark
Purr Data 2.3.3
did not work
terminal content:
MacBook-Pro-de-Federico:~ federicocogo$ plutil -convert json -r -o - ~/Library/Preferences/org.puredata.pd-l2ork.plist | sed -E -e 's/[{}]//g' -e 's/^ "(([^"]|\.))" : "(([^"]|\.))"./\1: \3/' -e 's/\(.)/\1/g'
path31: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/ekext
loadlib8: list-abs
loadlib14: motex
rate: 44100
loadlib28: jmmmp
path5: /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/fonts
path11: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/list-abs
nomidiin: True
loadlib17: pdogg
path14: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/maxlib
nloadlib: 35
path17: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/motex
noaudioin: False
nomidiout: True
audiobuf: 20
loadlib32: ekext
callback: 0
path20: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/pdogg
audiooutdev1: 0 2
path23: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/sigpack
noaudioout: False
path26: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/pan
loadlib21: sigpack
path6: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/cyclone
loadlib35: lyonpotpourri
path29: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/ext13
savezoom: 0
loadlib3: cyclone
loadlib10: markex
loadlib24: vbap
loadlib6: cxc
guipreset: default
path32: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/disis
audioindev1: 0 2
loadlib13: mjlib
loadlib27: hcs
loadlib9: mapping
path1: /System/Library/Fonts
npath: 33
loadlib16: pddp
path12: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/mapping
path7: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/zexy
path15: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/memento
path18: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/oscx
loadlib19: pmpd
flags: -helppath ~/Library/Pd-l2ork -helppath /Library/Pd-l2ork
loadlib31: iem_anything
midiapi: 4
path21: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/pixeltango
path2: /Library/Fonts
path24: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/smlib
loadlib34: disis
loadlib20: rradical
path27: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/hcs
path8: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/creb
loadlib1: libdir
nmidiin: 0
loadlib23: unauthorized
loadlib4: zexy
path30: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/ggee
loadlib12: memento
loadlib7: iemlib
loadlib26: freeverb~
path33: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/lyonpotpourri
loadlib15: oscx
naudioin: 1
loadlib29: ext13
path10: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/iemlib
verbose: 0
path3: ~/Library/Fonts
path13: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/markex
path9: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/cxc
loadlib18: pixeltango
path16: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/mjlib
path19: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/pddp
defeatrt: 0
naudioout: 1
loadlib30: ggee
blocksize: 64
path22: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/rradical
loadlib33: pdp
standardpath: 1
path25: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/unauthorized
path4: /usr/X11R6/lib/X11/fonts/TTF
nmidiout: 0
path28: /Applications/Pd-l2ork.app/Contents/Resources/app.nw/extra/jmmmp
loadlib22: smlib
loadlib2: Gem
loadlib5: creb
audioapi: 4
loadlib25: pan
loadlib11: maxlib
MacBook-Pro-de-Federico:~ federicocogo$
Permutations, second part, can anybody get this patch to work?
@Ale-H.H. OK....... You are going to have to trust me on this.
This took about an hour to build........ but you can now expand it in seconds.
Abstractions are a powerful tool......... but to build them you need to understand the use of variables ($0 $1 $2......etc.)..
NEW2.zip
PLEASE NOTE>>!!
Any abstraction can be copied and pasted......... .So if you want more oscillators within a [voice_gen] just copy/paste a [part_voice] within a [voice_gen] and give it a new number [part_voice $1 "x"]...... Change the pasted one's Name to [part_voice $1 "new voice number").......
It will need a timbre curve as well.... so open the relevant [timbre_gen"y"] and put a new [part_timbre $1 $2 "x"] make a new volume curve $1-$2-x by copy/pasting an existing one...draw a new curve....... and save the main [voice_gen] abstraction once you are happy.
BEWARE>>!!
1..... the [timbre_gen"x"] need to be saved individually because they contain the timbre sub-curves. They cannot be used as true abstractions (they must have separate names). If you decide you want a new timbre curve for something then copy and paste an old [timbre_gen"x"], changing its name........ then change the sub-curves and re-save the file.
((this could be done better by writing data out to text files, but I don't have the time now to implement that..... this solution works.......))
2.... If you add more oscillators to a voice then you will end up with some producing ultra-sonics. If you will need to specify some new relationship between the oscillators (other than x2,x3 etc. you can do that by changing the 2nd argument for the oscillators.... i.e. [part_voice $1 0.5] etc.
Don't forget to put the "0.5" in a corresponding [part_timbre] and it's graph....!
HOWEVER>>!!
I cannot help you to do this without abstractions..... it would be too difficult and too messy.
You are absolutely going to have to understand them for a project like this that is going to become very complex very fast.
See here for some help........ https://forum.pdpatchrepo.info/topic/9774/pure-data-noob/4
You will not have wasted your time.
The future benefit will be enormous...... as any sudden new idea for your patch can be working 100% just a few minutes later!.
You should probably print this post before you start playing with the patch.
And please do not despair.
You will, probably after a good nights sleep, have a $ eureka moment...... and from then on you will find patching in Pd as easy as Pi....... or is that Pie?.....
New2.zip should be working...... there is nothing clever or unusual.
I might not get time to help for a couple of days. If I get time to integrate a state saving system then I will integrate each [part_timbre] into each [part_voice] and the patching will become even easier.
You have 2 days to get familiar with this way of working...........
David.
Playing sound files based on numbers/sets of numbers?
@Alexita Hello again. You don't absolutely need abstractions, but they make the building of the patch much quicker (a lot less typing). Putting 2 or 3 digit numbers is more difficult.... I will think about that. Stopping with a second enter will be possible.
The patch is already able to play only a selection of the 17 tracks...... although they must all "exist".
If the tracks are in the same folder as the patch the paths are not necessary, so it becomes much more portable.
But portable on a flash drive means putting Pd on the flash drive as well (in a portable format), and the tracks as well........ so a big enough flash drive. I am assuming that the computer the flash drive will be plugged into will not have Pd already installed. Will it always be a PC? or a Mac? or Linux? Or will it have some flavour of Pd installed already? That would be useful.
It will be much easier to build with abstractions if the tracks are named 1.wav, 2.wav, 3........ 17.wav.
What are the two, three and four digit numbers? How do they choose between the 17 files? 1-17 is easily understandable. Can you post a "table" of what they should be........ like?
1 - 33
2 - 41
3 - 123
4 - 18
5 - 6072
or is there supposed to be some sort of a random function...... where you are not really selecting at all? The task makes no sense to me with this requirement (at the moment). You would need to remember the 17 large numbers!
I will post an abstraction version, assuming all of the tracks in the same folder. A "sub" folder is easy as well (for the tracks).
............................ 17 tracks with loop abstractions.zip ...... now in "loop" mode already when it starts.
I have added metering, just for fun.
You must put 17 tracks named 1.wav ... 17.wav in the same folder.
The keyboard numbers 1 - 9 will work (for the moment, and for the first 9 tracks)
David.
PS..... looking for a pattern...... anyone?
Assuming...... only keys 1-9 or 0-9 used.
Of course! It's easy......... if 0 is not allowed
2 digits..... minimum total 2 max 18........ range 17
3 digits......minimum total 3 max 27........ divide by 1.5 and subtract (about) 1........ range 17
4 digits......minimum total 4 max 36........ divide by 2 and subtract (about) 1........ range 17
Need to round up or down..... look at results.....
For now.... 17 tracks loop enter start stop.zip starts and stops (stops tracks dead.... should the sequence complete?) with enter.
David.