pic music sound picbasic

 

Le BeepMaster

Comme son nom subliminal sous entend, ce dernier est passé maître dans l'art des Beep, moyennant que vous lui fournissiez ce qu'il faut pour beeper convenablement.

À la base il devait simplement servir à commader un PIC de façon sérielle, afin d'explorer les divers sons possibles en temps réel, mais comme toujours le projet à dériver et voici:

BeepMaster dispose d'un interface semblable à un clavier de piano, où les touches sont activés par des clic de souris. Les clics peuvent émettre des sons, de 3 manières possibles: midi, envois de commande destiné à un PIC par port série, ou le PC speaker(que sous Win7). Chaque clic peut être enregistrer dans une liste, qui deviendra alors une composition si on y ajoute un paquet de notes. On peut évidement modifier cette liste avec quelques options normales.

Pour que le Pic puisse comprendre les codes envoyés par port série, les simples lignes de code suivantes sont nécessaires:

 

waitforkeydata:
pause 1
DEBUGIN [WAIT("DT")]
DEBUGIN [HEX2 curnote]
DEBUGIN [WAIT(",")]
DEBUGIN [HEX2 duration]
DEBUGIN [WAIT(13)] ; wait carriage return

pause 2

sound Speaker,[curnote,duration ]

;High LedPort

GOTO waitforkeydata

Pour ma part, un petit 12F683 avec un crystal a 20Mhz fait le boulot. Et pour les branchements, référrez vous au manuel de PicBasic Pro, se rapportant a la commande Sound.

Une composition peut être jouée, et aussi encodée pour un usage direct dans du code PicBasic.

  • beepmaster pic midi music

Il est à remarquer que malgré un large éventail de notes disponibles, le PIC et la commande Sound de PicBasic n'offre qu'une partie limitée de la gamme. Pour mieu comprendre le phénomène, voici comment à été dévelloppé le logiciel.

En premier lieu, il fallait évaluer les fréquences émisses par le PIC, pour chaque index de son qui va de 0 a 256. À l'aide d'un autre PIC programmé pour analyser la fréquence, un tableau de correspondance fût créer. Ensuite, avec une simple recherche sur internet, toutes les fréquences des touches d'un piano ont été comparées et assignées à celles du PIC. Par exemple, la touche LA(grand classique pour accordé un instrument de musique), qui correspond à une frèquence de 440hz, est jouée lorsqu'on commande la note 105 du PIC.
Les fréquences du PIC ne sont pas toutes exactes, alors certaines associations sont faites au meilleur fitt possible, mais il y a des fausses notes.

  • pic music midi

Le logiciel ici présent aura la gentilesse de vous montrer les notes disponibles du PIC, par défaut, et vous pourrez aussi décaller vos compositions en utilisant les offsets, si votre chanson tombe dans le néant d'une note muette.

La lecture directe par un PIC peut être légèrement différente en terme de synchro, comparé a ce qui sort en jouant de l'ordinateur..

Une autre déraille est apparue lors de l'ajout du mode de lecture MIDI, ce format redoutable dont la puissance inspirait à une grande chose...l'importation de fichiers musicaux pour conversion directe au format "PIC", ces fichiers contenant les pistes instrumentales de milliers de chansons de partout dans le monde! Cela aurait l'avantage de permettre une composition plus aisée, soit directement sur clavier MIDI ou un logiciel dédié. uhm.

Il fallut investiguer le format d'abord, chose un peu nébuleuse, puis trouver des outils permettant de décrypter la bête. Les ressources furent très limitées pour l'environnement dans lequel je programme, et les exemples les plus récents dataient de l'an 2002...un temps où il n'y avait plein d'imbéciles utilisants des cellulaires, pour vous dire! Mais avec un peu d'acharnement(et de chance), un de ces vieux comme la terre programme a fini par fonctionner et me donner un certain accès aux données dont j'avais tant besoin. Il était énormément instable durant mes premiers tests, mais après quelques recodification tout est revenu dans l'ordre par miracle. Ce fût bien au delà de mes espérances de le voir lire un fichier sans planter.. Voici donc ce dinosaure, connu sous le code Project_midiGrabber

  • midi for picbasic sound

