Jump to content

SenPi

Members
  • Posts

    835
  • Joined

  • Last visited

Everything posted by SenPi

  1. pfft, I was totally the first to notice . I heart it and I ran straight away to the IRC channel and was all "HOLY FUCK ZIRCON!!! YOUR MUSIC IS IN HEROES!!" good times... also awesome zirc
  2. uhh.. im pretty sure he knows the difference between tempo and time signature. P.s. I dont know anything about that program
  3. Yeah I made some wavetables from sratch cause I couldnt find any online lol. Haha maybe... the FPGA is lent to us from the school... so I'll probably have to give it back really soon... maybe I'll buy my own some day. Well.. I figured out a decent way to get more than 1 key working at once, but the big problem was my wave combining algorithm. Since I wasnt allowed to use signed values (i.e -xxx to + xxx) my 16 bit waveform tables were weird and I guess I couldnt properly figure out the math to combine them. (Also it didnt help that reading in midi data was a bitch.. I must have screwed something up cause I was missing some data every once and again. Like when the keys "stick" its because I didnt receive a NoteOff signal for that key. It was weird) Lets say were looking at a wave table graph | | | | -------------------------------------------------------------------- | | | | Well, middle was 0 (as usual), middle +1 = 1, Top = 32767, Middle - 1 = 65535, Bottom = 32768 so yeah.. it was kinda funky. But doing this makes me want to make some sort of VST or standalone vst type thing.
  4. So I posted in another thread a while ago that I was making some form of synth with an FPGA for school. Well it was due on sunday, and I have posted a video of what I ended up getting accomplished. All in all.. it was a pretty fun project. I just wish I had more time cause I know I could have made it way better. Either way, enjoy
  5. haha, me and that book have had some good times
  6. So.. here is my complete pimp studio Edit: lol sorry I didnt see those posts. uhh... maybe I should move this to the other thread?
  7. ohhh.. its the same game just easy system had a different versions of it... lol Im a noob. Thanks though
  8. Awesome I love TMNT. There was this one game (probably for the genesis) that I CAN NOT find anywhere .. also cause I forget what it was called. It was a fighter one (you know, like street fighter or whatever), but the Turtles had Evil Counterparts. Man that game was pimp.. I wish I could find it again.
  9. well... wouldnt it be too fast for it to matter anyways? I mean.. a byte every 320 micro seconds..
  10. Heh yeah. Our class is different I think. Basically instead of a final exam our teacher just went "here is an FPGA, make a Real-Time project out of it". So I chose synth with midi . My friend is making a Chip-8 Emulator. its fun stuff.
  11. short answer... yes. Different hardware requires a different way to code I think. Anyways, I posted a pic of what hardware I was using. It is a Field Programmable Gate Array (FPGA). The way I am progeamming for it right now is with a language called Verilog. I could show you what I have going so far. If you have any questions about the code just ask. NOTE: This code is dirty as hell. Since im just messing around so far just trying to figure stuff out, I havent taken the time to clean the code or anything. module Drivers(SW,KEY,LEDR,LEDG,UART_RXD,CLOCK_27,HEX0,HEX1,SRAM_ADDR,SRAM_DQ,SRAM_WE_N,SRAM_OE_N,SRAM_CE_N); input [9:0] SW; //Switches input [3:0] KEY; //Keys input [1:0] CLOCK_27; //27 Mhz Clock input UART_RXD; //Serial Input output [9:0] LEDR; //Red LED's output [7:0] LEDG; //Green LED's output [6:0] HEX0; //Seven Segment Display 0 output [6:0] HEX1; //Seven Segment Display 1 output [17:0] SRAM_ADDR; //SRAM Address inout [15:0] SRAM_DQ; //SRAM Data output SRAM_WE_N; //SRAM Write Enable output SRAM_OE_N; //SRAM Output Enable output SRAM_CE_N; //SRAM Chip Enable assign LEDG[7] = UART_RXD; //Every time UART_RXD (i.e. midi) sends a bit, light the 7th green LED // sramStuff ss(SRAM_ADDR,SRAM_DQ,SRAM_WE_N,SRAM_OE_N,SRAM_CE_N,~KEY[1:0],LEDG[7:0]); getMidi gM(UART_RXD,CLOCK_27[1],LEDR[9:0],HEX0, HEX1); endmodule //module sramStuff (Addr, Data, WriteEnable, OutputEnable, ChipEnable, Keys, LED); //endmodule module getMidi(MidiIn,Clock,RedLED,Hex0,Hex1); input MidiIn; input Clock; output [9:0] RedLED; output [6:0] Hex0; //Seven Segment Display 0 output [6:0] Hex1; //Seven Segment Display 1 wire newClock; //Anything with reg means Register. Just think of it like an int or something. reg cool; initial cool = 0; reg notCool; initial notCool = 0; reg [32:0] counter; initial counter = 0; reg [7:0] data; initial data = 0; clocker c(Clock,newClock); //Start the clock changeSSD a(data[3:0],Hex0); //Set SSD 0 to the rightmost 4 bits of data changeSSD b(data[7:4],Hex1); //Set SSD 1 to the leftmost 4 bits of data assign RedLED = data; //Make the Red LED's the same as data (if data = 1, led0 is on, if data = 2, led 1 is on, if data = 4 led 2 is on, etc) always @(posedge newClock) //Whenever newClock becomes positive, do this... begin if(cool == 1) //If we are reading in midi bits... begin data[counter] = ~MidiIn; //Set the proper bit in data to the NOT of the midi bit coming in. counter = counter + 1; //Increment counter if(counter == 9) //If we are at the 9th bit, just stop getting in bits begin notCool = notCool + 1; cool = 0; end end else //if we are not getting bits yet begin if(MidiIn == 1) //Check if the midi controller sent the Start Bit begin if(notCool == 0) //If we havent stopped, set cool to 1 begin cool = 1; //This means we will start to grab the bits end end end end endmodule module clocker(inclock, outclock); input inclock; output outclock; reg [32:0] counter; reg tick; initial counter = 160; assign outclock = tick; //Basically we want tick to = 1 every 32 micro seconds. always @(posedge inclock) //Everytime the 27 MHz clock fires do this... begin counter = counter + 1; //Just ignore this math stuff, Basically we are making tick = 1 every 32 micro seconds. if(counter == 1024) begin tick = 1; counter = 160; end if(counter == 592) begin tick = 0; end end endmodule //This method just takes in a 4 bit value and sets the proper bits for the seven segment displays module changeSSD(value,SSD); input [3:0] value; output [6:0] SSD; reg [6:0] SSD; always @(value) case(value) 0: SSD = 7'b1000000; 1: SSD = 7'b1111001; 2: SSD = 7'b0100100; 3: SSD = 7'b0110000; 4: SSD = 7'b0011001; 5: SSD = 7'b0010010; 6: SSD = 7'b0000010; 7: SSD = 7'b1111000; 8: SSD = 7'b0000000; 9: SSD = 7'b0010000; 10:SSD = 7'b0001000; 11:SSD = 7'b0000011; 12:SSD = 7'b1000110; 13:SSD = 7'b0100001; 14:SSD = 7'b0000110; 15:SSD = 7'b0001110; endcase endmodule Ok so I'll kind of break this down for you. Basically I have a 27 MHz clock running. Midi data sends 1 bit every 32 micro seconds. So when midi isnt sending anything its just zero. So basically every 32 micro seconds I am checking to see if my midi controller has sent the midi start bit (basically it sends a 1 first to let you now that it will now start to send data. So midi will send a status byte (telling you what to do, i.e. Note on, Note Off, etc), then depending on the status byte it will send one or two more bytes. The code above is basically just reading in the first byte and storing it and displaying it on the LED's and as Hex on the Seven Segment Displays. And thats really all this code is doing .. seems like alot of work for only this.. . Note, it took me like 24 hours so far of working on this to figure what I know so far out. This is from knowing NOTHING about verilog or driver programming, or how midi sends stuff.
  12. scope? Also have found that site. The bit streams I was getting (assuming I was capturing them properly) didnt seem to properly match what I was pressing on the keyboard. I might have to work on the timings a bit more perhaps. btw Im using a Cyclone II http://rocky.digikey.com/weblib/Altera/Web%20photos/mfgDK-CYCII-2C20Nboard.jpg, Also I am doing this for a class, so I am not allowed to use ANY libraries or anything at all. Im coding all the drivers and stuff from scratch. EDIT: hmm after reading a bit more about my axiom, I found out that I was on a different preset. Preset 1 is General MIDI, and I was on a preset used for reason, so those bit streams probably mean different stuff in the context of reason . Im gonna try with preset 1 and see if I get proper things. Edit2:... omg so it turns out the data the midi controller sends, is opposite. 1 = off, and 0 = on. I thought it was the other way (looks like I didnt read carefully enough). This is awesome, Im finally getting the bytes im expecing. Thanks for that site also
  13. Ok, well I mentioned in another thread that I was essentially making a synth out of an FPGA board. Now, I have a midi controller im going to use for crontrolling this beast (Axiom-25). Now, Ive spliced a midi cord in to a serial cord to send data to the FPGA, and I am definitely getting the bits, but the timing is what is killing me. From what I have read, midi will send 1 start bit, 8 data bits, and 1 stop bit, all within 320 micro seconds (1000 milli = 1 second, 1000 micro = 1 milli), and its kind of a bitch to time properly. So far, I have been getting constant results, but the bytes im getting dont quite make sense with the midi signal data ive read (like It doesnt look like im getting the proper signals.. when I hit a note I seem to be getting the tune up signal or something). So yeah, just wondering if anybody has any sort of info or knows where I can get infor on this stuff. I would really appreciate it. Thanks.
  14. So I took a look at the source and there was some japanese for the description and it said this "Clock of puzzle to [maberasuentateimento] official sight appearance! The new game, cuts the new time…." according to babelfish. The Legend of Zelda: The clock Puzzle of Time?
  15. The Legend of Zelda: Majoras Mask 2: This Time, It's Personal!
  16. Alright, so its been a while since Ive made an original track, but this time Ive hit the mark . This is a really cool energetic trance song using sweet melodies to fire the track up. I posted it on a local forum, and a local DJ here in my city is gonna play it at his sets and what not. This is a huge step for me since this is the first time Im gonna get some exposure like this. I really hope you guys take a listen, and I really hope you enjoy it . Let me know what you think. DJ SymBiotiX - Orange Sky
  17. hmm... lol did you read my comment? Im in real-time systems as well in my university (except there are like 22 people in my class). Also, I just got my FPGA board last night.. and me and my friend spent 8 hours (untill 6 AM) programming drivers for the LED's, and Input Switches/buttons. I'll make a vid of it today EDIT!: lol ok here is my video of my first Verilog HDL program on this beast. http://www.youtube.com/watch?v=dPa7OP_no8I&fmt=18
  18. Wow, thats really cool... and surprizingly something I was going to ask about very soon. Right now im in this course at university called Real-Time Systems. One of our final projects is to make something out of an FPGA board. The standard thing is an mp3 player, but Im going to make a Synth out of it. Its going to take in midi through USB and output sound. Basically we get this board with a bunch of I/O (usb, sound, ps/2, serial, etc), and we have to write all the drivers and software for everything. This dsp site will be a GREAT resource, thanks alot
  19. Allright, I can appreciate that. I was just basing most of my comments about you out of speculation. I was gonna say what darke said up there as well. Anyways, in my experiences I have always found unix/linux to be FAR easyer to code in than windows (especially for general purpose command line type programs) also btw, every linux/mac either comes with a c/c++ compiler or it is very easy to get one. for the most part its gcc (c compiler) and g++(c++ compiler). If it doesnt come with it, its usually very easy to get it apt-get install gcc or yum install gcc etc. but yeah, Ive never every had a problem with mac keyboards or mice, always super responsive for me.
  20. umm.. what? Try programming in C or C++ without having to pay for Visual Studio, or having to run cygwin and have to include the cygwin.dll with every exe you make. Programming in certain languages on windows is just a hastle. Unless you are programming specifically FOR windows, its a hell of alot easyer to program on mac or linux (or unix for that matter). (Lets say I asked you to make a C program to calculate fibonachi's numbers, you have no OS. Option 1. Install windows for 50 hours (exaduration), pay for VS or have to spend like 40 minutes trying to install cygwin or mingw and whatnot, then make the program, etc. Option 2. Install linux/use a mac/etc. Takes 20 minutes to install, open up a terminal, code the program, compile, done.) Let me put it this way. Linux is based off Unix Mac is somewhat of a different flavour of unix (graphical unix if you will) and what "any languages" are you talking about? I have a sneeking suspition that you are talking about web languages, or a portable language like java. Also, what do you mean shitty mac keyboard and mouse? The mice are pretty much the same, they have right and left click just like everybody else, and a scroll thingy. As for the keyboard, its the same as any other keyboard (albeit somewhat different in its design, but Ive never had a hard time moving from keyboard to keyboard as they are pretty much ALL created pretty similarly), and what "other things". Again I'm talking from the perspective of using pretty much every different flavour of OS, and I also have a feeling that you are just one of those "WINDOWS RULES MACS SUCK" people, who dislike macs for no real reasons.
  21. man... now I want an iphone. This looks AWESOME . I wanna see some vids or something
  22. yeah.. see thats what I dont get. I mean for me, choosing an OS or whatever is all about what it offers. I use Windows for games and windows only programs, I have a Mac OSX Laptop that I use for school (Since I am taking a Computer Science degree, and the Mac platform is more suited for programming), and I use Linux here and there for the same reason as my Mac, and a few other reasons as well. I dont choose things because other people like it, or its the "hip" thing to do. It shoulnt even be like that, people should choose an OS based on what it can offer THEM, not on how popular it is. Anyways (ontopic) windows 7 is looking pretty sweet so far, from what I have read (and assuming microsoft actually implements alot of the stuff they have been talking about) it looks like its gonna be really good.
  23. oh you didnt have that one? Ahh that is the problem then, I assumed thats the one you had.
×
×
  • Create New...