text:
Interview with SiM: Creating Attack on Titan's opening theme song "The Rumbling"
Anime, Interview
The reggae-punk band SiM recently surprised the world by unveiling its song "The Rumbling". Not only was this song accommodated to the popular anime "Attack on Titan Final Season Part 2" (Shingeki no Kyojin), but it turned out to be one of the heaviest songs we've heard from the series!
We at JROCK NEWS wanted to find out more about the process of creating The Rumbling, so what better way than to ask the brains behind this amazing piece!
Left to right: bassist SIN, drummer GODRi, vocalist MAH, guitarist SHOW-HATE
Congratulations on 30 million views on The Rumbling in just three weeks! That's beyond amazing! Tell us how you feel, and did you expect such a big reception?
MAH: I had imagined it to some extent, but I didn't expect it to be this fast, so to be honest, I'm surprised to the point of being scared.
We know you consciously composed The Rumbling to be faithful to the anime while still retaining the originality of SiM. What was the biggest hurdle?
MAH: The part that took the most trial and error was the part that I had to fit into 90 seconds.
The most difficult part was trying to fit the fear of the Titans, their size, and Eren's [the protagonist] emotional ups and downs into 90 seconds.
So I had to work out the details while setting the BPM to fit the song and its structure that I had imagined in the end.
That was the hardest part.
Considering the global appeal of Attack on Titan, what was the thought process and ideas when coming up with the lyrics?
MAH: I'm only one reader, so I honestly don't know what the right answer is, but I wrote it from the standpoint of a reader, thinking, "If Eren is really thinking this way, I'll be saved", without knowing whether the characters are actually telling the truth or not.
There is now a surge of people doing music covers of The Rumbling on YouTube from all around the world. Have you seen any of them? What was your impression?
MAH: I could tell that everyone was really trying to sing and play.
That's how much everyone loves Attack on Titan, and it made me realize once again that Attack on Titan is an amazing work.
For example, if it were any other work, they probably wouldn't have put so much thought into covering it, so I could feel through their cover videos that the story and development of the work is so emotionally moving.
I think I've written a good song, and it's very interesting to watch.
SHOW-HATE: When I see covers by people from overseas, I feel that they are selfish in a good way, or "I play it because I want to play it this way", and I feel that this is a culture where such things are rooted as a matter of course, which I think is good.
SIN: I'm very happy because it's the first time we've been covered by so many people from overseas.
At the time of this interview today, the full version hasn't been released yet, so they don't know the real tuning, and they're covering it, so I hope they'll be surprised when the full version comes out.
GODRi: The original parts, of course, but also the covers that we don't play, such as piano, classical guitar, EDM arrangements, etc., are interesting, and there are many new discoveries.
In conjunction with The Rumbling, you're now a part of the label Pony Canyon. What are some of the changes or differences that we can expect moving forward?
MAH: I think it's thanks to Pony Canyon that we've been able to be involved with such a big work like Attack on Titan. We can only do what we can do by creating music and performing hard, so I'm looking forward to the part where we can gain something together that we can't do by ourselves and that is even bigger than that.
In terms of the music industry, what do you personally feel about the recent global growth in anime? How do you think it has or will affect musicians in Japan?
MAH: We ourselves can sing the theme songs of the anime we grew up with, and I think they have the power to be imprinted in our DNA. So, if The Rumbling is still being sung 10 or 20 years from now, I think that would be great.
Also, from a Japanese artist's point of view, I knew that artists who wrote theme songs for anime are very popular overseas, as many of the bands I know around us are.
However, I never imagined that we would become like that, so I'm happy.
I can't wait to go overseas and perform live.
Even to this day, SiM's sound remains unique and keeps pushing out a new refreshing take on "reggae-punk". What is your approach when making music to keep things fresh, to avoid producing songs that sound the same?
MAH: I'm a person who gets bored easily and can't keep doing one thing at a time, so I tend to want to change the arrangement between the first and second chorus.
It's not something I'm conscious of, but rather something I change naturally. I think I naturally think like this: "I've written this kind of song, so let's make it completely different next time".
Please leave a message to your overseas audience!
MAH: It's my life's dream to attend Glastonbury Festival, so I hope it will come true someday, and I'm doing a cover of the Beatles' "Come Together", so I'd like people in England to listen to it.
SHOW-HATE: The only place I've always wanted to go is London, and I've been so influenced by British music that I'd like to go there to play live and experience the British culture and music scene.
If we ever get to go there ourselves as a band, we'd love to have people come to our live.
SIN: It's one of my dreams to perform in the UK, so once the situation with COVID-19 settles down, I'd like to go and perform there as soon as possible.
GODRi: In my mind, England has an image of punk, and I'm a punk person, so I'd like to go there and feel the atmosphere firsthand at live shows, and then take what I've absorbed back home and apply it to our next work.
As long-time fans of both SiM and Attack on Titan ourselves, we're so happy to be able to see these two forces clash and see it create something this epic! But of course, our biggest thanks to SiM for allowing us to intrude to speak about their latest work.
Join the discussion 🤘D
The Rumbling
TV Size
The Rumbling (TV Size)
SiM:
Twitter MAH
Twitter SHOW-HATE
Twitter SIN
Twitter GODRi
Instagram MAH
Instagram SIN
Instagram GODRi
SiM - "The Rumbling" special site
Discuss on Discord
Topic Attack on TitanCOVID-19SiM
Artist SiM
Just a normal guy who enjoys doujin music.
Aimer and amazarashi perform theme songs for NieR:Automata Ver1.1a anime
Interview: BAND-MAID unpacks sold-out US tour and aggressive EP "Unleash"
G Andrew White and Nori
Interview: NEMOPHILA guitarists SAKI and Hazuki reflect on US performances


The following pages will guide you through many housing issues whether you in looking, living in halls or living in privated rented accommodation.
Please choose from the list on the right hand side of this page to access the information you need.
If your situation is not covered on these pages, call us and make an appointment, come to one of our drop-in sessions, or email us.


Published 04/25/2019 10:51:00 am at 04/25/2019 10:51:00 am in Plastic Cord Protector.
plastic cord protector carpet tape cord covers plastic cord protector.
plastic spiral cord protector wrap,plastic cord protector, cord protector floor floor cord cover cord protector floor, amazoncom legrand wiremold cdb corduct overfloor cord legrand wiremold cdb corduct overfloor cord protector rubber duct floor cord cover, steren outlet plastic surge joules amp ft cord steren outlet plastic surge joules amp ft cord protector ul listed protected safety circuit breaker with highimpact abs plastic housing , china channel floor cord protector ramp plastic cable cover channel floor cord protector ramp plastic cable cover, piece mini cute silicone usb cable earphone protector plastic piece mini cute silicone usb cable earphone protector plastic cord protection wire cover winder for, tips nice cord cover floor for best cable protection ideas cord cover floor cable protector mats electric cord protector, animals winder clip plastic spring cord cable protector for iphone animals winder clip plastic spring cord cable protector for iphone xiaomi samsung, rubber cable protectors safety cable covers sino concept yellow and black rubber cable guard, floor cord covers wire protectors cable ramps carpet tape cord covers.


