just in case, some arduino clone are not working with this shield. But what is strange is for me, the official arduino board is not working either... (yet the official one work for synthy). Maybe it's just mine...
Anyway, the dccduino clone is working well for me.

Do you think it could be possible to make the shield play VGM files (such as the ones exported from DefleMask). I've found a mdx player (about mdx: https://github.com/vampirefrog/mdxtools … cs/MDX.md) there: http://www.ooishoo.org/?page_id=15
I'll try to test it asap.

@masi: it would be great! (both converter and multiple voices)

275

(11 replies, posted in Software & Plug-ins)

Sunvox is very powerful. On your tablet, you'll get the same interface as on the desktop. The desktop version (linux, mac, windows) version is free as in free beer, the tablet / smartphone version is not free, but quite cheap. Sunvox can't export to old computer & console format (like Deflemask, goattracker, famitrackrt can do) but I don't think Caustic can either.

I've never used caustic, so I don't know if sunvox can be more suitable at making chiptune like sounds, but you can first try to get the desktop version of sunvox. I think it's rather easy to use and intuitive, even if the interface can look complicated.

276

(50 replies, posted in Other Hardware)

Probably you can contact them through the kickstarter comment system?

cyberic wrote:

Hello garvalf, could you please share the converter script?
it's great!
Thx

sure.

It's not very clean or use-friendly at the moment, but here is what I did:

First, find some vopm instruments (or design them yourself with the vst plugin, but it's probably easier to use the Ctrlr tool made by synthy if it's for this purpose).

The cool thing is you can find some 1300 instruments (or games) packed from this link: https://www.youtube.com/watch?v=EKQDpWZWIDU (which link to there: http://www.mediafire.com/download.php?od9s1zgbk4ig125)

The vopm will export to something like that:

LFO: 0 0 0 0 0
CH: 64 7 2 0 0 120 0
M1: 31 6 0 1 1 33 2 0 3 0 0
C1: 28 5 0 5 5 37 2 3 3 0 0
M2: 27 31 0 3 0 31 1 0 3 0 0
C2: 13 3 0 6 0 25 1 0 3 0 0

copy it to a vopm.txt file.

Then you can use this vopm2arduino script:

cat vopm.txt |\
perl -pe 's|LFO:\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*|LFRQ = \1;\n\/\/AMS = \2;\n\/\/PMS = \3;\nLWav = \4;\nNFRQ = \5;\n|' | \
perl -pe 's|CH:\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*|PA = \1;\nFB = \2;\nCON = \3;\nAMS = \4;\nPMS = \5;\nLMod = \6;\nNoise = \7;\n|' |\
perl -pe 's|M1:\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*|AR[0] = \1;\nD1R[0] = \2;\nD2R[0] = \3;\nRR[0] = \4;\nD1L[0] = \5;\nTL[0] = \6;\nKS[0] = \7;\nMUL[0] = \8;\nDT1[0] = \9;\nDT2[0] = 000;\n\/\/AMS-EN = \g11;\n|' |\
perl -pe 's|C1:\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*|AR[1] = \1;\nD1R[1] = \2;\nD2R[1] = \3;\nRR[1] = \4;\nD1L[1] = \5;\nTL[1] = \6;\nKS[1] = \7;\nMUL[1] = \8;\nDT1[1] = \9;\nDT2[1] = 000;\n\/\/AMS-EN = \g11;\n|' |\
perl -pe 's|M2:\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*|AR[2] = \1;\nD1R[2] = \2;\nD2R[2] = \3;\nRR[2] = \4;\nD1L[2] = \5;\nTL[2] = \6;\nKS[2] = \7;\nMUL[2] = \8;\nDT1[2] = \9;\nDT2[2] = 000;\n\/\/AMS-EN = \g11;\n|' |\
perl -pe 's|C2:\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*|AR[3] = \1;\nD1R[3] = \2;\nD2R[3] = \3;\nRR[3] = \4;\nD1L[3] = \5;\nTL[3] = \6;\nKS[3] = \7;\nMUL[3] = \8;\nDT1[3] = \9;\nDT2[3] = 000;\n\/\/AMS-EN = \g11;\n|' 
# remplace 000 by \g10 with perl 22

in my current pearl implementation, \g10 is not supported, but this DT2 is not much used so it's not a problem.

The script will output to the terminal, which you can redirect to a file. Then copy/paste this output to a DefaultInstrument.h file you can put into your arduino project (midi_in_ym2151).
Call this file (#include "DefaultInstrument.h";) from the part after:

   sysexValue[5] = 59;
   sysexValue[6] = 15-RR[3];
   MIDI.sendSysEx(8,sysexValue, true);

and before

 YM2151.write(0x0f,(Noise<<8) + NRFQ);

When you compile the arduino sketch, it will make the instrument defined in the vopm.txt file as default. You can still alter this with the ctrlr panel. The problem is it's quite tedious to change from one instrument to an other (you have to compile the sketch). You also cannot output from the perl script to the DefaultInstrument.h file, because the arduino IDE doesn't reload if you modify the file externally. You can problably compile it with avrdude directly.

i've tried a few instruments from famous games, and compare them with the original songs, and they sound very close, so it's quite great. It would be even cooler if it could change the values into to ctrlr panels

So I've thought it would be better to use SysEx to change the values on the fly (it's what Ctrlr does by the way).