Et maintenant, utiliser cette bête avec record track:

  1. Charger un fichier midi, en appuyant sur Load
  2. Appuyez sur play pour faire jouer les pistes, et tenter de repérer celle qui vous intéresse avec le visualisateur intégré.
  3. Entrer le numéro de la piste voulue dans la case Record Track, et cocher Logger ON.
  4. Faire jouer la piste a nouveau(Play), maintenant des informations vont être enregistrées en temps réel dans le tableau du bas de l'écran.
  5. Une fois que la chanson est terminée ou que le contenu voulu est rendu(pas nécessaire de faire jouer au complet), appuyez sur Remove Empty pour effacer toutes les lignes vides.
  6. Maintenant il est possible de faire jouer l'information directement en mode midi, appuyez sur Start/Stop. Si ca joue bien, le reste devrait bien aller.
  7. La prochaine étape consiste a trouver la case de la première note, celle qui créer un son, car l'enregistrement contient souvent des informations non-necessaires a mon programme (Des réglages fait sur une piste MIDI, par exemple choisir l'instrument).
  8. À coté de Step play, mettre le compteur a 1 et appuyer sur step play jusqu'à ce que une note se fasse entendre, (puis appuyer un autre coup pour la faire taire).
    Une fois cette case repérée, notez là puis remontez en haut en scrollant. Vous devez effacer toutes les cases avant cette première note, avec le bouton erase line 1. Attention de ne pas passer tout droit, sinon il faut recommencer l'enregistrement. La case de la première note aura souvent un delais assez grand, si l'instrument tarde à jouer en début de chanson. Une fois ce nettoyage réussit, clickez sur le bouton de droite dans le tableau et choisir Insert dummy line. midi pic import
  9. Le compte est bon, maintenant il ne reste plus qu'à sauver un fichier pour l'importer dans Beepmaster. Clickez bouton de droite et Save Grid. Entrez le nom qui vous plaît, s.v.p.
  10. Notez que certains fichiers Midi sont plus ou moins adaptés a créer un piste, mais si vous éditez vous même vos fichiers, vous pourrez faire des chefs d'oeuvres.

Une autre méthode consiste a lire directement l'information dans le fichier midi, après avoir sélectionner la piste voulue. Choisir Import notes, et le traitement sera fait très rapidement. Si un tag jaune "Overlapp" apparaît, c'est qu'il y a des notes superposées dans la piste. Le logiciel peut règler les cas simples si vous cochez l'option Zero overlapp et refaite le traitement, mais si les problèmes sont majeures vous devrez corriger le problème autrement.

Parmis les logiciels d'édition Midi connus, il y a le classique des classiques CakeWalk, et aussi Samplitude, qui sont deux outils très puissants dans cette branche musicale.

 

Suite importation MIdi, sous BeepMaster.

Vous avez réussit à créer une piste, elle peut maintenant joindre la confrèrie des Beeps.

 

pic beepmaster import midi

  1. Choissisez votre fichier créé par MidiGrabber, en appuyant sur Load MidiDataTrack. Le tableau dessous va se remplir et afficher sensibliement la même information que vue précédement.
  2. Quelques options sont disponibles, selon le type de fichier midi que vous avez utilisé comme source.
  3. Si les premieres cases de notes(data) se terminent toutes par $****9*, exemple sur l'image ci-contre, c'est que votre fichier midi contrôlle l'arret des notes par le volume, donc laissez l'option Check Volume cochée.
  4. Si c'est plutôt une alternance de $****9*, et de $****8*, cela signifie que le contrôle est fait selon les règles de l'art midi, enlevez l'option Check Volume. Update: Le logiciel analyse et essais de trouver la bonne option pour vous par default maintenant.
  5. Vous pouvez déjà faire un test en appuyant sur Convert to PIC notes. En quelques secondes les notes vont apparaitre dans votre liste, à gauche de l'interface!

 

 