I am a participating provider in many insurance plans including Aetna, Blue Cross/Blue Shield, Cigna, Medicare (not Medicaid), and Value Options. It is wise for you to check out your insurance plan to see what benefits they provide regarding your concerns, and who your plan lists as participating health professionals.
I earned my Ph.D. in clinical psychology from the University of North Carolina at Chapel Hill. After a post-doctoral fellowship at Duke University's Round Table on Science and Public Affairs, I began work in North Carolina's public sector. This emphasized residential and hospital-based treatment of children and families. I also provided direct outpatient care to children and adults, and served as a clinical supervisor for outpatient treatment of children and families, through the training clinics at both Duke University Medical Center and Dorothea Dix Hospital (affiliated with the UNC School of Medicine). When I returned to Dorothea Dix Hospital (DDH) in 1996, I also established a small private practice. In July 2014, I retired early from Central Regional Hospital (DDH's successor) and moved to full-time private practice.
Cognitive strengths and weaknesses, including problems with learning and attention.
Overall social/emotional functioning (personality assessment).
Consultation regarding readiness for complex health procedures like surgery.
Individual and family-based treatment of adults, adolescents, school-aged children, and parents.
Areas of concern may include current life stressors as well as emerging/enduring problems with anxiety, depression, or behavior.
Methods may include cognitive/behavioral or process-oriented approaches.
Evaluation of current capacity to proceed to trial.
Readiness to continue (or return to) work.
Independent evaluations to assist in findings of fact.


Cause effect and solution of air pollution essay.
Solutions to air pollution: how to improve air quality?
Photo by Simon Matzinger on Pexels Global warming On top of that, air pollution is a major contributor to global warming and climate change. Ashes, smoke, soot, and dust can dirty and discolor structures and property, including clothes and furniture.
With increased temperatures world wide, increase in sea levels and melting of ice from colder regions and icebergs, displacement and loss of habitat have already signaled an impending disaster if actions for preservation and normalization arena undertaken soon. Acid Rain.
Every year millions of people of all over the world die due to direct or indirect effects of air pollution. This also means turning to energy efficient devices when possible. Your Message. Considerations Many people are affected by air pollution, whether or not they know it. We are seeing a series of innovations and experiments aimed at alternate and unconventional options to reduce pollutants.
Toxic chemicals present in the air can Orca wildlife species to move to new place and change their habitat. Digging down even deeper, air pollution can be split into primary and secondary pollutants. When you try to study the sources of Air pollution, you enlist a series of activities and interactions that create these pollutants.
Liver, kidney, and brain damage; neurological and developmental damage.
UV rays also have the capability to affect crops.
Exhaust from factories and industries: Use of insecticides, pesticides and fertilizers in agricultural activities has grown quite a lot. The potential economic impact of global warming is estimated to be in the billions of dollars.
Air pollution depletes Ozone layer. Even nuclear is leaps and bounds better than traditional fossil fuel plants when it comes to air pollution.
Do not throw away items that are of no use to you. Switch off fans and lights when you are going out. Clean energy technologies like solarwind and geothermal are on high these days. Global warming: Household cleaning products, painting supplies emit toxic chemicals in the air and cause air pollution.
To create a better place to live in for the human being and wilderness we have stop air pollution. Smoke from the combustion of various inflammable objects, volcanic eruptions etc along with the emission of polluted gases also make it to the list of Natural sources of Pollution.
But the excessive concentration of these gases in the atmosphere is the cause of the recent climate change. For e. As ozone layer will go thin, it will emit harmful rays back on earth and can cause skin and eye related problems.
Water, high in the atmosphere, combines with these chemicals and becomes acidic in nature.
Then there are the effects on the planet and its atmosphere. In parts of the country where lakes and waterways have been contaminated with mercury from electric power plants, fish are no longer safe to eat because they, too, are contaminated with heavy metal pollutants. The how to write an essay double spaced of Air pollution are alarming.
Find ways to promote and educate the public on clean energy alternatives. Global warminga direct result of the increased imbalance of gases in the atmosphere has come to be known as the biggest threat and challenge that the contemporary world has to overcome in a bid for survival.
Rural communities would probably benefit the most from renewable energy development, as wind and biomass energy production is likely to take place in rural areas.
A classic example of a primary pollutant would be the sulfur-dioxide emitted from factories Secondary pollutants are the ones that are caused by the inter mingling and reactions of primary pollutants.
There are different kinds of negative and harmful effects of air pollution. It creates respiratory problems and exacerbates existing conditions such as asthma and emphysema. Every day, technology continues to advance that improves the efficiency and cost of clean energy such as solar, wind, and geothermal.
Acid Rain: Sulfur Dioxide SO2 Burning of coal and oil, especially high-sulfur coal; industrial processes paper manufacturing, metal smelting. When continually exposed to air pollution, humans become at higher risk for cardiovascular disease. But, there overuse is killing our environment as dangerous gases are polluting the environment. Exhaust from Industrial Plants and Factories. Depletion of Ozone layer: Several attempts are being made world wide on a personal, industrial and governmental levels to curb the intensity at which Air Pollution is rising and regain a balance as far as the proportions of the foundation gases are concerned.
Primary pollutants, such as sulfur dioxide, are ones directly released into the atmosphere. Large amount of fossil fuels are burnt to produce electricity. We can make the choice to drive less toxic automobiles.
The Ozone layer considered crucial for the existence of the ecosystems on the planet is depleting due to increased pollution. Other atmospheric effects of air pollution include urban smog and reduced visibility, associated with ozone-forming nitrogen oxides and volatile organic compound emissions.
Encourage people to use more and more public modes of transportation to reduce pollution. Fossil Fuel-Based Power Plants. Air pollution can occur naturally during a forest fire, dust storm or volcanic eruption, but the biggest source of pollution for the past years has been humankind.
Health Effects of the Pollution We Cause Exposure to emissions of lead, mercury, sulfur dioxide, particulate matter, carbon dioxide, and ozone-forming nitrogen dioxides are hazardous to public health. Switching the focus to agricultural activities, ammonia is a frequent byproduct that just so happens to be one of the most dangerous gases in our environment. Noxious gases such as carbon monoxide, sulfur dioxide and nitrogen oxide react with the sun to create new and dangerous compounds, including smog and acid rain.
Sulfur dioxide and nitrogen oxides combine with water in the atmosphere to cause acid rain, which is detrimental to forests one paragraph cover letter other vegetation, soil, lakes, and aquatic life.
Volcanoes, forest fires, and dust storms cause effect and solution of air pollution essay nature-born events that dump massive amounts of air pollution into the environment. Earlier on, you learned about the Ozone layer and its role in protecting our planet. Mining is a process wherein minerals below the earth are extracted using large equipments. Indoor air pollution: Manufacturing industries can be found at every corner of the earth and there is no area that has not been affected by it.
Air pollution causes global warming in a great scale. But what causes air pollution? Pollution has been known to cause allergies, disease, damage to crops, and in extreme cases, even death.
The toxic pollutants deposit over the surface of the water and can also affect sea animals. Human Respiratory and Heart Concerns. The pollutants that are a direct result of the process can be called primary pollutants. The increase in radiation can cause skin cancer, damage to the human immune system and eye damage.
Last Updated: They also help reduce current rapid depletion of natural resources. Burning fossil fuels to power vehicles, homes and industrial plants releases tiny particles of matter into the air, according to information from the Lawrence Berkeley National Laboratory.
If you and your colleagues come from the same locality and have same timings you can explore this option to save energy and money. Precursor of acid rain, which can damage trees, lakes, and soil; aerosols can reduce visibility.
Same with finding unique ways to reduce energy consumption. Air pollution directly accelerates the rate at which global warming happens by depleting the Ozone layer. As you know, humans and other living creatures rely on the atmosphere for respiration. Fluorescent lightbulbs over the course of their lifespan can reduce energy consumption while adding significant savings to your pocket.
One thing I personally love to do is reuse to-go containers from restaurants as plastic ware for work lunches. The green colored algae that is present on lakes and ponds is due to presence of this chemical only.
Causes of Air Pollution Essay Research Paper Example : augustabluescompany.com Causes diseases: Therefore, air pollution means the undesirable presence of impurities or the abnormal rise in the proportion of some constituents of the atmosphere.
Green resources increase U. Pollution emitting from vehicles including trucks, jeeps, cars, trains, airplanes cause immense amount of pollution. Depletion of Ozone layer: It also kills small aquatic organisms like plankton, affecting marine food chains cause effect and solution of air pollution essay releasing additional carbon dioxide into the atmosphere when the life forms decompose.
Acid rain can cause great damage to human, animals and crops. The toxic pollutants deposit over the surface of the water and can also affect sea animals.
Natural sources and Man-made sources. A physical, biological or chemical alteration to the air in the atmosphere can be termed as pollution. The effects of air pollution are described below. Green resources are a good source of jobs and income because they rely on local labor, land, and resources.
Air pollution is one of the biggest threats for the environment and affects everyone: While green sources of electricity may cost more, they do not incur the external costs of traditional fossil fuel-based generation.
Ammonia is a very common by product from agriculture related activities and is one of the most hazardous gases in the atmosphere. Therefore, air pollution means the undesirable presence of impurities or the abnormal rise in the proportion of some constituents of the atmosphere.
Possible consequences include melting of polar ice caps; an increase in sea level; cause effect and solution of air pollution essay increases in precipitation and severe weather events like hurricanes, tornadoes, heat waves, floods, and droughts.
Homework for year 1 is a college education worth the money essay contoh essay tentang anti korupsi format of business plan pdf book is my best friend essay in english.
Wildlife Endangerment. Use public mode the ultimate guide to writing a dissertation in business studies a step-by-step assistance book transportation: And most importantly, what are the possible solutions to tackle it? Acid Rain: Solutions for Air Pollution 1. This is why hybrid and fully electric vehicles are making a splash in the automobile marketplace. Although industry does cause air pollution, the vehicles crowding the highways produce many, if not most, of the chemicals that cause smog and pollution-related health problems.
Acid raining is another effects of air pollution. Another topic of heated debates.


2005-03-08 First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=11445590&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=US6871092(B2) "Global patent litigation dataset" by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
This invention relates to a new type of apparatus designed to modulate the neurovegetative system and integrate the neurovegetative action with that of the central nervous system. The method is not invasive, because it uses pulses transmitted through the skin; the intensity of the stimulus is controlled directly by the patient in order to achieve better integration with the central nervous system. This invention effectively treats vascular disorders resulting from obstruction of the arteries of the legs, heart and brain because it induces vasodilatation and increases blood flow and the production of new blood vessels. The method also improves lesions of the spinal column, especially those affecting the back and neck, and other orthopaedic disorders.
This application is the US national phase of international application PCT/EP01/08756 filed 27 Jul. 2001, which designated the US.
This invention relates to apparatus and an innovative method designed to regulate the function of the neurovegetative system and integrate it with that of the central nervous system. This effect is achieved by administering electrical pulses to the skin, the intensity of the pulses being controlled directly by the patient.
The new method induces vasodilatation, stimulates neoangiogenesis and increases blood flow. The regulation of the vascular flow obtained with the new technology allows treatment of vascular diseases involving organic obstruction of the arteries, which often affect the lower limbs, heart and brain. The new technology also allows effective treatment of disorders of the spinal column, especially the neck and the lumbosacral area.
The same apparatus can be effectively used to treat many other orthopaedic disorders, for example inflammation and proprioceptive sensory alterations caused by damage to the muscolar and articular system.
Atherosclerosis and thrombosis are frequent causes of arterial obstruction.
Atherosclerosis is responsible for most cases of arterial occlusion affecting the myocardium, brain and peripheral arteries.
Arterial obstruction or narrowing causes a reduction in blood flow either during exercise or at rest. The clinical signs result from ischaemia. The atherosclerotic lesions which affect large and small blood vessels in diabetics are very similar to those which appear in non-diabetics; however, they appear earlier, worsen more quickly and are more frequent in the case of diabetics.
Distal arterial occlusion below the knee together with microvascular alterations and neurological lesions are responsible for gangrene. The symptoms are intermittent claudication and pain at rest caused by ischaemia. Diabetic foot, which is caused by a combination of vasculopathy, neuropathy and infection, is one of the most dangerous complications of diabetes, and is the cause of most amputations. Amputation of the foot or leg is five times as frequent in diabetics as in non-diabetics. Angina and myocardial infarction are the most frequent complications of occlusion or stenosis of the coronary artery.
These local actions, together with those of the autonomic nervous system and the vascular system, cause vasoconstriction when activated, such as after exposure to cold; conversely, a reduction in these effects results in vasodilatation.
The development of collateral circulation which results from stenosis or a major obstruction of the arteries influences the degree of ischaemia. Some collateral vessels are present in normal tissue, but do not dilate until arterial obstruction appears, while other capillaries develop in weeks or months. The adrenergic nerves, which are part of the autonomic nervous system, are responsible for vasoconstriction or dilatation of the collateral vessels in response to the increase in arterial pressure, with the result that the flow of blood to the tissue is improved.
Substances produced by the endothelial cells which induce new blood vessel formation (neoangiogenesis) and vasodilatation were recently discovered. The production of VEGF (Vascular Endothelial Growth Factor), which seems to be responsible for the majority of the angiogenic and` vasodilatory effect that results from stenosis or arterial obstruction, appears to be particularly important.
Experiments with isolated animal muscles have demonstrated that continuous electrical stimulation for 5 days (stimulation of 0.3 ms of amplitude, frequency of 150 Hz and voltage of 0.1 V) increases VEGF production, the number of capillaries and the blood flow (Kanno S, Odam Abe M. Circulation 1999; 99, 2682-87).
Although the experiments described above seem to suggest that electrical stimulation of the muscles has beneficial effects on the circulation, the problem remains of how to induce a prolonged stimulation on nerves and muscles in humans.
Patients suffering from acute ischaemia or initial infarction present increased production of VEGF in the myocardium and in the endothelial cells of the capillaries and arterioles (Lee S H, Wolf P L, Escudero R, N. Engi. J. Med. 2000; 342, 626-33).
The revascularisation induced by a transmyocardial laser with the aim of reducing angina pain is accompanied by an increase in VEGF and angiogenesis (Horvath, Chiu E, Maun A C, Annals of Thoracic Surgery 1999; 68, 825-29).
Modern technology offers some highly sophisticated instruments which allow the use of new techniques such as transmyocardial laser revascularisation, but the results are still limited. An electrical phoryngeal neuromuscolar stimulator is disclosed in WO 99/24111.
The treatment of peripheral vascular disease is usually unsatisfactory. Vasodilators have a modest effect, and sympathectomy is ineffective. The injection of VEGF produced by GMO (Genetically Modified Organisms) is not without side effects. The only therapeutic solution is vascular surgery.
In practice, no really effective system for the treatment of peripheral vascular disorders has yet been found. Vasodilators give poor results, treatment with VEGF based on recombinant DNA is not safe enough, and even surgery is just one of the various alternatives, which has not demonstrated any real efficacy.
The present invention proposes an apparatus for the treatment of ischaemic disease which can generate and apply a series of controlled pulses designed to stimulate the patient and elicit an effective response, which eliminates inflammation from the part of the body treated, activates the peripheral microcirculation and stimulates VEGF production.
The apparatus in accordance with the invention uses a non-invasive technique, because the stimulus is transmitted transcutaneously by means of electrodes.
The signals emitted by the machine are sent to the vascular receptors where they induce vasodilatation and stimulate VEGF release.
Using the apparatus in accordance with the invention, ischaemia can be treated and ischaemic pain reduced.
The invention is based on a series of studies conducted by the applicants which demonstrate that by applying a series of electrical pulses to the patient, a biochemical response can be induced which not only eliminates inflammation from the part of the body treated and reduces or eliminates pain, but also has a rapid muscle-relaxant effect, and stimulates vasodilatation and VEGF production.
However, the apparatus must also detect the response of the tissues to electrical stimulation and vary the stimulation parameters to obtain the desired result.
For this purpose, the apparatus to which the invention relates generates electrical pulses whose variables activate the patient's neurophysiological control systems.
The pulse parameters are defined on the basis of the bioreaction of the tissues. The intensity of the pulse is directly regulated by the patient, according to preset treatment programs.
After establishing experimentally that the apparatus in accordance with the invention produces excellent results with muscle relaxation, the inventors formulated the hypothesis that the same apparatus might effectively induce vasodilatation and stimulate VEGF production.
Subsequent experiments demonstrated that this hypothesis was well-founded, and that the apparatus to which the invention relates produces the postulated results.
at least one of which means can be controlled by the patient/user.
c) modifying the width and intensity of the pulses in relation to the tissue reaction detected in point b).
Advantages features of the apparatus of the invention are stated in the annexed dependent claims.
FIG. 10 shows the oscilloscopic trace of a pulse which shows a peak having a width of 10 nanosec.
FIG. 12 is an expanded view of the peak of the pulse of FIG. 11.
The circuits illustrated in the figures do not require a more detailed explanation because the information obtainable from the drawings is sufficient to allow an expert in the field to implement the invention.
The apparatus includes devices which generate and regulate a series of electrical pulses that are sent to a pair of electrodes at the output, and is fitted with a control which allows the patient to regulate at least one of the control parameters of the said pulses, especially the voltage, according to preset treatment programs correlating the detected bioreaction to the time, frequency and width of the electrical pulses.
The electrodes, one active and one passive (or reference) electrode, are applied in different positions, depending on the tissue treated.
These regulations can be performed by means of an ordinary control fitted with pushbuttons and/or potentiometers which is activated by the patient.
The circuit shown in FIG. 2 allows forward/back regulation, in that it allows the patient to select an increased or reduced voltage, while the circuit shown in FIG. 3 is a counting circuit which counts the number of steps set with the control, in order to calculate the extent of the variation to be imparted to the output voltage signal.
In particular, the amount of this voltage variation is between 0.47 and 0.63 volts.
The digital count signal output from circuit 3 is then converted into an analog signal in the circuit shown in FIG. 4, where the pulse trains are generated; they then pass to the output stage shown in FIG. 5 after being suitably regulated by the circuits shown in FIGS. 6, 7 and 8.
The circuits shown in FIGS. 6 and 7 regulate the duration (width) of the pulses and the increase in width between two successive pulse trains.
The circuit shown in FIG. 8 is the timer which determines the duration of the pulse train, while FIG. 9 shows the circuit diagram of the control activated by the patient.
During the initial stage of the experiments, the apparatus was regulated so as to generate a series of pulses with a voltage of approx. 80 volts, the width of each pulse being selectable between 10 and 90 microseconds, and the frequency being selectable between 1 and 999 pulses a second.
The electrodes at the output of the apparatus were applied to the epidermis at the area to be treated, one to the motor point and the other to the muscle belly.
The tests were performed by effecting treatments of different frequencies ranging from 1 to 420 pulses a second, and different widths, ranging from 10 to 50 microseconds, for a total time of 10 to 15 minutes.
120 patients suffering from orthopaedic disorders whose main component was local ischaemia or inflammation were treated.
The results demonstrated good vascularisation of the tissues, but there was no significant improvement in the inflammation.
The pulses were checked with an oscilloscope, which showed that the pulse in contact with the skin underwent considerable deformation, and the patient developed evident tolerance after only 3 minutes.
During a second series of tests, the machine was set to vary the width of the pulses after each series of pulses applied in the same cycle, in order to prevent tolerance by the patient and deformation of the pulses.
300 patients suffering from orthopaedic disorders complicated by inflammation and ischaemia were treated by applying several series of pulses and increasing the pulse width from time to time during the same treatment.
The results demonstrated that reduction of inflammation and improvement in blood flow were associated with modulation of the neurovegetative nervous system.
A further test was then conducted with 120 patients suffering from orthopaedic disorders associated with inflammation or deficiency of the local microcirculation.
The treatment comprised 12 ten-minute sessions in which electrodes were applied to the epidermis at a distance of approx. 10-15 centimetres apart.
The patient could increase or decrease the voltage of the pulse during stimulation with a remote control.
The variation in intensity of the pulse voluntarily decided on by the patient and the variation in the physiological bioreaction time or muscle relaxation times were observed simultaneously with a double-trace oscilloscope.
These first tests confirmed the inventor's intuition, namely that the application of series of electrical pulses under given voltage, frequency and width conditions could produce the desired results.
The following examples and tables show the results of further, more detailed tests.
With the machine in accordance with the invention, one electrode was applied to the motor point and one to the belly of the trapezius muscle, and pulse trains were sent to the patient for 30 seconds at a voltage of approx. 180 volts, with a frequency of one pulse a second and a width of 10 microseconds.
During the second phase, lasting 5 seconds, the pulses were applied at the frequency of one a second, with a width of 20 microseconds.
As the test continued, the parameters were varied from time to time as indicated in the annexed tables 1a to 1d until the muscle reached spasm, then relaxed and remained in that condition.
As will be seen from the graph in Table 2, after approx. 12 phases of treatment the muscle reached an almost permanent state of relaxation.
This relaxation corresponds to the maximum degree of vascularisation and the maximum anti-inflammatory effect.
The anti-inflammatory treatment programme is shown in Table 3 and the associated Graph 4.
Table 5 and the associated graph 6 show a treatment programme for activation of the microcirculation.
The details set out above demonstrate that the apparatus in accordance with the invention is able to relax the muscles, induce vasodilatation, increase the blood flow and stimulate new vessel production.
The technique is non-invasive because the signal is transmitted transcutaneously through electrodes.
The signals emitted with this new technology are conducted by the sensory and proprioceptive fibres of the autonomic nervous system, and reach the vascular and muscle receptors through which vasodilatation and muscle relaxation is produced; the blood flow is increased and VEGF release is stimulated.
The treatment combats ischaemia and reduces pain. The clinical symptoms of ischaemia, such as claudication due to contraction of the calf, thigh or buttocks and pain at rest, rapidly regress, and the patient walks normally.
Vasodilatation and increased blood flow take place in all parts of the body to which the treatment is applied. The effect is long-lasting; however, its duration depends on the degree of arterial obstruction and the time taken for collateral circulation to develop. Measurements taken with a laser doppler demonstrate significant increases in blood flow in the treated areas.
The efficacy of the treatment is demonstrated by the following example.
12 patients with distal arterial occlusion (7 with occlusion of the tibial artery and 5 with occlusion of the femoral artery) were studied before, during and after stimulation with the new technology.
The VEGF (pg/ml) was assayed at the times shown in FIG. 10.
As will be seen, an increase in VEGF was already evident 2-3 minutes after the start of the stimulus; it peaked after 5 mins (the increase was approx. 50%), and returned to normal after 15 mins.
Further tests confirmed that the best results can be obtained with series of pulses having a width from 10 to 40 μsec. and an intensity from 100 to 170 μAmp., with a peak having a width from 7 to 12 nanosec. and a voltage up to 220 Volts.
The waveform of a pulse of this kind, as displayed by an oscilloscope, is shown in FIGS. 10-12.
These data demonstrate for the first time that the application of the invention is able to increase VEGF, the most potent specific endogenous angiogenic factor identified to date. Increased VEGF production was also accompanied by vasodilatation. By contrast with what happens in laboratory animals subjected to a direct stimulus on the isolated muscle and nerve, this method enables the stimulus to be induced through the skin with electrodes. The time taken to stimulate VEGF is a few minutes, whereas the electrical stimulation used in animals takes days to achieve the same result. In the case of severe stenosis or arterial obstruction, recurrence of the ischaemia symptoms after suspension of the treatment is often due to a deficiency in the development of collateral circulation. In this case the treatment must be continued or an arterial bypass performed, which may be followed by new treatment to ensure complete healing of the tissues.
Maintenance of a high blood flow in the treated tissues increases the trophism of the tissue, prevents necrosis and heals ulcers.
The application of this invention to specific parts of the body rather than directly to the heart induces coronary vasodilatation and increases VEGF production in the coronary sinus.
This effect has been observed in 3 patients who underwent cardiac catheterisation, from whom blood samples were taken at the same time to assay the cardiac VEGF.
The treatment can also be applied to lesions of the spinal column and pain syndromes of the back and neck.
The spinal column, together with the spinal cord, nerve roots, spinal ligaments and paraspinal muscles are the sites of some of the most frequent disorders to which human beings are liable. The cervical and lumbar pain which originates in these structures affects nearly everyone sooner or later. This disorder, together with alcoholism, is one of the major causes of absenteeism.
The most important symptom of lesions of the spinal column and the various structures that compose it is pain, which may be local or muscle-related. Pain is caused by irritation of the nerve ending at the site of the pathological process. Treatment of patients with cervical and back pain is very difficult, and often ineffective. Rest, combined with analgesics, is currently considered to be the best treatment. Physiotherapy is performed with the aim of strengthening the paravertebral muscles to prevent painful relapses. Neck manipulation is potentially dangerous. This invention provides an innovative approach to the treatment of lesions of the spinal column.
As mentioned, this new technology acts through the autonomic nervous system, targeting the structures of the spinal column which are most often affected by painful disorders, such as the ligaments, periosteum and paravertebral muscles, by acting on the muscle spindles, the Golgi tendon organs and the joint proprioceptors. Its action is followed by a reduction in oedema, inflammation and pain.
This treatment has been tested on some 200 patients suffering from cervical or lumbar pain.
Most of the patients felt better within a few days (3-10). 60 of them had a slipped disc; 10 of them had already been operated on for slipped disc but still felt pain. The treatment was effective in 92% of cases. 90% of the patients suffering from slipped disc did not need an operation because the compression or inflammation symptoms of the nerve root were eliminated by the treatment.
The same technology has been tested in other disorders.
For example, the invention has been successfully tested in the treatment of numerous other disorders such as cervical, back, hip, thigh and knee pain, knee instability, Achilles tendinitis, calcaneal spur, metatarsalgia, and shoulder, elbow, wrist and hand disorders.
In conclusion, the new treatment improves the quality of life and reduces one of the most frequent causes of absenteeism.
2. Apparatus for the treatment of vascular and/or muscle and/or tendon disorders as claimed in claim 1.
3. Apparatus as claimed in claim 1, wherein the voltage of the pulses applied is controlled by the patient/user by suitable means.
4. Apparatus as claimed in claim 1, characterised in that it includes a pair of electrodes designed to transmit the said pulses, one of which can be applied to the motor point and the other to the muscle belly in the area to be treated.
5. Apparatus as claimed in claim 1, characterised in that the said means designed to apply the said pulses include devices able to vary the voltage, amplitude and frequency of the said pulses.
6. Apparatus as claimed in claim 1, characterised in that it includes means designed to regulate the amplitude and frequency of the pulses, which said means are activated directly by the patient.
7. Apparatus for the treatment of muscle contraction as claimed in claim 1, characterised in that it includes a pair of electrodes designed to transmit the said pulses, one of which can be applied to the motor point and the other to the muscle belly in the area to be treated.
8. Apparatus for anti-inflammatory treatment as claimed in claim 1, characterised in that it includes an active electrode designed to be applied at the site of inflammation, and a passive electrode external to the said site.
9. Apparatus for the treatment of vascular disorders as claimed in claim 1, characterised in that it includes an active electrode designed to be applied upstream of the occlusion and a passive electrode designed to be applied downstream thereof.
10. Apparatus for the activation of the microcirculation as claimed in claim 1, characterised in that it includes an active electrode designed to be applied to the ischaemic site and a passive electrode designed to be applied close to the venous plexus.
11. Apparatus as claimed in claim 1, characterised in that it includes means designed to vary the voltage of the pulses applied, with variable increments between 0.47 V and 0.63 V for each step of an up/down circuit which allows the user to select an increased or reduced voltage.
12. Apparatus as claimed in claim 1, characterised in that it includes means designed to vary the number of pulses applied between 1 and 420 pulses/second.
13. Apparatus as claimed in claim 1, characterized in that it includes means designed to vary the width of the pulses between 10 and 50 μsec.
15. A method according to claim 14 wherein the pulses are modified according to preset treatment programs correlating the detected bioreaction to the time, frequency and width of the electrical pulses.
17. A method according to claim 16 wherein the patient is affected by a combination of vasculopathy and neuropathy.
18. A method according to claim 17 wherein the patient is affected by diabetic foot.
ITMO20030019A1 (en) * 2003-01-28 2004-07-29 Lorenz Biotech Spa Apparatus and electrostimulation method and related data carrier.
Guertin et al. 1995 Ankle extensor group I afferents excite extensors throughout the hindlimb during fictive locomotion in the cat.
Garland 1991 Role of small diameter afferents in reflex inhibition during human muscle fatigue.


text:
#include <fb/fbjni.h>
#include <iostream>
#include <yoga/Yoga.h>

using namespace facebook::jni;
using namespace std;

static inline weak_ref<jobject> *YGNodeJobject(YGNodeRef node) {
  return reinterpret_cast<weak_ref<jobject> *>(YGNodeGetContext(node));
}

static void YGTransferLayoutDirection(YGNodeRef node, alias_ref<jobject> javaNode) {
  static auto layoutDirectionField = javaNode->getClass()->getField<jint>("mLayoutDirection");
  javaNode->setFieldValue(layoutDirectionField, static_cast<jint>(YGNodeLayoutGetDirection(node)));
}

static void YGTransferLayoutOutputsRecursive(YGNodeRef root) {
  if (auto obj = YGNodeJobject(root)->lockLocal()) {
    static auto widthField = obj->getClass()->getField<jfloat>("mWidth");
    static auto heightField = obj->getClass()->getField<jfloat>("mHeight");
    static auto leftField = obj->getClass()->getField<jfloat>("mLeft");
    static auto topField = obj->getClass()->getField<jfloat>("mTop");

    static auto marginLeftField = obj->getClass()->getField<jfloat>("mMarginLeft");
    static auto marginTopField = obj->getClass()->getField<jfloat>("mMarginTop");
    static auto marginRightField = obj->getClass()->getField<jfloat>("mMarginRight");
    static auto marginBottomField = obj->getClass()->getField<jfloat>("mMarginBottom");

    static auto paddingLeftField = obj->getClass()->getField<jfloat>("mPaddingLeft");
    static auto paddingTopField = obj->getClass()->getField<jfloat>("mPaddingTop");
    static auto paddingRightField = obj->getClass()->getField<jfloat>("mPaddingRight");
    static auto paddingBottomField = obj->getClass()->getField<jfloat>("mPaddingBottom");

    static auto borderLeftField = obj->getClass()->getField<jfloat>("mBorderLeft");
    static auto borderTopField = obj->getClass()->getField<jfloat>("mBorderTop");
    static auto borderRightField = obj->getClass()->getField<jfloat>("mBorderRight");
    static auto borderBottomField = obj->getClass()->getField<jfloat>("mBorderBottom");

    obj->setFieldValue(widthField, YGNodeLayoutGetWidth(root));
    obj->setFieldValue(heightField, YGNodeLayoutGetHeight(root));
    obj->setFieldValue(leftField, YGNodeLayoutGetLeft(root));
    obj->setFieldValue(topField, YGNodeLayoutGetTop(root));

    obj->setFieldValue(marginLeftField, YGNodeLayoutGetMargin(root, YGEdgeLeft));
    obj->setFieldValue(marginTopField, YGNodeLayoutGetMargin(root, YGEdgeTop));
    obj->setFieldValue(marginRightField, YGNodeLayoutGetMargin(root, YGEdgeRight));
    obj->setFieldValue(marginBottomField, YGNodeLayoutGetMargin(root, YGEdgeBottom));

    obj->setFieldValue(paddingLeftField, YGNodeLayoutGetPadding(root, YGEdgeLeft));
    obj->setFieldValue(paddingTopField, YGNodeLayoutGetPadding(root, YGEdgeTop));
    obj->setFieldValue(paddingRightField, YGNodeLayoutGetPadding(root, YGEdgeRight));
    obj->setFieldValue(paddingBottomField, YGNodeLayoutGetPadding(root, YGEdgeBottom));

    obj->setFieldValue(borderLeftField, YGNodeLayoutGetBorder(root, YGEdgeLeft));
    obj->setFieldValue(borderTopField, YGNodeLayoutGetBorder(root, YGEdgeTop));
    obj->setFieldValue(borderRightField, YGNodeLayoutGetBorder(root, YGEdgeRight));
    obj->setFieldValue(borderBottomField, YGNodeLayoutGetBorder(root, YGEdgeBottom));

    YGTransferLayoutDirection(root, obj);

    for (uint32_t i = 0; i < YGNodeGetChildCount(root); i++) {
      YGTransferLayoutOutputsRecursive(YGNodeGetChild(root, i));
    }
  } else {
    YGLog(YGLogLevelError, "Java YGNode was GCed during layout calculation\n");
  }
}

static void YGPrint(YGNodeRef node) {
  if (auto obj = YGNodeJobject(node)->lockLocal()) {
    cout << obj->toString() << endl;
  } else {
    YGLog(YGLogLevelError, "Java YGNode was GCed during layout calculation\n");
  }
}

static float YGJNIBaselineFunc(YGNodeRef node, float width, float height) {
  if (auto obj = YGNodeJobject(node)->lockLocal()) {
    static auto baselineFunc = findClassStatic("com/facebook/yoga/YogaNode")
                                   ->getMethod<jfloat(jfloat, jfloat)>("baseline");
    return baselineFunc(obj, width, height);
  } else {
    return height;
  }
}

static YGSize YGJNIMeasureFunc(YGNodeRef node,
                               float width,
                               YGMeasureMode widthMode,
                               float height,
                               YGMeasureMode heightMode) {
  if (auto obj = YGNodeJobject(node)->lockLocal()) {
    static auto measureFunc = findClassStatic("com/facebook/yoga/YogaNode")
                                  ->getMethod<jlong(jfloat, jint, jfloat, jint)>("measure");

    YGTransferLayoutDirection(node, obj);
    const auto measureResult = measureFunc(obj, width, widthMode, height, heightMode);

    static_assert(sizeof(measureResult) == 8,
                  "Expected measureResult to be 8 bytes, or two 32 bit ints");

    int32_t wBits = 0xFFFFFFFF & (measureResult >> 32);
    int32_t hBits = 0xFFFFFFFF & measureResult;

    const float *measuredWidth = reinterpret_cast<float *>(&wBits);
    const float *measuredHeight = reinterpret_cast<float *>(&hBits);

    return YGSize{*measuredWidth, *measuredHeight};
  } else {
    YGLog(YGLogLevelError, "Java YGNode was GCed during layout calculation\n");
    return YGSize{
        widthMode == YGMeasureModeUndefined ? 0 : width,
        heightMode == YGMeasureModeUndefined ? 0 : height,
    };
  }
}

struct JYogaLogLevel : public JavaClass<JYogaLogLevel> {
  static constexpr auto kJavaDescriptor = "Lcom/facebook/yoga/YogaLogLevel;";
};

static global_ref<jobject> *jLogger;
static int YGLog(YGLogLevel level, const char *format, va_list args) {
  char buffer[256];
  int result = vsnprintf(buffer, sizeof(buffer), format, args);

  static auto logFunc = findClassStatic("com/facebook/yoga/YogaLogger")
                            ->getMethod<void(local_ref<JYogaLogLevel>, jstring)>("log");

  static auto logLevelFromInt =
      JYogaLogLevel::javaClassStatic()->getStaticMethod<JYogaLogLevel::javaobject(jint)>("fromInt");

  logFunc(jLogger->get(),
          logLevelFromInt(JYogaLogLevel::javaClassStatic(), static_cast<jint>(level)),
          Environment::current()->NewStringUTF(buffer));

  return result;
}

static inline YGNodeRef _jlong2YGNodeRef(jlong addr) {
  return reinterpret_cast<YGNodeRef>(static_cast<intptr_t>(addr));
}

static inline YGConfigRef _jlong2YGConfigRef(jlong addr) {
  return reinterpret_cast<YGConfigRef>(static_cast<intptr_t>(addr));
}

void jni_YGSetLogger(alias_ref<jclass> clazz, alias_ref<jobject> logger) {
  if (jLogger) {
    jLogger->releaseAlias();
    delete jLogger;
  }

  if (logger) {
    jLogger = new global_ref<jobject>(make_global(logger));
    YGSetLogger(YGLog);
  } else {
    jLogger = NULL;
    YGSetLogger(NULL);
  }
}

void jni_YGLog(alias_ref<jclass> clazz, jint level, jstring message) {
  const char *nMessage = Environment::current()->GetStringUTFChars(message, 0);
  YGLog(static_cast<YGLogLevel>(level), "%s", nMessage);
  Environment::current()->ReleaseStringUTFChars(message, nMessage);
}

jlong jni_YGNodeNew(alias_ref<jobject> thiz) {
  const YGNodeRef node = YGNodeNew();
  YGNodeSetContext(node, new weak_ref<jobject>(make_weak(thiz)));
  YGNodeSetPrintFunc(node, YGPrint);
  return reinterpret_cast<jlong>(node);
}

jlong jni_YGNodeNewWithConfig(alias_ref<jobject> thiz, jlong configPointer) {
  const YGNodeRef node = YGNodeNewWithConfig(_jlong2YGConfigRef(configPointer));
  YGNodeSetContext(node, new weak_ref<jobject>(make_weak(thiz)));
  YGNodeSetPrintFunc(node, YGPrint);
  return reinterpret_cast<jlong>(node);
}

void jni_YGNodeFree(alias_ref<jobject> thiz, jlong nativePointer) {
  const YGNodeRef node = _jlong2YGNodeRef(nativePointer);
  delete YGNodeJobject(node);
  YGNodeFree(node);
}

void jni_YGNodeReset(alias_ref<jobject> thiz, jlong nativePointer) {
  const YGNodeRef node = _jlong2YGNodeRef(nativePointer);
  void *context = YGNodeGetContext(node);
  YGNodeReset(node);
  YGNodeSetContext(node, context);
  YGNodeSetPrintFunc(node, YGPrint);
}

void jni_YGNodeInsertChild(alias_ref<jobject>, jlong nativePointer, jlong childPointer, jint index) {
  YGNodeInsertChild(_jlong2YGNodeRef(nativePointer), _jlong2YGNodeRef(childPointer), index);
}

void jni_YGNodeRemoveChild(alias_ref<jobject>, jlong nativePointer, jlong childPointer) {
  YGNodeRemoveChild(_jlong2YGNodeRef(nativePointer), _jlong2YGNodeRef(childPointer));
}

void jni_YGNodeCalculateLayout(alias_ref<jobject>,
                               jlong nativePointer,
                               jfloat width,
                               jfloat height) {
  const YGNodeRef root = _jlong2YGNodeRef(nativePointer);
  YGNodeCalculateLayout(root,
                        static_cast<float>(width),
                        static_cast<float>(height),
                        YGNodeStyleGetDirection(_jlong2YGNodeRef(nativePointer)));
  YGTransferLayoutOutputsRecursive(root);
}

void jni_YGNodeMarkDirty(alias_ref<jobject>, jlong nativePointer) {
  YGNodeMarkDirty(_jlong2YGNodeRef(nativePointer));
}

jboolean jni_YGNodeIsDirty(alias_ref<jobject>, jlong nativePointer) {
  return (jboolean) YGNodeIsDirty(_jlong2YGNodeRef(nativePointer));
}

void jni_YGNodeSetHasMeasureFunc(alias_ref<jobject>, jlong nativePointer, jboolean hasMeasureFunc) {
  YGNodeSetMeasureFunc(_jlong2YGNodeRef(nativePointer), hasMeasureFunc ? YGJNIMeasureFunc : NULL);
}

void jni_YGNodeSetHasBaselineFunc(alias_ref<jobject>,
                                  jlong nativePointer,
                                  jboolean hasBaselineFunc) {
  YGNodeSetBaselineFunc(_jlong2YGNodeRef(nativePointer),
                        hasBaselineFunc ? YGJNIBaselineFunc : NULL);
}

jboolean jni_YGNodeHasNewLayout(alias_ref<jobject>, jlong nativePointer) {
  return (jboolean) YGNodeGetHasNewLayout(_jlong2YGNodeRef(nativePointer));
}

void jni_YGNodeMarkLayoutSeen(alias_ref<jobject>, jlong nativePointer) {
  YGNodeSetHasNewLayout(_jlong2YGNodeRef(nativePointer), false);
}

void jni_YGNodeCopyStyle(alias_ref<jobject>, jlong dstNativePointer, jlong srcNativePointer) {
  YGNodeCopyStyle(_jlong2YGNodeRef(dstNativePointer), _jlong2YGNodeRef(srcNativePointer));
}

struct JYogaValue : public JavaClass<JYogaValue> {
  constexpr static auto kJavaDescriptor = "Lcom/facebook/yoga/YogaValue;";

  static local_ref<javaobject> create(YGValue value) {
    return newInstance(value.value, static_cast<int>(value.unit));
  }
};

#define YG_NODE_JNI_STYLE_PROP(javatype, type, name)                                       \
  javatype jni_YGNodeStyleGet##name(alias_ref<jobject>, jlong nativePointer) {             \
    return (javatype) YGNodeStyleGet##name(_jlong2YGNodeRef(nativePointer));               \
  }                                                                                \
                                                                                \
  void jni_YGNodeStyleSet##name(alias_ref<jobject>, jlong nativePointer, javatype value) { \
    YGNodeStyleSet##name(_jlong2YGNodeRef(nativePointer), static_cast<type>(value));       \
  }

#define YG_NODE_JNI_STYLE_UNIT_PROP(name)                                                         \
  local_ref<jobject> jni_YGNodeStyleGet##name(alias_ref<jobject>, jlong nativePointer) {          \
    return JYogaValue::create(YGNodeStyleGet##name(_jlong2YGNodeRef(nativePointer)));             \
  }                                                                                \
                                                                                \
  void jni_YGNodeStyleSet##name(alias_ref<jobject>, jlong nativePointer, jfloat value) {          \
    YGNodeStyleSet##name(_jlong2YGNodeRef(nativePointer), static_cast<float>(value));             \
  }                                                                                \
                                                                                \
  void jni_YGNodeStyleSet##name##Percent(alias_ref<jobject>, jlong nativePointer, jfloat value) { \
    YGNodeStyleSet##name##Percent(_jlong2YGNodeRef(nativePointer), static_cast<float>(value));    \
  }

#define YG_NODE_JNI_STYLE_UNIT_PROP_AUTO(name)                                   \
  YG_NODE_JNI_STYLE_UNIT_PROP(name)                                              \
  void jni_YGNodeStyleSet##name##Auto(alias_ref<jobject>, jlong nativePointer) { \
    YGNodeStyleSet##name##Auto(_jlong2YGNodeRef(nativePointer));                 \
  }

#define YG_NODE_JNI_STYLE_EDGE_PROP(javatype, type, name)                                 \
  javatype jni_YGNodeStyleGet##name(alias_ref<jobject>, jlong nativePointer, jint edge) { \
    return (javatype) YGNodeStyleGet##name(_jlong2YGNodeRef(nativePointer),               \
                                           static_cast<YGEdge>(edge));                    \
  }                                                                                \
                                                                                \
  void jni_YGNodeStyleSet##name(alias_ref<jobject>,                                       \
                                jlong nativePointer,                                      \
                                jint edge,                                                \
                                javatype value) {                                         \
    YGNodeStyleSet##name(_jlong2YGNodeRef(nativePointer),                                 \
                         static_cast<YGEdge>(edge),                                       \
                         static_cast<type>(value));                                       \
  }

#define YG_NODE_JNI_STYLE_EDGE_UNIT_PROP(name)                                                      \
  local_ref<jobject> jni_YGNodeStyleGet##name(alias_ref<jobject>,                                   \
                                              jlong nativePointer,                                  \
                                              jint edge) {                                          \
    return JYogaValue::create(                                                                      \
        YGNodeStyleGet##name(_jlong2YGNodeRef(nativePointer), static_cast<YGEdge>(edge)));          \
  }                                                                                \
                                                                                \
  void jni_YGNodeStyleSet##name(alias_ref<jobject>, jlong nativePointer, jint edge, jfloat value) { \
    YGNodeStyleSet##name(_jlong2YGNodeRef(nativePointer),                                           \
                         static_cast<YGEdge>(edge),                                                 \
                         static_cast<float>(value));                                                \
  }                                                                                \
                                                                                \
  void jni_YGNodeStyleSet##name##Percent(alias_ref<jobject>,                                        \
                                         jlong nativePointer,                                       \
                                         jint edge,                                                 \
                                         jfloat value) {                                            \
    YGNodeStyleSet##name##Percent(_jlong2YGNodeRef(nativePointer),                                  \
                                  static_cast<YGEdge>(edge),                                        \
                                  static_cast<float>(value));                                       \
  }

#define YG_NODE_JNI_STYLE_EDGE_UNIT_PROP_AUTO(name)                                         \
  YG_NODE_JNI_STYLE_EDGE_UNIT_PROP(name)                                                    \
  void jni_YGNodeStyleSet##name##Auto(alias_ref<jobject>, jlong nativePointer, jint edge) { \
    YGNodeStyleSet##name##Auto(_jlong2YGNodeRef(nativePointer), static_cast<YGEdge>(edge)); \
  }

YG_NODE_JNI_STYLE_PROP(jint, YGDirection, Direction);
YG_NODE_JNI_STYLE_PROP(jint, YGFlexDirection, FlexDirection);
YG_NODE_JNI_STYLE_PROP(jint, YGJustify, JustifyContent);
YG_NODE_JNI_STYLE_PROP(jint, YGAlign, AlignItems);
YG_NODE_JNI_STYLE_PROP(jint, YGAlign, AlignSelf);
YG_NODE_JNI_STYLE_PROP(jint, YGAlign, AlignContent);
YG_NODE_JNI_STYLE_PROP(jint, YGPositionType, PositionType);
YG_NODE_JNI_STYLE_PROP(jint, YGWrap, FlexWrap);
YG_NODE_JNI_STYLE_PROP(jint, YGOverflow, Overflow);
YG_NODE_JNI_STYLE_PROP(jint, YGDisplay, Display);

void jni_YGNodeStyleSetFlex(alias_ref<jobject>, jlong nativePointer, jfloat value) {
  YGNodeStyleSetFlex(_jlong2YGNodeRef(nativePointer), static_cast<float>(value));
}
YG_NODE_JNI_STYLE_PROP(jfloat, float, FlexGrow);
YG_NODE_JNI_STYLE_PROP(jfloat, float, FlexShrink);
YG_NODE_JNI_STYLE_UNIT_PROP_AUTO(FlexBasis);

YG_NODE_JNI_STYLE_EDGE_UNIT_PROP(Position);
YG_NODE_JNI_STYLE_EDGE_UNIT_PROP_AUTO(Margin);
YG_NODE_JNI_STYLE_EDGE_UNIT_PROP(Padding);
YG_NODE_JNI_STYLE_EDGE_PROP(jfloat, float, Border);

YG_NODE_JNI_STYLE_UNIT_PROP_AUTO(Width);
YG_NODE_JNI_STYLE_UNIT_PROP(MinWidth);
YG_NODE_JNI_STYLE_UNIT_PROP(MaxWidth);
YG_NODE_JNI_STYLE_UNIT_PROP_AUTO(Height);
YG_NODE_JNI_STYLE_UNIT_PROP(MinHeight);
YG_NODE_JNI_STYLE_UNIT_PROP(MaxHeight);

// Yoga specific properties, not compatible with flexbox specification
YG_NODE_JNI_STYLE_PROP(jfloat, float, AspectRatio);

jlong jni_YGConfigNew(alias_ref<jobject>) {
  return reinterpret_cast<jlong>(YGConfigNew());
}

void jni_YGConfigFree(alias_ref<jobject>, jlong nativePointer) {
  const YGConfigRef config = _jlong2YGConfigRef(nativePointer);
  YGConfigFree(config);
}

void jni_YGConfigSetExperimentalFeatureEnabled(alias_ref<jobject>, jlong nativePointer, jint feature, jboolean enabled) {
  const YGConfigRef config = _jlong2YGConfigRef(nativePointer);
  YGConfigSetExperimentalFeatureEnabled(config, static_cast<YGExperimentalFeature>(feature), enabled);
}

jint jni_YGNodeGetInstanceCount(alias_ref<jclass> clazz) {
  return YGNodeGetInstanceCount();
}

#define YGMakeNativeMethod(name) makeNativeMethod(#name, name)

jint JNI_OnLoad(JavaVM *vm, void *) {
  return initialize(vm, [] {
    registerNatives("com/facebook/yoga/YogaNode",
                    {
                        YGMakeNativeMethod(jni_YGNodeNew),
                        YGMakeNativeMethod(jni_YGNodeNewWithConfig),
                        YGMakeNativeMethod(jni_YGNodeFree),
                        YGMakeNativeMethod(jni_YGNodeReset),
                        YGMakeNativeMethod(jni_YGNodeInsertChild),
                        YGMakeNativeMethod(jni_YGNodeRemoveChild),
                        YGMakeNativeMethod(jni_YGNodeCalculateLayout),
                        YGMakeNativeMethod(jni_YGNodeHasNewLayout),
                        YGMakeNativeMethod(jni_YGNodeMarkDirty),
                        YGMakeNativeMethod(jni_YGNodeIsDirty),
                        YGMakeNativeMethod(jni_YGNodeMarkLayoutSeen),
                        YGMakeNativeMethod(jni_YGNodeSetHasMeasureFunc),
                        YGMakeNativeMethod(jni_YGNodeSetHasBaselineFunc),
                        YGMakeNativeMethod(jni_YGNodeCopyStyle),
                        YGMakeNativeMethod(jni_YGNodeStyleGetDirection),
                        YGMakeNativeMethod(jni_YGNodeStyleSetDirection),
                        YGMakeNativeMethod(jni_YGNodeStyleGetFlexDirection),
                        YGMakeNativeMethod(jni_YGNodeStyleSetFlexDirection),
                        YGMakeNativeMethod(jni_YGNodeStyleGetJustifyContent),
                        YGMakeNativeMethod(jni_YGNodeStyleSetJustifyContent),
                        YGMakeNativeMethod(jni_YGNodeStyleGetAlignItems),
                        YGMakeNativeMethod(jni_YGNodeStyleSetAlignItems),
                        YGMakeNativeMethod(jni_YGNodeStyleGetAlignSelf),
                        YGMakeNativeMethod(jni_YGNodeStyleSetAlignSelf),
                        YGMakeNativeMethod(jni_YGNodeStyleGetAlignContent),
                        YGMakeNativeMethod(jni_YGNodeStyleSetAlignContent),
                        YGMakeNativeMethod(jni_YGNodeStyleGetPositionType),
                        YGMakeNativeMethod(jni_YGNodeStyleSetPositionType),
                        YGMakeNativeMethod(jni_YGNodeStyleSetFlexWrap),
                        YGMakeNativeMethod(jni_YGNodeStyleGetOverflow),
                        YGMakeNativeMethod(jni_YGNodeStyleSetOverflow),
                        YGMakeNativeMethod(jni_YGNodeStyleGetDisplay),
                        YGMakeNativeMethod(jni_YGNodeStyleSetDisplay),
                        YGMakeNativeMethod(jni_YGNodeStyleSetFlex),
                        YGMakeNativeMethod(jni_YGNodeStyleGetFlexGrow),
                        YGMakeNativeMethod(jni_YGNodeStyleSetFlexGrow),
                        YGMakeNativeMethod(jni_YGNodeStyleGetFlexShrink),
                        YGMakeNativeMethod(jni_YGNodeStyleSetFlexShrink),
                        YGMakeNativeMethod(jni_YGNodeStyleGetFlexBasis),
                        YGMakeNativeMethod(jni_YGNodeStyleSetFlexBasis),
                        YGMakeNativeMethod(jni_YGNodeStyleSetFlexBasisPercent),
                        YGMakeNativeMethod(jni_YGNodeStyleSetFlexBasisAuto),
                        YGMakeNativeMethod(jni_YGNodeStyleGetMargin),
                        YGMakeNativeMethod(jni_YGNodeStyleSetMargin),
                        YGMakeNativeMethod(jni_YGNodeStyleSetMarginPercent),
                        YGMakeNativeMethod(jni_YGNodeStyleSetMarginAuto),
                        YGMakeNativeMethod(jni_YGNodeStyleGetPadding),
                        YGMakeNativeMethod(jni_YGNodeStyleSetPadding),
                        YGMakeNativeMethod(jni_YGNodeStyleSetPaddingPercent),
                        YGMakeNativeMethod(jni_YGNodeStyleGetBorder),
                        YGMakeNativeMethod(jni_YGNodeStyleSetBorder),
                        YGMakeNativeMethod(jni_YGNodeStyleGetPosition),
                        YGMakeNativeMethod(jni_YGNodeStyleSetPosition),
                        YGMakeNativeMethod(jni_YGNodeStyleSetPositionPercent),
                        YGMakeNativeMethod(jni_YGNodeStyleGetWidth),
                        YGMakeNativeMethod(jni_YGNodeStyleSetWidth),
                        YGMakeNativeMethod(jni_YGNodeStyleSetWidthPercent),
                        YGMakeNativeMethod(jni_YGNodeStyleSetWidthAuto),
                        YGMakeNativeMethod(jni_YGNodeStyleGetHeight),
                        YGMakeNativeMethod(jni_YGNodeStyleSetHeight),
                        YGMakeNativeMethod(jni_YGNodeStyleSetHeightPercent),
                        YGMakeNativeMethod(jni_YGNodeStyleSetHeightAuto),
                        YGMakeNativeMethod(jni_YGNodeStyleGetMinWidth),
                        YGMakeNativeMethod(jni_YGNodeStyleSetMinWidth),
                        YGMakeNativeMethod(jni_YGNodeStyleSetMinWidthPercent),
                        YGMakeNativeMethod(jni_YGNodeStyleGetMinHeight),
                        YGMakeNativeMethod(jni_YGNodeStyleSetMinHeight),
                        YGMakeNativeMethod(jni_YGNodeStyleSetMinHeightPercent),
                        YGMakeNativeMethod(jni_YGNodeStyleGetMaxWidth),
                        YGMakeNativeMethod(jni_YGNodeStyleSetMaxWidth),
                        YGMakeNativeMethod(jni_YGNodeStyleSetMaxWidthPercent),
                        YGMakeNativeMethod(jni_YGNodeStyleGetMaxHeight),
                        YGMakeNativeMethod(jni_YGNodeStyleSetMaxHeight),
                        YGMakeNativeMethod(jni_YGNodeStyleSetMaxHeightPercent),
                        YGMakeNativeMethod(jni_YGNodeStyleGetAspectRatio),
                        YGMakeNativeMethod(jni_YGNodeStyleSetAspectRatio),
                        YGMakeNativeMethod(jni_YGNodeGetInstanceCount),
                        YGMakeNativeMethod(jni_YGSetLogger),
                        YGMakeNativeMethod(jni_YGLog),
                    });
    registerNatives("com/facebook/yoga/YogaConfig",
                    {
                        YGMakeNativeMethod(jni_YGConfigNew),
                        YGMakeNativeMethod(jni_YGConfigFree),
                        YGMakeNativeMethod(jni_YGConfigSetExperimentalFeatureEnabled),
                    });
  });
}

redpajama_set_name: RedPajamaGithub


text:
An American Soldier's Journey Home
I was commissioned by the Library of Congress' Veteran History Project, to adapt the diary of Irving Greenwald into a play. Greenwald, a soldier from World War I, was part of the Lost Battalion. The Project was to commemorate the ending of the First World War, and when the Armistice was signed in 1918. I performed the play at the Library of Congress twice, on Veterans Day and Memorial's Day 2017.
"Taurel vividly conveyed the intensity and terror of trench warfare, the jubilation of the troops following the Armistice, and Greenwald's love for his family, particularly his wife, Leah. Taurel's performance was a moving demonstration of what can happen when families choose to give materials to VHP."
— Megan Harris, Veteran History Project, The Library of Congress
Irving Greenwald's Diary
Greenwald, who served with the 308th Infantry Regiment during World War I, kept a detailed diary that is the centerpiece of the collection at the Library of Congress and of the play. The content of the diary is breathtaking. Greenwald wrote his entries in the tiniest of handwriting, eloquently relating his experiences in training, in combat, and in the hospital after he was wounded in October 1918. The diary was transcribed by his daughter and sister in the late 1930's.
Read the blog post by the Library of Congress regarding the diary and the play.
Library Of Congress Blog Post
See Echoes of the Great War
Meuse-Argonne
Irving Greenwald
He was a Hungarian Jew, who grew up on the upper east side of New York. Drafting into the United States Army in December of 1917. He fought in the Argonne Forest and was in E Compnay of the 308, part of the 77th Division. Famously knows as the Lost Battalion. The bloodiest, and most costly engagement in the First World War for our Doughboys.
Cut from their regiment for six days, and surrounded by Germans, and enduring intense fighting bombing in the Argonne Forest of France. Roughly 197 were killed in action and approximately 150 missing or taken prisoner before the 194 remaining men were rescued. Food was scarce and water was available only by crawling, under fire, to a nearby stream. Ammunition ran low and they were even bombarded by shells from their own artillery. In an infamous incident on 4th of October, inaccurate coordinates were delivered by one of the pigeons and the unit was subjected to friendly fire. The unit was saved by another pigeon, Cher Ami, delivering the following message,
"WE ARE ALONG THE ROAD PARALLEL 276.4, OUR ARTILLERY IS DROPPING A BARRAGE DIRECTLY ON US. FOR HEAVENS SAKE STOP IT!"
See his official documents at the Veteran History Project's Website.
His Official Documents
"I stand with bated breath waiting for the explosion of the shell. I imagine the toll of injury and death it takes. The cost of it. The futility of it. The war will never be won on the field of battle. Why not end it all and spare men and women. "
— Irving Greenwald
Hoboken Museum Performance 2018
Audience reactions after my performance at the Library of Congress on Veteran Day
Audience reactions after my performance at the Library of Congress on Memorial Day
How I Created of the Play
Read my process in how I created the play with a color coding system, and see images of a few of my notes during early drafts.
The play is 85% of the diary of Private Irving Greenwald exact words, I took 465 days of his diary entries and condense them into a moving and thought provoking 60 minute play. From entrance into the service, his experiences in France, the intensity and terror of trench warfare, the jubilation of the Armistice and coming home, and his incredible love for his wife, Leah and soon to be born child, Cecile.
How I created the play
Images from Library of Congress performance
Hoboken Museum, Veterans Day
On November 11th, Veterans Day 2018 marked 100 years when the last shot was fired on November 11th, 1918 at the 11th hour. My home town of Hoboken, New Jersey gave me the honor to perform my World War I play to honor and remember the First World War. I was also honored to meet more of Irving Greenwald's beautiful family members , his grandson and his niece. I can't express the honor to read this mans diary, his experiences during the war and then to meet his family. It truly is a blessing that I will never forget as an honest.
Hoboken had approximately two million American servicemen passed through Hoboken between the spring of 1917 and the fall of 1918 when the United States entered the war. "Heaven, Hell or Hoboken" became the national rallying cry for all the boys that they be home by Christmas of 1917. However, the war actually did not end until November 11th of 1918.
Veterans Day is honored on November 11th because it marks the end of the Great War, and this Veterans Day will be mark 100 years when the last shot was fired on November 11th, 1918 at the 11th hour. My home town of Hoboken, New Jersey was the port that nearly all the soldiers would pass through both on their way to fight, and home from, the Great War. "The war to end all wars", as it was coined when WWI started in 1914. Approximately two million American servicemen passed through Hoboken between the spring of 1917 and the fall of 1918 when the United States entered the war. "Heaven, Hell or Hoboken" became the national rallying cry for all the boys that they be home by Christmas of 1917. However, the war actually did not end until November 11th of 1918.
I took these images to help remember the spirit of the boys is still with us, and I believe still roaming the cobblestone streets of Hoboken. The photos were shot in some of the oldest parts of Hoboken that existed back in 1918. They were taken at the train station, the ferry terminal and in the alleys to help us imagine how it must have looked, and how it felt a hundred years ago as hese brave boys were getting ready to ship off, some to never come back home. My hope is that these photos help us all imagine the courage it must have taken these brave young men to leave home and fight in the First World War.
Photos were taken by Helen McGuire Photographie
Banner Image of An American Soldier's Journey Home
World War I Diary of Irving Greenwald
An American Soldier's Journey Home Gallery
Hoboken Museum
World War I Hoboken Images

redpajama_set_name: RedPajamaCommonCrawl


Buying vacation real estate brings the opportunity to both increase your quality of life and enjoyment while doubling as a secure investment.
Be the first to receive information on new development launches, promotions, new listings, and unique opportunities that arise from highly motivated sellers.
Find out first hand how to buy real estate at the right price in order to achieve long term appreciation. Learn how to buy property that will cash flow yearly from rental income.
Register below and Own Mexico will send you real estate updates and guide you through the process to ensure that you win both in the short and long term.
new hotel chains such as Secrets, La Isla Natura, Riu, El Dorado and Melia with an expectation of 2000 new rooms in the next 2 years.
These recent infrastructure investments compliment initial investments such as wide roadways lined with palm tree filled medians, 2 marinas, filtered drinking water, sewage treatment and reuse systems and wind power, making it the cleanest sun destination in Mexico.
Capitalize on low oceanfront real estate prices alongside massive infrastructure injections making it the right time to invest in this top emerging market.
Huatulco is know for its ideal climate and lifestyle. The area boasts 340 days of sunshine. 36 golden sand beaches. 9 unique bays. Warm, tropical Pacific waters. Mountains, valleys, coves and fresh water lagoons.


Intricate polygonal drawing of the tallest mountain in Washington State and the most prominent peak in the lower 48.
An active volcano, Mt. Rainier is an icon in the state and awe-inspiring for locals and visitors alike.


text:
Northwestern College Recognizes Two with Inspirational Service Awards
Vonda Post and Janette Reuter are the recipients of Northwestern College's 2019 inspirational service awards. Post was chosen as the faculty recipient, while Reuter received the staff award.
Both awards recognize employees who go beyond excellence in their performance, have demonstrated a selfless commitment to service, and whose dedication to Christ is apparent in their daily work and interactions. A selection committee composed of faculty and staff chose the winners from among candidates nominated by Northwestern employees.
Post, a Northwestern College graduate, joined her alma mater's faculty 30 years ago and now serves as a professor of business and economics. In nominating her, colleagues noted that she teaches a full load of classes, advises approximately 60 students, and serves as co-chair of the business department. They describe her as patient, gracious, positive, hard-working and supportive.
"She will always carve out time for a colleague or student, no matter what they need," says Ashley Stanislav, the department's faculty assistant. "She puts other people first each and every day and demonstrates the love of Christ through her words and actions."
Ann Minnick, associate professor of communications, agrees. "I observe Vonda working tirelessly with students in individual tutoring sessions in her office," she says. "I can hear her explaining concepts over and over to help students grasp them."
Post's skill as a teacher is praised by former students like Chris Sietstra, now an accountant for Ernst & Young. Sietstra points out that, based on pass rates, financial accounting is the most difficult portion of the CPA exam. "I don't think it is a coincidence this was my highest score," he says. "No one understands and communicates financial accounting principles better than Vonda."
Post's commitment to students and Northwestern find expression in many acts of service. "Vonda is always willing to meet with prospective students and is happy to follow up with them through notes and phone calls," says Stanislav. "Coaches will often reach out to her directly to meet with recruits because they know how well she will represent Northwestern. She understands the importance of the admissions process and regularly goes above and beyond to help bring students here."
Reuter serves as Northwestern's comptroller, having joined the college's staff in 1998. Doug Beukelman, vice president for financial affairs, says she epitomizes one who puts service to others ahead of one's own self-interest. Despite constant interruptions for advice or counsel, she is always gracious and never makes others feel like they are infringing on her time or duties.
"Janette is a great mentor to the people she supervises while also holding them to high standards of performance," Beukelman says. "Her own work ethic inspires others to strive for the same level of customer service."
In his nomination, Beukelman spoke of how Reuter is in demand as a member of numerous working groups on campus. He also cited the important role she plays in the integrity of Northwestern's financial system—work that has earned her the praise of both the college's Board of Trustees and its auditor.
"Our auditor is very complimentary of her efforts in preparation for their work," Beukelman says. "They have described Northwestern College as a model client, and Janette deserves all the credit for that accolade. The continual lack of deficiencies in their audit report is a testament to her ethics and the attention to detail throughout our accounting system."
Deb Wassink, who retired from the business office in February, describes Reuter as "the most detailed person I have known." She also fondly recalls the way Reuter is always willing to listen, maintains an open-door policy, and sacrificially rearranges her own schedule to assist others.
"Janette works in the background, but her work keeps all departments doing business properly—and this is crucial to the well-being of the whole college," Wassink says. "She is serving all of us so very well."
Visit Northwestern Online
A Day of Vibrant Life: Kaleb Jensen Clark receives Northwestern Teaching Excellence Award


To estimate the prevalence of organ dysfunction, subsequent malignant neoplasm (SMN), growth impairment, abnormal pubertal development, and neurobehavioral dysfunction in a large cohort of representative 5-year survivors of high-risk neuroblastoma treated with modern therapy.
To establish a cohort of high-risk neuroblastoma survivors, with stored peripheral blood samples, who were treated with multi-modal therapies since the year 2000 as a resource for future investigation.
If you do not hear from the study team, please call 888-689-8273 and tell them you're interested in study number NCT03057626.


text:
"""
Creates an echo effect an any Sound object.

Uses sndarray and MumPy ( or Numeric) to create offset faded copies of the
original sound. Currently it just uses hardcoded values for the
number of echos and the delay. Easy for you to recreate as
needed. The array packaged used can be specified by an optional
--numpy or --numeric command line option.

version 2. changes:
- Should work with different sample rates now.
- put into a function.
- Uses NumPy by default, but falls back on Numeric.

"""

__author__ = "Pete 'ShredWheat' Shinners, Rene Dudfield"
__copyright__ = "Copyright (C) 2004 Pete Shinners, Copyright (C) 2005 Rene Dudfield"
__license__ = "Public Domain"
__version__ = "2.0"

import os.path
import pygame.mixer, pygame.time, pygame.sndarray, pygame
import pygame.surfarray, pygame.transform
from pygame import sndarray, mixer

from numpy import zeros, int32, int16

import time

#mixer.init(44100, -16, 0)
mixer.init()
#mixer.init(11025, -16, 0)
#mixer.init(11025)

def make_echo(sound, samples_per_second,  mydebug = True):
    """ returns a sound which is echoed of the last one.
    """

    echo_length = 3.5

    a1 = sndarray.array(sound)
    if mydebug:
        print ('SHAPE1: %s' % (a1.shape,))

    length = a1.shape[0]

    #myarr = zeros(length+12000)
    myarr = zeros(a1.shape, int32)

    if len(a1.shape) > 1:
        mult = a1.shape[1]
        size = (a1.shape[0] + int(echo_length * a1.shape[0]), a1.shape[1])
        #size = (a1.shape[0] + int(a1.shape[0] + (echo_length * 3000)), a1.shape[1])
    else:
        mult = 1
        size = (a1.shape[0] + int(echo_length * a1.shape[0]),)
        #size = (a1.shape[0] + int(a1.shape[0] + (echo_length * 3000)),)

    if mydebug:
        print (int(echo_length * a1.shape[0]))
    myarr = zeros(size, int32)

    if mydebug:
        print ("size %s" % (size,))
        print (myarr.shape)
    myarr[:length] = a1
    #print (myarr[3000:length+3000])
    #print (a1 >> 1)
    #print ("a1.shape %s" % (a1.shape,))
    #c = myarr[3000:length+(3000*mult)]
    #print ("c.shape %s" % (c.shape,))

    incr = int(samples_per_second / echo_length)
    gap = length

    myarr[incr:gap+incr] += a1>>1
    myarr[incr*2:gap+(incr*2)] += a1>>2
    myarr[incr*3:gap+(incr*3)] += a1>>3
    myarr[incr*4:gap+(incr*4)] += a1>>4

    if mydebug:
        print ('SHAPE2: %s' % (myarr.shape,))

    sound2 = sndarray.make_sound(myarr.astype(int16))

    return sound2

def slow_down_sound(sound, rate):
    """  returns a sound which is a slowed down version of the original.
           rate - at which the sound should be slowed down.  eg. 0.5 would be half speed.
    """

    raise NotImplementedError()
    grow_rate = 1 / rate

    # make it 1/rate times longer.

    a1 = sndarray.array(sound)

    surf = pygame.surfarray.make_surface(a1)
    print (a1.shape[0] * grow_rate)
    scaled_surf = pygame.transform.scale(surf, (int(a1.shape[0] * grow_rate), a1.shape[1]))
    print (scaled_surf)
    print (surf)

    a2 = a1 * rate
    print (a1.shape)
    print (a2.shape)
    print (a2)
    sound2 = sndarray.make_sound(a2.astype(int16))
    return sound2

def sound_from_pos(sound, start_pos, samples_per_second = None, inplace = 1):
    """  returns a sound which begins at the start_pos.
         start_pos - in seconds from the begining.
         samples_per_second -
    """

    # see if we want to reuse the sound data or not.
    if inplace:
        a1 = pygame.sndarray.samples(sound)
    else:
        a1 = pygame.sndarray.array(sound)

    # see if samples per second has been given.  If not, query the mixer.
    #   eg. it might be set to 22050
    if samples_per_second is None:
        samples_per_second = pygame.mixer.get_init()[0]

    # figure out the start position in terms of samples.
    start_pos_in_samples = int(start_pos * samples_per_second)

    # cut the begining off the sound at the start position.
    a2 = a1[start_pos_in_samples:]

    # make the Sound instance from the array.
    sound2 = pygame.sndarray.make_sound(a2)

    return sound2

def main(arraytype=None):
    """play various sndarray effects

    If arraytype is provided then use that array package. Valid
    values are 'numeric' or 'numpy'. Otherwise default to NumPy,
    or fall back on Numeric if NumPy is not installed.

    """

    main_dir = os.path.split(os.path.abspath(__file__))[0]

    if arraytype not in ('numpy', None):
        raise ValueError('Array type not supported: %r' % arraytype)

    print ("Using %s array package" % sndarray.get_arraytype())
    print ("mixer.get_init %s" % (mixer.get_init(),))
    inited = mixer.get_init()

    samples_per_second = pygame.mixer.get_init()[0]

    print (("-" * 30) + "\n")
    print ("loading sound")
    sound = mixer.Sound(os.path.join(main_dir, 'data', 'car_door.wav'))

    print ("-" * 30)
    print ("start positions")
    print ("-" * 30)

    start_pos = 0.1
    sound2 = sound_from_pos(sound, start_pos, samples_per_second)

    print ("sound.get_length %s" % (sound.get_length(),))
    print ("sound2.get_length %s" % (sound2.get_length(),))
    sound2.play()
    while mixer.get_busy():
        pygame.time.wait(200)

    print ("waiting 2 seconds")
    pygame.time.wait(2000)
    print ("playing original sound")

    sound.play()
    while mixer.get_busy():
        pygame.time.wait(200)

    print ("waiting 2 seconds")
    pygame.time.wait(2000)

    if 0:
        #TODO: this is broken.
        print (("-" * 30) + "\n")
        print ("Slow down the original sound.")
        rate = 0.2
        slowed_sound = slow_down_sound(sound, rate)

        slowed_sound.play()
        while mixer.get_busy():
            pygame.time.wait(200)

    print ("-" * 30)
    print ("echoing")
    print ("-" * 30)

    t1 = time.time()
    sound2 = make_echo(sound, samples_per_second)
    print ("time to make echo %i" % (time.time() - t1,))

    print ("original sound")
    sound.play()
    while mixer.get_busy():
        pygame.time.wait(200)

    print ("echoed sound")
    sound2.play()
    while mixer.get_busy():
        pygame.time.wait(200)

    sound = mixer.Sound(os.path.join(main_dir, 'data', 'secosmic_lo.wav'))

    t1 = time.time()
    sound3 = make_echo(sound, samples_per_second)
    print ("time to make echo %i" % (time.time() - t1,))

    print ("original sound")
    sound.play()
    while mixer.get_busy():
        pygame.time.wait(200)

    print ("echoed sound")
    sound3.play()
    while mixer.get_busy():
        pygame.time.wait(200)

if __name__ == '__main__':
    main()


세비지 벨트는 이태리 베라펠레 협회에서 인증받은 100% 베지터블 가죽만을 사용합니다. 손바닥 무늬는 이태리의 20여개의 테너리들이 모여 만든 협회의 인증마크를 의미합니다.
SAVAGE belts are made of 100% Italian genuine leather, which is certified by Vera Pelle Conciata al Vegetale.


The Altar Server ministry at Saint John Vianney is a community of blessed youth and parents who have been called by the lord to serve at the weekly masses; to assist the priests of our parish, serve the liturgy of holy mass and evangelize through our prayerfulness.
To become an Altar Server, your child must have already received his/her First Communion. If your child is interested in becoming an Altar Server or if you would simply like more information, please use the contact form below. The Altar Server Coordinator will contact you.