I made another script, for converting to SysEx:

cat vopm.txt | \
perl -pe 's|LFO:\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*|\
 printf("F0 00 00 00 00 08 ") ; printf("%x ",$1*2) ; printf("F7 "); printf("F0 00 00 00 00 07 ") ; printf("%x ",$4) ; printf("F7 "); printf("F0 00 00 00 00 06 ") ; printf("%x ",$6) ; printf("F7 ");  |e' | \
perl -pe 's|CH:\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*| printf("F0 00 00 00 00 09 ") ; printf("%x ",$1) ; printf("F7 "); printf("F0 00 00 00 00 01 ") ; printf("%x ",$2) ; printf("F7 "); printf("F0 00 00 00 00 0B ") ; printf("%x ",$3) ; printf("F7 "); printf("F0 00 00 00 00 04 ") ; printf("%x ",$4) ; printf("F7 "); printf("F0 00 00 00 00 05 ") ; printf("%x ",$5) ; printf("F7 "); printf("F0 00 00 00 00 0A ") ; printf("%x ",$6) ; printf("F7 "); printf("F0 00 00 00 00 03 ") ; printf("%x ",$7) ; printf("F7 "); |e' |\
perl -pe 's|M1:\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*|printf("F0 00 00 00 00 18 ") ; printf("%x ",$1) ; printf("F7 "); printf("F0 00 00 00 00 19 ") ; printf("%x ",$2) ; printf("F7 "); printf("F0 00 00 00 00 1B ") ; printf("%x ",$3) ; printf("F7 "); printf("F0 00 00 00 00 1D ") ; printf("%x ",$4) ; printf("F7 "); printf("F0 00 00 00 00 1C ") ; printf("%x ",$5) ; printf("F7 "); printf("F0 00 00 00 00 16 ") ; printf("%x ",$6) ; printf("F7 "); printf("F0 00 00 00 00 17 ") ; printf("%x ",$7) ; printf("F7 "); printf("F0 00 00 00 00 15 ") ; printf("%x ",$8) ; printf("F7 "); printf("F0 00 00 00 00 14 ") ; printf("%x ",$9) ; printf("F7 "); printf("F0 00 00 00 00 1A ") ; printf("%x ",00) ; printf("F7 "); |e' |\
perl -pe 's|C1:\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*|printf("F0 00 00 00 00 22 ") ; printf("%x ",$1) ; printf("F7 "); printf("F0 00 00 00 00 23 ") ; printf("%x ",$2) ; printf("F7 "); printf("F0 00 00 00 00 25 ") ; printf("%x ",$3) ; printf("F7 "); printf("F0 00 00 00 00 27 ") ; printf("%x ",$4) ; printf("F7 "); printf("F0 00 00 00 00 26 ") ; printf("%x ",$5) ; printf("F7 "); printf("F0 00 00 00 00 20 ") ; printf("%x ",$6) ; printf("F7 "); printf("F0 00 00 00 00 21 ") ; printf("%x ",$7) ; printf("F7 "); printf("F0 00 00 00 00 1F ") ; printf("%x ",$8) ; printf("F7 "); printf("F0 00 00 00 00 1E ") ; printf("%x ",$9) ; printf("F7 "); printf("F0 00 00 00 00 24 ") ; printf("%x ",00) ; printf("F7 "); |e' |\
perl -pe 's|M2:\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*|printf("F0 00 00 00 00 2C ") ; printf("%x ",$1) ; printf("F7 "); printf("F0 00 00 00 00 2D ") ; printf("%x ",$2) ; printf("F7 "); printf("F0 00 00 00 00 2F ") ; printf("%x ",$3) ; printf("F7 "); printf("F0 00 00 00 00 31 ") ; printf("%x ",$4) ; printf("F7 "); printf("F0 00 00 00 00 30 ") ; printf("%x ",$5) ; printf("F7 "); printf("F0 00 00 00 00 2A ") ; printf("%x ",$6) ; printf("F7 "); printf("F0 00 00 00 00 2B ") ; printf("%x ",$7) ; printf("F7 "); printf("F0 00 00 00 00 29 ") ; printf("%x ",$8) ; printf("F7 "); printf("F0 00 00 00 00 28 ") ; printf("%x ",$9) ; printf("F7 "); printf("F0 00 00 00 00 2E ") ; printf("%x ",00) ; printf("F7 "); |e' |\
perl -pe 's|C2:\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*(\d+)\s*|printf("F0 00 00 00 00 36 ") ; printf("%x ",$1) ; printf("F7 "); printf("F0 00 00 00 00 37 ") ; printf("%x ",$2) ; printf("F7 "); printf("F0 00 00 00 00 39 ") ; printf("%x ",$3) ; printf("F7 "); printf("F0 00 00 00 00 3B ") ; printf("%x ",$4) ; printf("F7 "); printf("F0 00 00 00 00 3A ") ; printf("%x ",$5) ; printf("F7 "); printf("F0 00 00 00 00 34 ") ; printf("%x ",$6) ; printf("F7 "); printf("F0 00 00 00 00 35 ") ; printf("%x ",$7) ; printf("F7 "); printf("F0 00 00 00 00 33 ") ; printf("%x ",$8) ; printf("F7 "); printf("F0 00 00 00 00 32 ") ; printf("%x ",$9) ; printf("F7 "); printf("F0 00 00 00 00 38 ") ; printf("%x ",00) ; printf("F7 "); |e' | perl -pe 's|\s(\d{1}?)\s| 0$1 |g' | perl -pe 's|\s([abcdef])\s| 0$1 |g'  
# remplace 00 in printf("%x ",00) by $10 with perl 22
# 