Testé sous Windows XP. 64bit, Win 7 x64

Telecharger BeepMaster (~2 meg), BeepMaster_midi.exe

WinRar, c'est comme Winzip...sauf que c'est mieu 8)

 


 

Has the name suggest, this fellow has become the masterizer of beeps, shall you give him the opportunity to do so.

It was intented to be a simple sound explorer interface, driving a PIC thru serial port and getting realtime feedback of the Sounds emitted, but the project went on fire!

BeepMaster main interface is a piano keyboard, which create sounds as you click notes, and send them to specified devices: midi output, serial data aimed to be received by a PIC, and PC speaker Beep(win7). Each clic can be recorded in a list, which can in turn be modified afterward to produce some kind of musical listing.

PIC playback done thru serial port is expected to have the PIC programmed in receiving mode, using the code posted at the top of this page. This code is for PIC basic Pro programming software only. Refer to the Manual of Pic Basic and the Sound command, to get information about hooking up the audio hardware. Mine is running fine with a 12F683 @ 20Mhz, and 38400baud transfer rate.

The software can generate code from the note list you create, so you can import that into your microprocessor and have it running standalone, singing.

It can also manage to import Midi Data, after some processing using another software that I will have to describe later here. See Project_midiGrabber, if you feel like hacking around with it. Most regular midi tracks I've tried loaded fine, but if something weird happen, try resaving your file with a recent midi editor(cakewalk, samplitude).

Here is some basic info for midi convertion:

Using the utility converter(Project_midiGrabber.exe) try loading your file and hit play.
If you hear music that is good, if not then you will have to edit the file using another software.

Next, a couple things that are needed to process midi track data:

  • 1- Midi file must be multitrack, which means 1 instrument(channel) per track.
    Midi format allow all instruments to be saved as 1 track file, but my software is not programmed to handle that now(it could, eventually).
    Using a midi editor like Samplitude, you can load the midi file, ask to create 1 track per instrument and export to midi to create a workable file
  • 2- Notes played by an instrument must be 1 at a time, as PIC can only play that way too. If your data contain chords (dual notes, triple notes..+), that is not gonna make it. Some trimming can be done by my converter for simple case of overlapping notes(see zero overlapp option), but It would be better to clean the data in a Midi editor. Samplitude have a function to clean Polynotes, which should fix problematic tracks.midi single notes
  • 3- Now, if you load your track and playback work fine, there are two ways to grab data. The newest way will read data directly from the midi file and process without playback. First select a track in the bottom-left corner, then click >Import notes. Watching the visual display of notes during playback can be helpful to see which track is the one you want. While processing, If the sofware detect polynotes you will see a warning, and you may try re-run the import using "Zero overlapp" option to see if that is only a minor case. Notes that are imported will show up in the table, and some colors will appear to mark correct/incorrect data. If all is green or plain normal you should be fine, but Red means overlapps are too bad.

Other and older method is to import while the file is playing in real time, and that is done by selecting the track number in the upper right side of the interface. Set the track number, check the "Logger On" option and when you hit play, data will fill the table in realtime. You dont have to wait till the song finishes, just grab what you want/need. This method can be less precise in timmings than the first one explained.

When you are done, right click in the data table(right) and hit "Save grid". This data is formatted to be read by my main software as midi track data. So next, move in BeepMaster_midi.exe software and import that track.

 

Tested under Windows XP. 64bit, Win7 x64

GetBeepMaster (~2 meg), BeepMaster_midi.exe

note about file size of exe: Anyone may wonder why the uncompressed size of those exe are so big, for little functionnality they provide. Well, I don't know all about what increase file size, but I do know that libraries have been made bulkier recently to provide support for Touch features in OS like Win7, and also they opened the code to talk with other softwares...so basically there are reasons, but I can't do much about it. The software works, that's all I need :)

 

 

Retour aux projets speciaux

Utilitaire gratuit beepmaster midi to pic convertion conversion transfert musique digitale interface seriel sound