Jump to content

Sauraen

Programmer
  • Posts

    460
  • Joined

  • Last visited

  • Days Won

    26

Everything posted by Sauraen

  1. I've been working on the modulation matrix for the SID core of MIDIbox ASIDITY (my project), and I've been adding more and more things as modulation destinations (there's going to be about 1600 of them!) and hence increasing the size of an array storing the outputs of the matrix. All the arrays I've created in the entire core should still fit comfortably in the 64K RAM, with at least 15K left over for the operating system. But this one array is "growing" as I add features, and if I make the change I want to it'll be over 16K. In the page describing the LPC17 core it says "large arrays have to be assigned to RAM sections in the C code". How do I do this? My code uses only global arrays of fixed size (no memory allocation at runtime, other than local variables within functions, and none of those are arrays), and I know what they all are, so actually I could assign all the arrays in the whole core to memory addresses and make sure they all fit. Also, I've been allocating global RAM arrays like this: extern matrix_output outmatrix[NMATRIXOUTPUTS]; And arrays I want to be in flash, not RAM, e.g. frequency lookup tables, like this: static const u16 sidtemper[128] = { 0, 145, 154, 163, [...], 65535 }; Is this correct?
  2. Here's a new video, showing off the digitally controlled feedback (3x gain)!
  3. I finally built the bipolar power supply and got the audio attenuators working. However, the digitally controlled feedback is currently lame; it just sounds like adding a little drive, there's no "screaming" feedback. I think this is because I have the op-amp for the audio attenuator configured as (at most) unity gain, so it's not actually amplifying anything. I'm going to change it to x2 gain, and if it sounds cool we'll put up a video.
  4. Here's an updated mockup of the front panel (click for life size): The knobs at the top are for the limiters we're adding. They're switchable between whether they apply to each SID's audio input or output; they have adjustable hardness and separate positive and negative cutoff voltages, and four choices of diode for different harmonic profiles. There's also a much-higher-cutoff hard limiter that gets connected to whichever you don't connect the bigger limiter to. Also, we're considering throwing in an OPL3/YMF262 FM module. We already have the chip and DAC from an old sound card, and why not let ASIDITY's modulation power extend to a different kind of synthesis? In other news, as you can see from the subtitle, we're adding external SRAM to the sequencer core so it can do 64 tracks x 96 measures x 16 steps. We're also adding a delay modulator to the SID core: it simply delays an input modulation signal (not audio). Other than that everything is pretty much the same. I'm more than half done coding the SID core.
  5. @Shuriken The datasheet tells me I can choose the values of the filter capacitors, but it does not address putting different values for the two capacitors nor what happens as you switch the capacitors while the SID is running. I was considering having slide switches to select between a couple different values, and as the switch is sliding there will be a moment when no capacitor is connected. Sure, the audio will pop, but will this damage anything? @pingosimon Thanks for the link! I think I like the Polyfilm capacitors best.
  6. Does anyone know if there's any chance of damaging a SID if I experiment with different values for the filter capacitors? Of course some values will make it not sound good or make the filter temporarily not work, but is it bad for the SID if that happens? How about making the two capacitors different from each other?
  7. It's not "an average bunch of synths" if you built them all. :) I'm interested in that little custom display to the right of the MBSEQ. Also, you just say you have it "all wired up" to the MBSEQ, but since you have more than four MIDI-enabled devices, it must be more complicated than that.
  8. Cool! Loved the video! Can you do a video sometime where you walk through your studio and show each piece of equipment and how it's connected? I can't see them very well in the videos. :) Obviously you don't have to spend much time discussing the functionality of a mixer, unless you built it. ;) But you have some cool gear and I'd like to know how you have it all hooked up!
  9. In some ways, evidently: On the other hand, if you're looking for that distorted Genesis sound, according to Wikipedia, the analog mixer section on all but the earliest Genesis models was terrible, hence that famous sound. So even if you made a "MIDIbox SG", SN76489 and all, you'd have to figure out and replicate the bad quality of the analog portions as well. That said, I would welcome that addition to the MIDIbox family! If someone's interested in building the hardware and someone else in designing a human interface, I'd be willing to write the module driver for LPC17 to control the YM2612 and SN76489 (after I'm done with my current project)--it was pretty easy to get the LPC17 to drive a SID, this shouldn't be much harder. :) What do you say, would four of each type sound chip per MIDIbox be enough, or you want to go for eight? Guess it depends on how many Genesises you want to buy and rip apart. :)
  10. @Nasrudin Thanks for the tip. I tried one of their free virtual instruments, and it sounded a little thin, plus it was choppy (but that was probably a problem on my end rather than with the software). But their demos of their paid collection sounded good--I'll keep it in mind. @technobreath Thank you for the offer, but I don't think I'll take you up on it. I was asking because I wanted to find somewhere where I could trust that the sounds had not been obtained in a questionably legal manner. As far as your box of CDs, depending on the particular licenses for each soundfont, transferring ownership of them would range from perfectly fine to questionable to breach of contract to copyright infringement, so I don't want to get involved with it. But if you go through them and find the ones that you are allowed to redistribute, I'm sure the Internet would love them. As far as virtual instruments, the reason I ask is I am looking for some realistic-sounding sounds of acoustic instruments for an arrangement, whether they come in the form of soundfonts, VST plugins, etc. See, I made an arrangement for OC ReMix, rendered it with the free soundfonts I had, and it was immediately rejected on the grounds of poor sample quality. I gave it to Oikanys who ran it through SONAR; it got farther in the judging process but still was rejected because it sounded too computer-ish. I realize this isn't really the place to be asking about electronic sounds that sound like "real" instruments, but... ;)
  11. I've found a number of sites hosting collections of soundfonts for free download. However, many of them say things to the effect of "compiled from a bunch of sounds found on the Internet", and I don't know whether to trust that the sources these sites got their sounds from did not rip them out of commercial software or hardware samplers. So does anyone have word-of-mouth recommendations for any sites or specific soundfonts that they know were not made that way? (If this is not the right place to ask this question, I apologize.)
  12. We purchased a large open-frame switching power supply that would be able to supply all the voltage outputs we needed (including for the audio attenuators), and after working fine for a few tests but making a high-pitched noise (~17 kHz), when I turned it off the last time there was a big spark from the inside of the power supply. I got scared and decided I should use a less potentially dangerous power supply. I'm currently considering the MFOS wall wart power supply that I saw referenced on the forums for the +5/-5 volts for the audio attenuators and feedback circuitry, but I don't know what to do for powering the SIDs and the LPC17 cores and the front panel with hundreds of LEDs. The approximate current consumptions would be: +12v (analog) 500 mA for SIDs, including voltage regulator to +9v for 8580s +5v (analog) 500 mA for analog audio circuitry -5v (analog) 500 mA for analog audio circuitry +12v (digital) 500 mA for fans +5v (digital) 3A or more for LEDs, SIDs, etc. +3.3v (digital) 500 mA for LPC17 cores Do you think I should try for another switching power supply, despite the potential for auditory and electrical noise? It would probably have to power the SIDs' 12 volt line as well, which might make them noisy. (I do not have a Commodore 64 power supply.)
  13. Update: We've now tested controlling two SIDs from one core, to see if the code for simultaneously sending different data to different SIDs works (it does). (It's basically eight MIDIbox SID modules, but instead of controlling the SIDs separately by CSing one at a time with eight CS lines, it sends different serial data to each simultaneously.) I wrote a small six-voice polyphony engine to demonstrate the independent control of all six voices, but this won't wind up in the final version. I didn't think this was worth making a video for; I hope to get the digitally controlled feedback working this weekend, and I'll make a video about that because that's really a new thing that hasn't been done before. We don't have a device with enough knobs to send controller changes to ASIDITY to control all these features simultaneously, so even we won't know what it's really capable of in terms of sound until the control surface is finished. For instance, in a 2-SID feedback loop playing originally from a pulse wave, we would have all the following parameters to control that could affect the sound: frequency, pulse width, envelope, cutoff and resonance in the generating SID, cutoff and resonance in the other SID, audio level from the first to the second SID, audio level from the second to the first, and L/R out for either or both. I can't wait for 32 customizable knobs! Edit: The audio attenuators did not work as I expected; they evidently need a balanced (+/-5 v) power supply or they will pop every time the level changes. We will be getting a power supply that can run everything in a couple of weeks, and then we'll see.
  14. The reverb was actually an accident at first--we forgot we had effects enabled on that mixer channel. :) Also, this really was supposed to be a test program, and it wasn't really intended for playing: whenever it receives a MIDI note on message, it sets the frequency to that note and gates the SID, and whenever it receives any note off message it ungates the note. Hence playing legato is impossible with this test program--the stuttering in the video is due to that, not Oikanys playing badly. :) But that'll of course be fixed once I write the polyphony engine. We're college students in Maryland, United States.
  15. Our first test of controlling a SID with an LPC17 is now on YouTube: Yes, the test app I wrote maps modwheel to SID filter, and velocity to sustain. :D @technobreath: Oh, a year and a half. ;)
  16. Oikanys and I are happy to introduce MIDIbox ASIDITY: soon to be arguably the world's most powerful SID-based synthesizer! [Edit: The listed features have changed slightly as the build has progressed. I will update this post as it becomes final.] Designed with the mantra "MORE CONTROL" always in mind, ASIDITY harnesses the powerful versatility of eight Commodore 64 SID sound chips and one OPL3 using three LPC1769 cores. Featuring a digitally controlled feedback/volume/panning array, a massive modulation matrix (40 active and 198 passive modulators outputting to 512 SID parameters, 620 OPL3 parameters, and 424 modulator parameters), a powerful built-in 64-track 1536-measure morph sequencer that can control the SIDs as well as eight external MIDI outputs, an 8x16 four-color button/LED matrix that can run built-in adaptive visualizers when not being used, 35 knobs, over 240 buttons, and over 760 LEDs, ASIDITY will be awesome (if we finish it ;) ). Features: --------- SID core: - Support for up to 8 SIDs of any type (will be using 4x6581 and 4x8580) - Each SID audio output is split into 6, run through LM1973 audio attenuators, and connected as follows: feedback input to same SID, feedback input to next SID's audio in, feedback input to next-to-next SID's audio input, external audio output (one per SID), master left channel, master right channel; this allows for leveling and panning of each SID independently - In addition to the feedback inputs from other SIDs, each SID has an external audio input - Each SID has four pairs of filter capacitors; which one is active is digitally controlled (modulatable) - Modulation matrix: 239 modulation sources (all independent): 8 EGs, 8 LFOs, 8 Patterns (16-step sequencers), 8 random generators (with 3 adjustable biases each), 8 256-step data delay modules, 64 Note track outputs from sequencer, 64 Velocity track outputs from sequencer, 32 configurable MIDI/loopback inputs, 32 configurable control surface outputs, 7 sequencer data inputs - All active modulators (EGs, LFOs, PTNs, RNDs, DLYs) have gate, time scale, and value scale inputs, plus 12 more each - Every SID parameter is modulatable (64 per SID), including things like filter type and TEST bit - Every OPL3 parameter is modulatable except CSW and NoteSel, including things like waveform and whether a voice is 2-op or 4-op - For both sound chips, frequency is modulatable in cents; includes two-mode portamento - Modulators connected to a destination are combined through operators: +, -, *, /, AND, OR, XOR, XNOR, ==, !=, >=, <=. >, <, with options: Negation, Invert, Bitwise, Enable, Zero Half mode; allows selection of first modulator processed in order-dependent operations like subtraction and division - Copy function - Save and load complete state or individual voices to dedicated SD card - Communicates with other cores over MBNet (CAN interface) - Hardware refreshes a register of all the SIDs at the same time, or a value of eight of the audio attenuators, for maximum framerate - Adaptive framerate (software only processes modulators, outputs, etc. if they have been changed) - Switch between four tuning systems for the SIDs: one is fixed at equal temperament but the others are generatable by runtime-definable algorithms (e.g. you can make D-centered just intonation just with the front panel controls); not fixed to twelve notes per octave so you may do microtonal stuff - Control surface mode: Configure the knobs and matrix buttons to output values to 32 modulators, then place the control surface in CS mode and operate the controls to modulate things. This is not the only way to directly control SID parameters, though; in the modulation matrix edit screens, just turn the column knobs to edit the default values. Sequencer core: - Four UART-based MIDI inputs and four outputs - Five more input and output ports through USB MIDI port - An additional four MIDI inputs, four MIDI outputs, and USB MIDI port are available on the front panel core (communication through MBNet), which support fixed-length MIDI messages only (no SysEx) - 64 tracks - Variable number of measures per track, 1-768 - Variable number of steps per measure for each track, 1-16 - External SRAM modules hold 64 tracks x 16 steps per measure x 1536 measures - Two sequences can be loaded at once and tracks switched between them, one-by-one or in groups - Within each step: 7 bit note, 7 bit velocity, 6 bit delay (proportion), 6 bit gatelength (proportion), 3 bit roll (number of equal subdivisions in step), boolean whether note output is smoothed, boolean whether velocity output is smoothed - Three triplet modes: 3-within-1-step (all share same note and velocity--this is really just three-hit roll), 3-within-2-steps (all share same velocity), or 3-within-4-steps (all independent) - Jump To and Resume buttons (changes current sequencer play position to selected step, and puts it back to where it would be if you hadn't jumped); softkey to reset Resume to current position - Hold and Release buttons (pile up a lot of buttons to be either released or pressed when you press Release on the downbeat of the break) - Always-accessible mute and solo buttons with both destructive and non-destructive soloing (destructive means when you press solo, it just mutes the other tracks rather than having a separate solo layer above the mute layer) - Save and load sequences in internal format to dedicated SD card - MIDI In configuration: n-voice polyphony starting from arbitrary track, routing of control messages to note or velocity input or directly to SID core MIDI modulators - MIDI Out configuration: send track outputs to selected ports/channels - Arpeggiator: 20 page design document, we'll see how much gets done Front panel core: - 16x8 button/LED matrix with red, yellow, green, and blue LEDs beneath each button; total light power of BLM is ~1000 Candelas - Column select buttons with red/green LEDs and encoders below each column - Row select buttons with red/green LEDs and encoders on each side of each row - One 6-digit LED display and two 3-digit LED displays, to show parameter values, tempo, column numbers, etc. - Columns correspond to five-character-wide sections of LCD - 16 softkeys with LEDs, one below each column (5 chars) of the LCDs - Variety of buttons - Front panel core uses custom driver to run front panel; also runs both LCDs, relays MIDI data from its ports to the Sequencer core, and runs the visualizer (if enabled) in the background - Keyboard mode: rows are octaves, columns are note values. Transmits MIDI note on/off messages to Sequencer core as a separate port. Velocity and controllers can be controlled by knobs. - Visualizer: makes pretty pictures on the matrix that follow the sequence (not designed more specifically yet) Other things to mention: - Three linear PSUs: +5V 9A for digital electronics and front panel board (also regulated to +3.3V 2A), +12V 4A for SIDs and fans (also regulated to +9V 1A), +/-5V 2A for analog audio circuitry - Custom boards for SIDs, front panel, and memory - Two headphone jacks - Two external audio inputs, connected through analog volume controls to L and R, respectively - SID external audio inputs have analog volume controls on front panel - ASIDITY can be used as an eight-channel MIDI-controlled audio mixer with per-channel modulatable effects. Connect devices to SID external inputs and use SIDs' L and R outputs to mix and pan them. Activate SIDs' filters or feedback for effects. - ASIDITY can be used as a standard step sequencer. - Using loopback modulators and operators, simple digital logic circuits can be constructed in the modulation matrices of ASIDITY. - ASIDITY's modulation matrix is 239x1556, but calculating how many states it is capable of is difficult since a modulator can be connected to a maximum of 16 destinations, and a destination can have a maximum of 8 modulators connected to it. The number of possible states of connections to matrix outputs is on the order of 10^22, and to the inputs on the order of 10^53. This is the basis for our claim that ASIDITY will be the most powerful SID-based synthesizer in existence. However, at this point the numbers start getting pretty meaningless. Suggestions for more awesome features, and suggestions that the features we plan are impossible, are welcome. Sauraen
  17. From the album: MIDIbox ASIDITY

    See my post in the Design Topics forums for details:&lt;br /&gt;&lt;br /&gt;

    © (C) 2012 Sauraen

  18. This is amazing. I used to be really interested in theater organs when I was a kid, but my interest shifted to electronic instruments--because I could actually reasonably build them. ;) But here's someone who combines both! Wherever did you get a theater organ to put in your basement anyway?! I have a few questions: first, on some of the recordings, and it seems only on certain ranks, the attack of the notes is weak. Is that how it sounds in person too, or is it something about how it was recorded? Also, if I understood the information you have on the website, you're using the MIDIBox stuff to take data from the console and control each pipe individually. If this is the case, and you had it set up so the software could play notes directly to pipes rather than through the console, I would think you'd be not limited to the traditional arrangements for theater organ that used two hands and two feet. Instead, it would seem you could play as many notes as you wanted at once on any stop, in any arbitrary configuration; have you considered playing orchestral music through the organ? Finally, I think your MIDIBox Theater Organ should the "Most Old-School MIDIBox" award. It's so retro, it's not even analog! The synth engine isn't from the 80s, or the 70s, or even the 60s--but the 20s!
  19. I'm looking for 0.1 inch (2.54 mm) pitch ribbon cable, for easy soldering to component leads and headers 0.1" apart. I found short (~3 inch) pre-cut pieces of it for a high price (~$2.00 each!) somewhere (I don't remember where), but I'm looking to order it by the meter or possibly a whole roll. Does anyone have any suggestions where to find it? I live in the United States but I'm willing to buy overseas if shipping costs aren't ridiculous.
  20. Nice. At first I was expecting more drums, but as a whole it works great as it is. Thank you Hawkeye!
  21. If I may ask, where did you get your acrylic front panels from, and how much did they cost? I see Wilba [Edit: everyone :) ] uses Ponoko, and the results are quite nice, but I can't tell how much it would cost for one or two individual panels. [Edit: I can see the prices for the materials, but I don't have a sense of how much time it costs to laser-engrave/cut a complex design--they seem to charge per minute the engraver is running.]
  22. I guess you could say we want to do it "for the thrillz". :) I'm used to programming in C/C++ on Linux, but never before for a microcontroller, so it'll be a fun learning experience. As far as the multiple cores, you're absolutely right--it'll basically be a MIDIBox SID and MIDIBox SEQ sharing the same BLM_SCALAR (connected to the sequencer core and communicating with the SID core through the sequencer core). But since we're planning that the volume/feedback array would be controlled by the SID core, and since from looking at TK's SID Version 3 source code it seems to be written for the STM32 core, we'll have to change the hardware and software anyway. I will, though, try to package the module driver I make for the SID/feedback/volume board so that it'll be able to easily replace the existing SID module if desired. I'll post any progress I make here, in case anyone else out there is trying to do a similar thing. For instance, it seems the easiest way to get the LPC17 to output a 1MHz clock for the SIDs would be to use PWM just like with the old PIC controller. I'm planning to hook it to PWM3, which is connected to J10:D0. I'll post updates once I test that.
  23. Oikanys and I are planning to build a MIDIBox SID that will eventually house 8 SIDs, a modulator-controlled feedback array, a built-in sequencer, and an elaborate control surface including a 16x8 4-color matrix. Given the expected CPU power all this would require, we'd like to use a single LPC17 core to control the SIDs. However, I see that each SID requires a clock input, that in the case of the standard PIC18F452 core is connected to J10:PWM / RC2. Since this port on the PIC can also be connected to J7:S0 to provide shift register serial data for the MF module, I assume this is a standard digital IO port that in the case of the SID is somehow configured in software to output the 1MHz clock. Is this true? How would I configure the LPC17 to do the same thing, possibly on J19:S0 (MOSI0/P0.18)? On a related note, I see MIDIBox SID V3 files in the SVN repository for MIOS32. What is the state of these? Does anyone know how they intend the SIDs to be connected to the LPC17?
×
×
  • Create New...