Again, it output to the console, whic you can redirect to a sysex.txt file.
And you can send the sysex to the shield by using the amidi command line:

amidi -p hw:0 -S 'F0 00 00 00 00 0B 05 F7 F0 00 00 00 00 16 00 F7 etc.'

Then, after we send the values, the shield remains silent. We can get the sound if we reset the arduino. But then, the sound is not very accurate. I hadn't tested enough but I think it doesn't work, or it sends partial data. Maybe i made a mistake in the values in the script, or it's too much data at the same time...

I've made a last script, which convert the whole bunch of data from the systex.txt file to a one operation at a time:

cat sysex.txt | perl -pe 's|\s(\d{1}?)\s| 0$1 |g' | perl -pe 's|\s([abcdef])\s| 0$1 |g' | \
perl -pe "s/F0(.*?)F7/amidi -p hw:0 -S 'F0\1F7'\n/g"

so we get something like that at the end:

amidi -p hw:0 -S 'F0 00 00 00 00 36 0d F7'
amidi -p hw:0 -S 'F0 00 00 00 00 37 03 F7'
amidi -p hw:0 -S 'F0 00 00 00 00 39 00 F7'
amidi -p hw:0 -S 'F0 00 00 00 00 3B 06 F7'

but it's not better...

please tell me if you can improve this...

(getting multivoice would be cool as well)

I got this shield. You get all the necessary code with it (you need it anyway to upload to your arduino board, which is not provided).
I also made a (linux) shell script which can convert from the instruments format for the VOPM vst to this board (you can find packs of instruments ripped from hundreds of games)

279

(14 replies, posted in General Discussion)

funny, I was thinking, "how many chiptune musicians from Sweden... ? probably around 300", the I checked this: http://csdb.dk/browse.php?grouptype_id=0&countries[]=205&type=sceners&profession_id=7&releasetype_id=0&eventtype_id=0&bbstype_id=0&sidtype_id=0&browsesub=Browse!
and there are 299 using C64 (and probably the remaining 1 using Atari ST wink ). Anyway, even if there are 500, that would me it could be potentially 10-20 people making chiptune in Iceland, and there are probably less in reality. In France, which is 5-6 time the size of Sweden, on csdb there are only 14 people using C64 (probably more using ldsj on nintendo).
In my area, which is similar in population size, I know no one interested in chiptunes or making it...

As you said, it's different computer cultures...

280

(14 replies, posted in General Discussion)

with 330 000 inhabitants living in Iceland, you can't expect to get hundreds of chiptune artists coming from this country...
I'd like to live there for sure...

281

(10 replies, posted in Atari)

Have you seen this btw:
http://www.avray.ru/

It sounds great, but it lacks informations how to build and set this up...

Too fast playback is generally what I get when the pulseaudio sh*** it getting unstable (but hopefully for you, you don't use it). On the other hand, I don't remember getting slower playback. Is it very fast / very slow, or just a bit (like 10%) faster?

Are you sure you haven't messed up with the 1X / 2X option on the upper bar, on the right (between HR: and F12 = help). It will change the replay speed.

> So what does chiptune sound like?

music produced by a chip?

284

(17 replies, posted in General Discussion)

Really, nothing there which is sounding worse than today's standards such as beyonce, bieber or something from MySpace in 2008...

Also I'm amazed that google's bot don't feel more sympathy for electronic music...

285

(17 replies, posted in General Discussion)

https://www.youtube.com/watch?v=wZZ7oFKsKzY wink

286

(17 replies, posted in General Discussion)

https://www.youtube.com/watch?v=wZZ7oFKsKzY

287

(17 replies, posted in General Discussion)

https://www.youtube.com/watch?v=wZZ7oFKsKzY

288

(14 replies, posted in Nintendo Handhelds)

WOW yikes:O:O
That's so cooool!!
The music is great as usual, you're going against the current and trends and I like that. We'll all hooked on your video for sure...

I'm sure next year you'll be able to discover the 5th channel on Houston Tracker as well wink